CMPUT 201: Practical Programming Methodology (Fall 2024, all sections)


Course syllabus (PDF, downloadable)

CMPUT 201 Practical Programming Methodology: (University Calendar 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 software development tools of the UNIX environment. Prerequisite: CMPUT 175.

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

  • Understand the design theory of standard C (99): key programming concepts 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:

Time
Monday
Tuesday
Wednesday
Thursday
Friday
8:00am
 
 
lab machine maintenance
Lab D05/159
(Kush)
 
9:00am
Lecture A1/1007
Lecture A1
Lecture A1
10:00am
 
TA meeting
lab machine maintenance
 
11:00am
Lecture A2/1017
In-person and
Online Office Hours
ATH 204/353
CSC 249
Lecture A2
In-person and
Online Office Hours
CSC 249
Lecture A2
12:00pm
Lecture A3/L1160
Lecture A3
Lecture A3
1:00pm
Lecture A4/1-140
Lecture A4
Lecture A4
2:00pm
Lab D01/159
(Jared)
Lab D02/2-001
(Ellis,Jennifer)
Lab D04/2-001
(Arib,Corey)
Lab D06/159
(Ashwin)
Lab D08/1-001
(Sohana,Yujin)
3:00pm
4:00pm
5:00pm
 
Lab D03/1-001
(Gemmary,Kelly)
 
Lab D07/1-001
(Arman,Harveer)
 
6:00pm
 
 
 
7:00pm
 
 
 

Office hours:

  • Our work hours are 9am-5pm (except early morning and late evening labs);
  • your queries might not be answered immediately, and so start your work early;
  • Instructors might join labs to help questions;
  • In-person/online office hours (see above time table): Tuesday/Thursday 11am-1:30pm.

 
Office
CCID
Guohui Lin (A1/A2 instructor)
ATH 353
guohui
Henry Tang (A3/A4 instructor)
ATH 204
hktang
 
Leo Chang (GTA)  chewei
Zijie Tan (GTA)  ztan4
Orion Sehn (GTA) osehn
Tomas Ordonez Gonzalez  ordonezg
Ilya Nalivaiko  nalivaik
Arman Tiwana  astiwana
Kelly Shih  kshih
Bruce Tong  jtong7
Ashwin Shreekumar ashreeku
Ellis McDougald ecmcdoug
Sumayya Taher  sntaher
Jennifer Wang  jennif11
Jared Gourley  jgourley
Minjae Jeong  mjeong
Gemmary Chang  gemmary
Yujin-Julian Litz Park litzpark
Arib Amin  arib1
Corey Polo  polo
Harrison Peebles hpeebles
Tauseef Nafee Fattah fattah
Brayden Tober  btober
Kush Padalia  padalia
Harveer Singh Sarao  harveers
Yanze Song  songy9
Sohana Dhinsa  sdhinsa

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 / References: 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, quizzes, lab exercises and assignment, sample exams, etc.):

Week Date Lecture Topics
1 Sep 4,6 Course overview
Ch 1: Introducing C
Ch 2: (getting started) C Fundamentals
Linux, vim/emacs, keyboard commands ("gcc -Wall -Werror [-Wextra] -std=c99 source.c -o executable")
GitHub (version control, lab exercise submissions)
VSCode, ssh, scp (always backup your files)
2 Sep 9,11,13 Lab 0 (no mark, needed for the other labs)
Ch 3: Formatted Input/Output
Ch 4: Expressions
Ch 8.1: One-Dimensional Arrays
Check the return value of your program ("echo $?")
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
3 Sep 16,18,20 Quiz #1 Lab 1 (due Sep 22)
Ch 5: Selection Statements
Ch 6: Loops
Refresh: bubble-sort, insertion-sort (these subjects are "programming materials")
Refresh: binary search; greatest common divisor (GCD)
4 Sep 23,25,27 Quiz #2 Lab 2 (due Sep 29)
Ch 7: Basic Types
Ch 8: Arrays
5 Sep 30, Oct 2,4 Quiz #3
Ch 9: Functions
Ch 10: Program Organization
Refresh: merge-sort, quick-sort
6 Oct 7,9,11 Lab 3 (due Oct 13)
Review; Quizzes #1-3 solutions
Midterm exam #1 in class on Wednesday/9th
(closed book, a letter-size paper with handwritten notes on one side allowed)

Ch 11: Pointers
Using valgrind for error checking ("gcc -g -Og" and "valgrind executable")
7 Oct 14,16,18 Quiz #4 Lab 4 (due Oct 20)
Ch 17: Advanced Uses of Pointers (dynamic allocation)
Ch 12: Pointers and Arrays
Using valgrind for error checking ("gcc -g -Og" and "valgrind executable")
8 Oct 21,23,25 Quiz #5 Lab 5 (due Oct 27)
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
Ch 13: Strings
Ch 17: Advanced Uses of Pointers
9 Oct 28,30,1 Quiz #6
Ch 14: The Preprocessor ("gcc -E -std=c99 source.c -o expanded_source.c",
        "gcc -DDEBUG -std=c99 source.c -o debugging_version",
        "gcc -DNUM=25 -std=c99 source.c -o debugging_version")
        "gcc -lm (for linking math.h library functions)
