CMPUT 201: Practical Programming Methodology (Fall 2018, A2+A3)

CMPUT 201 Practical Programming Methodology: (University Calendar Description, see also Department Course Description)
*3 (fi 6) (either term, 3-0-3). Introduction to the principles, methods, tools, and practices of the professional programmer. The lectures focus on the fundamental principles of software engineering based on abstract data types and their implementations. The laboratories offer an intensive apprenticeship to the aspiring software developer. Students use C and C++ and software development tools of the UNIX environment. Prerequisite: CMPUT 115 or 175.

Course Objectives: (Preferred to have knowledge of, or co-taking, CMPUT 229, 272, and 204)

  • Understand key concepts in standard C (99) and their compatibilities;
  • Be able to handle any intermediate programming problem by using standard C under Linux;
  • Have the skills to combine your knowledge of program design and data structures (174/175), with useful algorithms and mathematics (272/204/304) and application-specific knowledge (291/379) to design and implement non-trivial software;
  • Be prepared to go from procedural (standard C) to object-oriented (C++, Java, etc.).

Student Responsibilities:

Lab D03 (CSC 159)
(Alan to lead)
A1 (CSC B 10): Buro
A1 (CSC B 10)
A1 (CSC B 10)
A2 (CSC B 10): Lin
A2 (CSC B 10)
A2 (CSC B 10)
A3 (CSC B 10): Lin
A3 (CSC B 10)
A3 (CSC B 10)
Lab D01 (CSC 159)
(Mark to lead)
Office hour (ATH 332)
Lab D04 (CSC 159)
(Baihong+Parnian to lead)
TA meeting (CSC 349)
Lab D02 (CSC B 2)
(Samiul+Chenqiu to lead)
Lab D05 (CSC B 2)
(Jake+Abhishek+Animesh to lead)
Extra hour (ATH 353)
(by appointments only)

Office hours:

  • Guohui Lin: Wednesdays 2:00-4:00pm;
  • Guohui Lin: Extra hours by appointments Wednesdays 6:00-7:30pm

