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:
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.

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

Code of Student Behavior

Department Course Policies

Time
Monday
Tuesday
Wednesday
Thursday
Friday
8:00am
 
 
 
Lab D03 (CSC 159)
(Alan to lead)
 
9:00am
Lecture
A1 (CSC B 10): Buro
Lecture
A1 (CSC B 10)
Lecture
A1 (CSC B 10)
10:00am
 
 
 
11:00am
Lecture
A2 (CSC B 10): Lin
 
Lecture
A2 (CSC B 10)
 
Lecture
A2 (CSC B 10)
12:00pm
Lecture
A3 (CSC B 10): Lin
Lecture
A3 (CSC B 10)
 
Lecture
A3 (CSC B 10)
1:00pm
 
 
 
 
2:00pm
Lab D01 (CSC 159)
(Mark to lead)
 
Office hour (ATH 332)
Lab D04 (CSC 159)
(Baihong+Parnian to lead)
TA meeting (CSC 349)
3:00pm
 
 
4:00pm
 
 
5:00pm
 
Lab D02 (CSC B 2)
(Samiul+Chenqiu to lead)
 
Lab D05 (CSC B 2)
(Jake+Abhishek+Animesh to lead)
 
6:00pm
 
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
TAs:

 
Office
Email
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
instance5_10_1.txt
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
Lab #9 (2%):
13 Nov 26,28,30 time your program, shell script, running background
Ch 18: Declarations
Ch 19: Program Design
Ch 20: Low-Level Programming
Nov 30 is the last day for withdrawal
Lab #10 (2%):
14 Dec 3,5,7 Ch 21: The Standard C Library
Ch 22: Input/Output (FILE pointers)
Ch 23: Library Support (using gcc -lm for linking math.h library functions)
Ch 24: Error Handling
Ch 26: Miscellaneous Library Functions
Makefile
Final review
Lab #11 (2%):
Assignment #3 (5%) due at Dec 7/Friday, 11:55pm
  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: https://www.ualberta.ca/registrar/examinations/exam-schedules/fall-2018-winter-2019-exam-planner

  Jan 9 Deferred final exam:


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 9, 2019 (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+ (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: October 23 2018 09:52:57  © Guohui Lin