|
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 (TA) |
|
9:00am |
Lecture A1/1007 |
Lecture A1 |
Lecture A1 |
10:00am |
|
|
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 (TA) |
Lab D02/2-001 (TAs) |
Lab D04/2-001 (TAs) |
Lab D06/159 (TA) |
Lab D08/1-001 (TAs) |
3:00pm |
4:00pm |
5:00pm |
|
Lab D03/1-001 (TAs) |
|
Lab D07/1-001 (TAs) |
|
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
|
Ahmed Keshta | | akeshta
|
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
Lab 3 (due Oct 6)
Ch 9: Functions
Ch 10: Program Organization
Refresh: merge-sort, quick-sort
|
6
| Oct 7,9,11
| Lab 4 (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 5 (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
Assignment #1 (due Dec 8)
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
| Quiz #9
Withdrawal by 3rd
Ch 19: Program Design (multiple versions and bridging to C++)
15 minutes class time for SPOT survey
|
15
| Dec 9
| Final review
|
| Q&A session:
Q&A session:
|
| Dec 16***
| A1 Final exam (30%): Dec 16, 8:30-10:30am
A2 Final exam (30%): Dec 19, 1:00-3:00pm
A3 Final exam (30%): Dec 18, 1:00-3:00pm
A4 Final exam (30%): Dec 17, 1:00-3:00pm
(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/fall-2024-winter-2025-exam-planner
|
| Jan 17
| Deferred final exam (Friday, starting at 11:00am)
|
Grading Scheme:
- 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, 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.
- 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.
- 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.
| |