Michael Buro (A1 instructor)
ATH 337
mburo TA ualberta TOD ca
Guohui Lin (A2, A3 instructor)
ATH 353
guohui TA ualberta TOD ca
Samiul Anwar (TA #1)
samiul AT ualberta DOT ca
Yourui Guo (TA #2)
yourui AT ualberta DOT ca
Abhishek Nan (TA #3)
anan1 AT ualberta DOT ca
Animesh Kumar Paul (TA #4)
animeshk AT ualberta DOT ca
Baihong Qi (TA #5)
bq AT ualberta DOT ca
Mark Stevens (TA #6)
mjsteven AT ualberta DOT ca
Jake Tuero (TA #7)
tuero AT ualberta DOT ca
Alan Yong (TA #8)
yong AT ualberta DOT ca
Parnian Yousefi (TA #9)
pyousefi AT ualberta DOT ca
Chenqiu Zhao (TA #10)
chenqiu1 AT ualberta DOT ca

Recording/Photo-taking of teaching is permitted only with the prior written consent of the instructor or if recording is part of an approved accommodation plan.

Required textbook: K. N. King. C Programming: A Modern Approach. 2nd edition, W. W. Norton & Company, 2008.

Recommended readings:

  1. B. W. Kernighan, D. M. Ritchie (1988). "The C Programming Language". 2nd edition, Prentice Hall.
  2. M. G. Sobell (2012). "A Practical Guide to Linux Commands, Editors, and Shell Programming". 3rd edition, Prentice Hall PTR.

  3. T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein (2009). "Introduction to Algorithms (Third Edition)". The MIT Press.

Lecture & Lab Schedule (sign in eClass for announcements, course discussion, assignments, lab exercises, sample exams, etc.):

Week Date Lecture Topics
1 Sep 5,7 Course overview
Ch 1: Introducing C ("gcc -Wall -std=c99 source.c -o executable")
Ch 2: C Fundamentals
No lab this week.
2 Sep 10,12,14 Ch 2: C Fundamentals
Ch 3: Formatted Input/Output
Ch 4: Expressions
Introduction to Assignment #1
Lab #1 (2%): accounts, editors, compilers, fixing a simple C program
3 Sep 17,19,21 Ch 5: Selection Statements
Ch 6: Loops
Lab #2 (2%):
4 Sep 24,26,28 Ch 7: Basic Types
Ch 8: Arrays
Lab #3 (2%):
5 Oct 1,3,5 Ch 9: Functions
Check the return value of your program ("echo $?")
Ch 10: Program Organization
Lab #4 (2%):
6 Oct (8,)10,12 Assignment #1 (5%) due Oct 8/Monday, 11:55pm
Ch 11: Pointers
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
No lab this week.
7 Oct 15,17,19 Midterm review
Ch 12: Pointers and Arrays
Lab #5 (2%):
19: Midterm (15%) in class (50 minutes, closed book, Chap 1-10)
8 Oct 22,24,26 Midterm solutions
Ch 13: Strings
Explanation on Assignment #2
Lab #6 (2%):
9 Oct 29,31,2 Ch 14: The Preprocessor ("gcc -E -std=c99 source.c -o expanded_source.c",
        "gcc -D DEBUG -std=c99 source.c -o debugging_version")
Ch 15: Writing Large Programs;
        Makefile ("to generate source.o: gcc -Wall -std=c99 -c source.c")
Lab #7 (2%):
10 Nov 5,7,9 Ch 16: Structures, Unions, and Enumerations;
Ch 17: Advanced Uses of Pointers
Lab #8 (2%):
11 Nov (12,14,16) Assignment #2 (5%) due Nov 12/Monday, 11:55pm
Reading week: no lecture, no lab.
12 Nov 19,21,23 Explanation on Assignment #3
time your program, shell script, running background
Ch 20: Low-Level Programming
Ch 22: Input/Output (FILE pointers)
Lab #9 (2%):
13 Nov 26,28,30 Ch 18: Declarations
Ch 19: Program Design
Nov 30 is the last day for withdrawal
Lab #10 (2%):
14 Dec 3,5,7 A brief introduction to C++, and the major difference between C and C++

Ch 21: The Standard C Library
Ch 23: Library Support (using gcc -lm for linking math.h library functions)
Ch 24: Error Handling
Ch 26: Miscellaneous Library Functions
Final review

Lab #11 (2%):
Assignment #3 (5%) due at Dec 7/Friday, 11:55pm
  Dec 12 Q&A session 2-5pm in CSC B10
  Dec 18, 20*** 18: A2 Final exam (30%): 9:00-11:00am, Pavilion Rows 16, 18
20: A1 Final exam (40%): 9:00-11:00am, Pavilion Rows 1, 3
20: A3 Final exam (30%): 2:00-4:00pm, Pavilion Rows 23, 25 (Seats 1-35) (2 hours, closed book, on all materials)

***WARNING: Students must verify this date on BearTracks when the Final Exam Schedule is posted. The final exam planner is found on the Registrar's website:

  Jan 16 Deferred final exam (starting at 11:00am; see me first in my office)

Grading Scheme:

  1. Mark distribution (course work):
    • 30%     best 9 out of 11 lab exercises (3.33% each, due by the end of registered lab Fridays 22:00)
    • 10%     best 5 out of 6 randomly scheduled in-class quizzes (2% each)
    • 15%     3 assignments (5% each; -1% each purchase of a solution)
    • 15%     Midterm on Oct 19 (in class, 50 minutes, closed book, one letter-size paper with your hand-written notes allowed)
    • 30%     Final (2 hours, closed book, one letter-size paper with your hand-written notes allowed)
  2. Policies:
    • Assignment late policy: within 24 hours -0.5% (i.e., your mark multiplied by a factor of 9/10), within 48 hours -1% (i.e., your mark multiplied by a factor of 4/5), not to be accepted after 48 hours (if an EA is assigned, the marks for the first assignment are moved to the midterm, while the marks for the second and the third are moved to the final exam).
    • Collaboration by consultation model: you are encouraged to discuss the lab exercises and the assignments with each other; and if you wish you may search for existing solutions out there! But you must write your solutions independently. For assignments, you must use the mandatory assignment cover-sheet to submit your work.
    • Re-evaluation: any questions concerning the marking of a term exam (by instructor) or an assignment (by TA) should be brought to the attention of the marker within 10 working days of the date on which the test has been returned to the class in question; after that time, marks cannot be changed.
    • Excused absence: exam absence may result in a mark of 0, unless an acceptable excuse exists. In this case:
      • for a missed midterm, the marks are moved to the final exam;
      • for a missed final exam, the student must apply to the Faculty of Science (not the instructor) for permission to write the deferred exam on Jan 16, 2019 (11:00am; see me first in my office).
  3. Final grades will be based on our interpretation of the grading system as defined in Section 23.4 of the Academic Regulations, and approximately curved, with reasonable cutoffs reflecting class performance. Historical cutoffs have been:
    • A+ (Excellent):    90+
    • A, A- (Excellent):    80+
    • B+, B, B- (Good):    70+
    • C+, C, C- (Satisfactory):    60+
    • D+, D (Minimal Pass):    50+


Disclaimer: Any typographical errors in this Course Outline are subject to change and will be announced in class.


  Last modified: January 02 2019 22:59:53  © Guohui Lin