|
CMPUT 201: Practical Programming Methodology (Fall 2023, 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:
- Frequently Asked Questions (FAQs)
- Stay healthy (nutrition, hydration, exercise and sleep)!
- Follow Campus HealthyU Essentials and
Safety and Security measures!
- Attend your lectures, labs, office hours, and check discussion forum (Q&A through emails unlikely due to 600+ students);
- In-class lectures could differ slightly across sections, in terms of progress, emphasis and demo programs;
- Use your UofA email address for communications!
- Textbook reading (plus some lecture notes);
- Work independently on lab exercises;
- Prepare well for quizzes and exams;
- Your feedbacks are very welcome!
- Do NOT use ChatGPT, GitHub Copilot or other generative AI tools to generate your programs for submission (which is plagiarism)!
-
University of Alberta: Code of Student Behavior
-
Faculty of Science: Don't do it
-
Department of Computing Science: Course Policies
- Policies on lab use, discussion forum, email communication are in eClass.
Time |
Monday |
Tuesday |
Wednesday |
Thursday |
Friday |
8:00am |
|
|
lab machine maintenance |
Lab D05 (Kushol) |
|
9:00am |
Lecture A1 |
Lecture A1 |
Lecture A1 |
10:00am |
|
|
lab machine maintenance |
|
11:00am |
Lecture A2 |
A1/A2 In-person and Online Office Hours |
Lecture A2 |
A3 In-person and Online Office Hours |
Lecture A2 |
12:00pm |
Lecture A3 |
Lecture A3 |
Lecture A3 |
1:15pm |
Teaching team meeting |
|
|
2:00pm |
Lab D01 (Abed) |
Lab D02 (Bruce,Jad,Michael) |
Lab D04 (Ahmed,Ethan,Lubomyr) |
Lab D06 (Nandan) |
Lab D08 (Zijie,Javin,Saumya) |
3:00pm |
4:00pm |
5:00pm |
|
Lab D03 (Andy,Carson,Dohyun) |
|
Lab D07 (Aniket,Harrison,Minjae) |
|
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 try to join labs, as often as possible, to help TAs with Q&As (the first 30 minutes in particular);
- In-person/online office hours (see above time table): Tuesday/Thursday 11am-1:45pm.
| Office
| CCID
|
Guohui Lin (A1/A2 instructor)
| ATH 353
| guohui
|
Henry Tang (A3 instructor)
| ATH xxx
| hktang
|
| | |
Aniket Sharma (TAs)
|
| aniket7
|
Md Abed Rahman
|
| mdabed
|
Rafsanjany Kushol
|
| kushol
|
Zijie Tan
|
| ztan4
|
Akemi Izuko (TAs)
|
| izuko
|
Ahmed Keshta
|
| akeshta
|
Andy Tran
|
| aqtran
|
Bruce Tong
|
| jtong7
|
Carson Barnstable
|
| barnstab
|
Devon Ragosin
|
| ragosin
|
Dohyun Kim
|
| dohyun1
|
Ethan Chung
|
| elchung
|
Harrison Low
|
| hblow
|
Jad Chehimi
|
| jchehimi
|
Jay Kim
|
| jaekuang
|
Javin Vora
|
| jvora
|
Jiameng Chang
|
| gemmary
|
Kevin Sha
|
| ksha2
|
Krish Lal
|
| lal1
|
Lubomyr Soroka
|
| lubomyr
|
Michael Shi
|
| wenjian2
|
Minjae Jeong
|
| mjeong
|
Nandan Ramesh
|
| nandan
|
Roberto Zaghini
|
| rszaghin
|
Rocky Chen
|
| minghe1
|
Saumya Rada
|
| srada
|
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, sample exams, etc.):
Week |
Date |
Lecture Topics |
1
| Sep 6,8
| Course overview
Ch 1: Introducing C
Ch 2: (getting started) C Fundamentals
Linux, vim/emacs, keyboard commands ("gcc -Wall -std=c99 source.c -o executable")
VSCode, ssh, scp (always backup your files)
|
2
| Sep 11,13,15
| Lab #1 (D01-04 due Sep 13; D05-08 due Sep 20)
Ch 3: Formatted Input/Output
Ch 4: Expressions
Ch 8.1: One-Dimensional Arrays
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
|
3
| Sep 18,20,22
| Quiz #1
Lab #2 (D01-07 due Sep 21; D08 due Sep 28)
Ch 5: Selection Statements
Ch 6: Loops
Refresh: bubble-sort, insertion-sort (these subjects are "programming materials")
|
4
| Sep 25,27,29
| Quiz #2
Lab #3 (All lab sections due Sep 29)
Ch 7: Basic Types
Ch 8: Arrays
Refresh: binary search; greatest common divisor (GCD)
|
5
| Oct 2,4,6
| Quiz #3
Lab #4 (D01 due Oct 2; D02-08 due Oct 9)
Ch 9: Functions
Ch 10: Program Organization
Refresh: merge-sort, quick-sort
Check the return value of your program ("echo $?")
|
6
| Oct (9,)11,13
| Lab #5 (D01 joins any other lab; D02-03 due Oct 10; D01,04-08 due Oct 17)
Review; Quizzes #1-3 solutions
Midterm exam #1 in class on Friday/13th (closed book, a letter-size paper with handwritten notes on one side allowed)
|
7
| Oct 16,18,20
| Quiz #4
Lab #6 (D01-04 due Oct 18; D05-08 due Oct 25)
Ch 11: Pointers
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 23,25,27
| Quiz #5
Lab #7 (D01-07 due Oct 26; D08 due Nov 2)
Ch 12: Pointers and Arrays
Using gdb/gcc for debugging ("gcc -ggdb -std=c99 source.c -o executable")
Ch 13: Strings
Ch 17: Advanced Uses of Pointers
|
9
| Oct 30,1,3
| Quiz #6
Lab #8 (All lab sections due Nov 3)
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 -std=c99 -c source.c")
|
10
| Nov 6,8,10
| Quiz #7
Lab #9 (D01 due Nov 6; D02-08 due Nov 13)
Ch 16: Structures, Unions and Enumerations
Ch 17: Advanced Uses of Pointers (function pointers)
|
11
| Nov (13,15,17)
| Lab #10 (no in-person labs; D01-03 due Nov 14; D04-08 due Nov 21)
Reading week: no classes
|
12
| Nov 20,22,24
| Lab #11 (D01-04 due Nov 22; D05-08 due Nov 29)
Midterm exam #2 in class on Monday/20th (closed book, a letter-size paper with handwritten notes on one side allowed)
Ch 20: Low-Level Programming
Ch 22: Input/Output (FILE pointers)
|
13
| Nov 27,29,1
| Quiz #8
Lab #12 (D01-07 due Nov 30; D08 due Dec 7)
Withdrawal by 1st
Makefile
time your program (runtime statistics), shell script, running background
Ch 18: Declarations
|
14
| Dec 4,6,8
| Quiz #9
Lab #13 (All lab sections due Dec 8)
Ch 19: Program Design (multiple versions and bridging to C++)
15 minutes class time for SPOT survey
Final review
|
| Dec 11,13
| A2 Q&A session: Dec 11, Monday 9:00-11:00am, in ATH 332+328
A1/A3 Q&A session: Dec 13, Wednesday, 11:00-1:00pm, in ATH 332+328
|
| Dec 12,14***
| 14: A1/A3 Final exam (30%): 2:00-4:00pm
12: A2 Final exam (30%): 2:00-4: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-2023-winter-2024-exam-planner
|
| Jan 12
| Deferred final exam (Friday, starting at 11:00am)
|
Grading Scheme:
- Mark distribution (course work w/dues):
- 35%
13 lab exercises (3.5% each; best 4/3/3 out of 5/4/4, three groups - basic/intermediate/advanced)
- 13.5%
9 quizzes (1.5% each, a single try only inside time window Wednesday 11:00pm - Friday 11:00pm; no replacement quiz)
- 21.5%
2 midterm exams (11% + 10.5%, 50 minutes class time on Friday Oct 13, 2023 and on Monday Nov 20, 2023, 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.
- [7%
2 optional lab exercises (3.5% each) from the two groups of intermediate/advanced labs]
- Term work policies:
- Submissions will NOT be accepted after the corresponding due date, for all quizzes and lab exercises:
- all quizzes are done in eClass;
- all lab exercises are submitted to appropriate pages in eClass.
- Lab demo:
- due to large class sizes, we will randomly select only 1/3 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):
- no EAs for optional lab exercises (i.e., only non-zero and non-EA lead to bonus marks);
- 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 12, 2024 (Friday, 11:00am).
- Collaboration by consultation model:
- you are encouraged to discuss the lab exercises 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 following **mark (not percentage)** cutoffs will be respected:
- 90+ → A+ (Excellent) --- guaranteed;
- 80+ → A, A- (Excellent);
- 70+ → B+, B, B- (Good);
- 60+ → C+, C, C- (Satisfactory);
- 50+ → D+, D (Minimal Pass) --- "<50 marks" is an F.
Disclaimer: This Course Outline is released and becomes final on September 5, 2023.
Any typographical errors herein are subject to change and will be dated and announced in class.
| |