CMPUT 174 - Introduction to the Foundations of Computation I


This two course sequence is a small introduction to the foundations of a major part of Computing Science: expressing problems precisely, solving them algorithmically by showing how to construct a solution, and then implementing that solution by writing a program.

Our emphasis will be more on computation than on programming. That is, we are going to be more interested in the underlying process behind the solution and less interested in a particular programming language or programming style for implementing the solutions. In fact, our goal is to develop your intuitions for a variety of complementary styles of computation.

Our approach in this course is problem-driven. We will take a problem and attempt to solve it. In the process of developing an algorithmic solution we will introduce key computing concepts. Our intention is that every abstract concept should be grounded in concrete examples.


  • Think about problems in a different way in order to solve them computationally
  • Understand the kinds of computation
  • Deduce if a computation is impossible
  • Understand your computations so that you can verify they are doing what you intend them to do
  • Learn good ways to structure computations so that others can understand them
  • Learn ways to specify and organize computations so that machines can perform them
  • Understand how to build the machines that make computation possible
  • Learn how to apply computing ideas to other areas of human activity

Course Work

  • Assignments
  • Labs
  • Midterm
  • Final Exam

MOOC Hybrid Sections

General Information

The special hybrid sections of CMPUT 174 (ie. Fall F1, F2 and Winter P1, P2) span only 4 instructional weeks, rather than the usual 13 instructional weeks (ie. sections A1 to A6). They are a new way to get ★3 credits for CMPUT 174 in less time, with only 4 weeks on campus in a classroom or lab environment.

  • First 9 weeks: University of Alberta massive open online course (MOOC) on the Coursera platform, called "Problem Solving, Programming, and Video Games" (PVG).
    • Before attending a hybrid section, you will need to have fully completed the PVG MOOC yourself.
  • Last 4 weeks: In class (hybrid section), covering the same material as the final 4 weeks of the 13-week sections.
    • To succeed within a hybrid section, you will need to complete the midterm, lab exercises, and final exam.
Enrol on Coursera
*For University of Alberta students only. You must enrol using your @ualberta email address.

Fees and Tuition

You will be charged ★3 credits worth of tuition for a hybrid section of CMPUT 174.

  • You do not have to pay any fees to Coursera to take the PVG MOOC.

Course Evaluation

You do not have to provide any proof of registration or certification of completion for the PVG MOOC. The instructors will simply expect that you know the content from the PVG MOOC before attending a hybrid section.

  • To assess that you have effectively learned the material in the PVG MOOC, the instructor will set an in-class midterm exam within the first week of a hybrid section of CMPUT 174.
  • The final exam of a hybrid section of CMPUT 174 covers the content of the PVG MOOC and the 4 weeks of classroom and lab content (the same topics for all sections of CMPUT 174 in the foundations of computation).

Target Audience

Completing the PVG MOOC gives you more flexibility to learn the material at your own pace, within your schedule, before arriving for the first class of a hybrid section of CMPUT 174. It requires

  • initiative
  • self-motivation
  • planning
  • independent study skills

If you have prior programming experience, aspects of the PVG MOOC may be familiar to you. Nevertheless, you should not underestimate the time required to master the content and be ready to take the midterm and final exam.

If you have concerns about completing the PVG MOOC, then you should register for a conventional 13-week section of CMPUT 174.