CMPUT 201 (Practical Programming Methodology)

Fall 2018, Section A1, Instructor: Michael Buro
Lectures: MWF 09:00-09:50 in CSC B10, starting Sep. 5
Office hours: M10:00-10:30 (ATH 337), T12:30-13:00 (ATH 337),W14:00-15:30 (ATH 332/337), or by appointment (send email), W Dec 12 14:00-15:00 CSC B10, M Dec 17 11:00-12:00 ATH 332

Labs (starting Sep 10) and TAs (email addresses end with, TA office hours by appointment (send email)):
Lab Time         Room     TA(s)
D1  M14:00-16:50 CSC 159  Mark (mjsteven@)
D2  T17:00-19:50 CSC B2   Samiul (samiul@) Chenqiu (chenqiu1@)
D3  R08:00-09:50 CSC 159  Alan (yong@)
D4  R14:00-16:50 CSC 159  Baihong (bq@) Parnian (pyousefi@)
D5  R17:00-19:50 CSC B2   Jake (tuero@) Abhishek (anan1@) Animesh (animeshk@)
-                         Yourui (yourui@)
TA workload (instructor/TA use only, THIS IS NOT A TA TIMETABLE, contact them by email individually to setup meetings)
A2/A3 section homepage

Section News

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

Lecture notes, labs

eClass Course Page (for submitting lab solutions and general questions)

Check your marks

Local C++ Reference

Tentative Schedule

             Labs    |          Lectures 
  Week of            |   M+0      W+2      F+4 Edue Reading
  (Monday)  ---------+---------------------------------------  
 1. Sep.03  %        |  %         L01      L02      R01
 2. Sep.10   E00     |   L03      L04      L05      R02
 3. Sep.17   E01     |   L06      L07      L08 E01d R03
 4. Sep.24   E02     |   L09      L10      L11 E02d R04 
 5. Oct.01   E03     |   L12      L13      L14 E03d R05
 6. Oct.08   E04     |  %(TG)     L15      L16 E04d R06
 7. Oct.15   E05     |   L17      L18      MT  E05d R07
 8. Oct.22   E06     |   L19      L20      L21 E06d R08
 9. Oct.29   E07     |   L22      L23      L24 E07d R09 
10. Nov.05   E08     |   L25      L26      L27 E08d R10
11. Nov.12  %        |  %        %        %    (Reading week)
12. Nov.19   E09     |   L28      L29      L30 E09d R11
13. Nov.26   E10     |   L31      L32      L33 E10d R12
14. Dec.03   E11     |   L34      L35      L36 E11d REX

Legend: Li  : lecture i (36)
        Rk  : reading assignment k (12)
        Ej  : lab exercise j related to Rj (1+11)
        Ejd : lab exercise j due Fridays 22:00 (11)
        MT  : in-class midterm exam (1) Oct 19
        %   : no class / lab / reading

FEX Q/A session: Dec-12-2018, 14:00-15:30, CSC B10, bring questions!
Tentative FEX date: Dec-20-2018, 9:00-11:00, Pavilion Rows 1,3, CLOSED BOOK FORMAT
Deferred final exam date: Jan-7-2019, 14:00-16:00, ATH 332

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 small scale programming tasks 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. We'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 approach, which has been experimented with extensively in recent years, is to help 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:


Course Work


Expected Weekly Time Investment

Total: ~8h

Lab Exercises and Quizzes

All lab exercise Ej solutions are due the following Friday at 22:00 - see Edue column in the schedule. E.g., E01 solutions are due Friday Sep. 21 at 22:00. Lab exercise solutions are tested on lab computer You need to ensure that your submissions work there (e.g., use scp and ssh to copy and test your files).

Late (or not submitted) exercise solutions and missed quizzes will receive 0 marks. However, because only the 9 best exercises and 5 best quizzes count, 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.

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:
≥ 90% A+   ≥ 85% A    ≥ 80% A-
≥ 76% B+   ≥ 73% B    ≥ 70% B-
≥ 66% C+   ≥ 63% C    ≥ 60% C-
≥ 55% D+   ≥ 50% D    < 50% 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 high 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 at Code of Student Behaviour 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 in above document.

If you want to use a git repository for storing your course work make sure it is private. You also must not share your repository with fellow students. Keep in mind that it is easy to find code similarities with automated tools ...

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 instructors 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 Aug/16/2018