Ch 15: Writing Large Programs
Makefile basics ("to generate source.o: gcc -Wall -Werror -std=c99 -c source.c")
Ch 16: Structures, Unions and Enumerations
10 Nov 4,6,8 Assignment #1, milestone #1 due Nov 10
Ch 16: Structures and pointers
Midterm exam #2 in class on Wednesday/6th
(closed book, a letter-size paper with handwritten notes on one side allowed)

Ch 17: Advanced Uses of Pointers (function pointers)
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
11 Nov (11,13,15) Reading week: no classes
12 Nov 18,20,22 Quiz #7
Ch 20: Low-Level Programming
Ch 22: Input/Output (FILE pointers)
Makefile
13 Nov 25,27,29 Quiz #8
Assignment #1, milestone #2 due Dec 1
time your program (runtime statistics), shell script, running background
Ch 18: Declarations
14 Dec 2,4,6 Withdrawal by 3rd
Quiz #9
Assignment #1 due Dec 8
Ch 19: Program Design (multiple versions and bridging to C++)
15 minutes class time for SPOT survey
15 Dec 9 Final review
  Dec 16,17,18 A1 Final exam (30%): Dec 16, 8:30-10:30am, Main Gym rows 15,17,19,21
A2 Final exam (30%): Dec 17, 8:30-10:30am, Main Gym rows 2,4,6,8,10
A3 Final exam (30%): Dec 18, 1:00-3:00pm, Main Gym rows 16,18,20,22,24
A4 Final exam (30%): Dec 17, 1:00-3:00pm, Pavilion rows 23,25,27
(closed book, a letter-size paper with handwritten notes on both sides allowed)

***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/

  Jan 17 Deferred final exam (Friday, starting at 11:00am)


Grading Scheme:

  1. Mark distribution (course work w/dues):
    • 15%  5 lab exercises (3% each; basic/intermediate)
    • 17%  1 large assignment (2% each for two milestones + 13%; advanced)
    • 18%  9 quizzes (2% each, a single 15-minute try inside time window Thursday 00:01am - Friday 11:59pm; no replacement quiz)
    • 20%  2 midterm exams (10% each, 45-50 minutes class time on Wednesdays Oct 9, 2024 and Nov 6, 2024, respectively)
    • 30%  1 Final exam (2 hours on scheduled dates)
          Midterm and Final exams are closed book, only a letter-size paper with your handwritten notes allowed.
  2. Term work policies:
    • Submissions will NOT be accepted after the corresponding due date, for all quizzes, lab exercises and assignment:
      • all quizzes are done in eClass;
      • all lab exercises and assignment are submitted to your GitHub.
    • Lab demo:
      • due to large class sizes, we will randomly select only 40% students to demo their lab exercises, after they submit their works;
      • allow at least 7 days for TAs to mark;
      • demo should be done within 14 days (but before the final exams), mostly during labs but could be arranged with your TAs;
      • refusing to demo zeros the lab marks.
    • Excused Absence (EA):
      • an acceptable excuse exists, and requested before the due date or within reasonable time frame;
      • requests should be made to the instructor; if granted, all associated marks are moved to the final exam;
      • for a missed final exam, the student must apply to their faculty (not the instructor) for permission to write the deferred exam on Jan 17, 2025 (Friday, 11:00am).
    • Collaboration by consultation model:
      • you are encouraged to discuss the lab exercises and assignment each other;
      • if you wish, you may search for existing solutions out there!
      • But you must write your solutions independently.
        Do not copy/mimic code from your fellow classmates; neither let the others copy/mimic your code! Both are plagiarism.
        For all submitted C programs, you must use comment lines (at the top) to claim that you write the codes yourself, or whichever resources (other than the provided course materials -- textbook, lecture notes, demo programs) you use.
    • Re-evaluation: requests should be made to the marker(s) within 7 days of the marking (re-marking could reduce your mark); after that time, marks cannot be changed.
  3. Final grades are based on our interpretation of grading system defined in Academic Regulations.
    • The class is not curved --- not to fail any pre-set percentage of students, neither to target for any pre-set average.
    • We strive to assign each student a grade they deserve.
    • The following **mark (not percentage)** cutoffs will be respected:
    • 90+ → A+ (Excellent) --- guaranteed (in A1/A2);
    • 80+ → A, A- (Excellent);
    • 70+ → B+, B, B- (Good);
    • 60+ → C+, C, C- (Satisfactory);
    • 50+ → D+, D (Minimal Pass) --- "<50 marks" is an F (in A1/A2).

 

Disclaimer: This Course Outline is released and becomes final on September 3, 2024. Any typographical errors herein are subject to change and will be dated and announced in class.

 

  Last modified: November 06 2024 16:48:48  © Guohui Lin