CMPUT 201 (Practical Programming Methodology)

Winter 2014, Instructor: Michael Buro
Lectures: TR 12:30-13:50 in CSC B-10, starting Jan. 7
Office hours (ATH 337): M 13:00-13:30, T 11:30-12:00, R 14:00-14:30
Labs: M 14:00-16:50 and R 17:00-19:50 in CSC 159, starting Jan. 13
TAs (email addresses end with
Marius (astanesc@) Nicolas (barriga@) Tim (tayee@)

Section News

Course Material (id/password required, will be provided in the first lecture)

Course Forum (used for announcements and general questions)

Check your marks

Local C++ Reference

Tentative Schedule

                  Labs        |  Lecture    Lecture   
  Week of    M (+0)    R (+3) |  T (+1)     R (+3)                       
  (Monday)   14:00     17:00  |  12:30      12:30     
 1. Jan.06   %         %      |   L01       L02    R01 Introduction
 2. Jan.13   E00       E00    |  *L03      #L04    R02 C Basics
 3. Jan.20   E01       E01    |  *L05      #L06    R03 ...
 4. Jan.27   E02       E02    |  *L07      #L08    R04 
 5. Feb.03   E03       E03    |  *L09      #L10    R05 
 6. Feb.10   E04       E04    |  *L11      #L12       
 7. Feb.17   %         %      |   %         %      R06 (Reading week)
 8. Feb.24   E05       E05    |  *L13      #L14    R07 
 9. Mar.03   E06       E06    |  *L15      #L16    R08 
10. Mar.10   E07       E07    |  *L17      #L18    R09 
11. Mar.17   E08       E08    |  *L19      #L20    R10
12. Mar.24   E09       E09    |  *L21      #L22    R11
13. Mar.31   E10       E10    |  *L23      #L24    R12
14. Apr.07   %         %      |  *L25       %

Legend: Li         : lecture i (25)
        Ej         : in-lab programming exercise j (11)
        Rk         : reading assignment k (12)
        %          : no class / lab
        *          : in-lecture quiz (12)
        #          : random in-lecture quiz (5 out of 11)

Final Exam: Thursday Apr 24, 14:00, CSC 159
Deferred final exam date: May-22-2014, 14:00-17:00, CSC 159

Course Overview

Like the best carpenters and artists, the best programmers combine both a solid theoretical foundation with "best practices" and tools refined by years of experience. Instead of stress loads on walls and hammers, or colour theory and paint brushes, programmers work with abstract data types and software libraries.

It takes an understanding of practical programming methodology, and a diverse set of tools to translate a creative idea into a working implementation. The programmer cares about choosing the right tool for the right problem, and is not simply interested in collecting the most tools.

CMPUT 201 is a "doing art" and not an "art appreciation" course; it requires hands-on, active learning. For a programmer, the end product is a complete, working program.


Be able to handle any intermediate programming problem by using C or C++ and Unix. Have the skills to combine your knowledge of program design and data structures (174/175), with useful algorithms and mathematics (204/272), and application-specific knowledge (291/379) to design and implement non-trivial software.


One of CMPUT 115,175,275, or ENCMP 100. If you haven't passed one of those courses, but you think you have equivalent knowledge of fundamental data structures and algorithms, contact me to arrange a meeting to discuss your case. I'll check prerequisites during the second week and will remove students from the course who don't qualify.

Course Topics

Course Structure

Instead of the established lecture-lab-assignment-exam routine, in this course we'll try something different: the inverted class room. The goal of this new approach, which has been experimented with extensively in recent years, is to teach students to become independent learners and problem solvers more effectively. The main idea is to replace lecture time that used to be filled with instructors' monologues by more valuable interactive problem solving sessions.

Here is how it will be done in this course:

Benefits: Expected time investment per week: ~8h Course work evaluation:

All missed lab exercises and quizzes will receive 0 marks. However, because only the 9 best lab exercises and 15 best quizzes are relevant, students are granted some essentially free absences. Questions or concerns about marking must be brought to the instructor's attention by email within 2 days of the return date.

The final exam will be held in the lab. It will consist of a written response part and a programming part.

Final grades

Please visit this page to learn about our interpretation of letter grades. In this course grades will not be curved, they are absolute - following these cut points:
>= 95% A+   >= 90% A    >= 85% A-
>= 80% B+   >= 75% B    >= 70% B-
>= 65% C+   >= 60% C    >= 55% C-
>= 50% D+   >= 45% D    <  45% F
subject to this important condition: if the result of the final exam is less than 40%, the final course grade will not be better than D+.

Academic Integrity

The University of Alberta is committed to the highest standards of academic integrity and honesty. Students are expected to be familiar with these standards regarding academic honesty and to uphold the policies of the University in this respect. Students are particularly urged to familiarize themselves with the provisions of the Code of Student Behaviour (online at and avoid any behaviour which could potentially result in suspicions of cheating, plagiarism, misrepresentation of facts and/or participation in an offence. Academic dishonesty is a serious offence and can result in suspension or expulsion from the University. (GFC 29 SEP 2003)

Copying and cheating on assignments will be penalized with a mark of 0 (see the standard handouts for academic dishonesty and copying and cheating), and Section 30.3.2 Inappropriate Academic Behaviour.

Course Policies

Unless otherwise noted, the CS Department Policies are in effect.


In this course we use the "Consultation" model: students are encouraged to discuss and solve problem sets in small groups to speed up learning and stimulate idea exchange. In the end, however, students must write down their own solutions and be able to solve similar problems independently.

Regardless of the collaboration method allowed, you must always properly acknowledge the sources you used and people you worked with. Failure to give proper credit is considered plagiarism. In general, academic dishonesty is a serious offence and can result in suspension or expulsion from the University.

Your professors reserve the right to give you an exam (oral, written, or both) to determine the degree that you participated in the making of the deliverable, and how well you understand what was submitted. For example, you may be asked to explain any code that was submitted and why you choose to write it that way. This may impact the mark that you receive for the deliverable.

Note that this potential additional questioning about your deliverable is part of the assessment process, both summative (for marks) and formative (for feedback to you and us). It is intended to give us additional information about what you have learned. So, whenever you submit a deliverable, especially if you collaborate, you should be prepared for an individual inspection/walkthrough in which you explain what every line of your code, assignment, design, documentation etc. does and why you chose to write it that way.

last modified on  ; you are visitor # since Sep/1/2013