CMPUT 201: Practical Programming Methodology (Fall 2017, all sessions)

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:
Be able to handle any intermediate programming problem by using 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. 2yy

Student Responsibilities:
Reading, assignments, lab exercises, and exams. (your feedbacks are always welcome)

Code of Student Behavior

Department Course Policies

Lab D1 (CSC 159)
(Alan to lead)
Lab D4 (CSC 159)
(Madi to lead)
A1 (CSC B 10): Lin
A1 (CSC B 10)
A1 (CSC B 10)
A2 (CSC B 2): Lin
Lab D2 (CSC 159)
(Chang to lead)
A2 (CSC B 2)
A2 (CSC B 2)
A3 (CSC B 10): Elmorsy
A3 (CSC B 10)
A3 (CSC B 10)
TA meeting (ATH 332)
Lab D8 (CSC 159)
(Chao to lead)
Office hour (ATH 353)
Lab D5 (CSC 159)
(Samer to lead)
Lab D7 (CSC 159)
(Fernando to lead)
Lab D6 (CSC B 2)
(Baihong and Parnian to lead)
Extra hour (ATH 353)
(by appointments only)

Office hours:
Guohui Lin: Wednesdays 2:00-4:00pm; Extra hours by appointments Wednesdays 6:00-7:30pm
Mohammed Elmorsy: Fridays 3:30-5:30pm; Extra hours by appointments Mondays 3:00-5:00pm

Guohui Lin (A1, A2 instructor)
ATH 353
guohui TA ualberta TOD ca
Mohammed Elmorsy (A3 instructor)
CSC 143
elmorsy TA ualberta TOD ca
Samer Al Masri (TA #1)
almasri AT ualberta DOT ca
Chao Gao (TA #2)
cgao3 AT ualberta DOT ca
Chang Liu (TA #3)
chang6 AT ualberta DOT ca
Fernando Lopez de la Mora (TA #4)
lopezdel AT ualberta DOT ca
Baihong Qi (TA #5)
bq AT ualberta DOT ca
Alan Yong (TA #6)
yong AT ualberta DOT ca
Parnian Yousefi (TA #7)
pyousefi AT ualberta DOT ca
Madi Zhanbyrtayev (TA #8)
zhanbyrt 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 6,8 Course overview
Ch 1: Introducing C ("gcc -Wall -std=c99 source.c -o executable")
Ch 2: C Fundamentals
No lab this week.
2 Sep 11,13,15 Ch 2: C Fundamentals
Ch 3: Formatted Input/Output
Lab #1 (3%): accounts, editors, compilers, fixing a simple C program
3 Sep 18,20,22 Ch 4: Expressions
Ch 5: Selection Statements
Lab #2 (3%):
4 Sep 25,27,29 Ch 6: Loops
Ch 22.1-3: Input/Output (FILE pointers for Assignment #1)
Lab #3 (3%):
5 Oct 2,4,6 Ch 7: Basic Types
Ch 8: Arrays
Lab #4 (3%):
6 Oct (9,)11,13 Assignment #1 (10%) due Oct 9/Monday, 11:55pm
Ch 9: Functions
Ch 10: Program Organization
No lab this week.
7 Oct 16,18,20 Midterm review
Ch 11: Pointers
Lab #5 (3%):
8 Oct 23,25,27 23: Midterm in class (50 minutes, closed book, on Basic Features of C, Chapters 1-10)
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
Ch 12: Pointers and Arrays
The MST problem, and Prim's algorithm (Reference [3], Ch 23) for Assignment #2
Lab #6 (3%):
9 Oct 30,1,3 Ch 13: Strings
Ch 14: The Preprocessor ("gcc -E -std=c99 source.c -o expanded_source.c",
        "gcc -D DEBUG -std=c99 source.c -o debugging_version")
Lab #7 (3%):
10 Nov 6,8,10 Ch 15: Writing Large Programs;
        Makefile ("to generate source.o: gcc -Wall -std=c99 -c source.c");
Ch 16: Structures, Unions, and Enumerations;
Lab #8 (3%):
11 Nov (13,15,17) Assignment #2 (10%) due Nov 13/Monday, 11:55pm
Reading week: no lecture, no lab.
12 Nov 20,22,24 Ch 17: Advanced Uses of Pointers
Dynamic programming for Assignment #3
Lab #9 (3%): instant programming
13 Nov 27,29,1 time your program, shell script, running background
Ch 18: Declarations
Ch 19: Program Design
Ch 20: Low-Level Programming
Nov 27 UTS Teaching evaluation open
Dec 1 is the last day for withdrawal
Lab #10 (3%):
14 Dec 4,6,8 Ch 21: The Standard C Library
Ch 22: Input/Output
Ch 23: Library Support (using gcc -lm for linking math.h library functions)
Ch 24: Error Handling
Ch 26: Miscellaneous Library Functions
Final review
Assignment #3 (10%) due at Dec 8/Friday, 11:55pm
Lab #11 (3%):
  Dec 18, 20*** 18: A2 Final exam: 9:00-11:00am
20: A1 Final exam: 9:00-11:00am
20: A3 Final exam: 2:00-4:00pm (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 9 Deferred final exam:

Grading Scheme:

  1. Mark distribution (course work):
    • 30%     10 required lab exercises (3% each, total can be up to 33%; 1 instant programming)
    • 30%     3 assignments (10% each; -2% each purchase of a solution)
    • 12%     Midterm on Oct 23 (in class, 50 minutes, closed book, one letter-size paper with your hand-written notes allowed)
    • 28%     Final (2 hours, closed book, one letter-size paper with your hand-written notes allowed)
  2. Policies:
    • Assignment late policy: within 24 hours -10%, within 48 hours -20%, not to be accepted after 48 hours (if an EA is assigned, the marks are moved to the final exam).
    • Collaboration by consultation model: you are encouraged to discuss the assignments with each other, but you must write your solutions alone and independently. 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 9, 2018 (time and place TBD).
  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+:    90+
    • A, A-:    80+
    • B+, B, B-:    70+
    • C+, C, C-:    60+
    • D+, D:    50+


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


  Last modified: September 11 2017 17:38:30  © Guohui Lin