Course Overview
An introduction to programming using Python. Topics include basic program design; program flow with decisions, functions, and loops; command-line and file input/output; variables and types; and string and sequence processing. No prior programming experience is assumed — the course emphasizes problem decomposition and program design as well as Python syntax.
General-Education Attribute: Science Distributive.
Expected Background
- No prior programming experience required.
- Comfort using a computer, installing software, and organizing files.
- Willingness to practice frequently — programming is a skill built by writing and debugging code yourself.
Textbook & Tools
Required textbook: None. Readings, examples, starter files, and practice materials are posted in D2L.
- Python 3 — use the version specified in D2L.
- Visual Studio Code with the Python extension (recommended). IDLE or another approved editor is acceptable.
Slides & Schedule
| # | Date | Topic | Slides | Supporting Materials |
|---|---|---|---|---|
| 1 | Aug 25, 2026 | Introduction; computational thinking; Python environment; expressions; print() | Class01.pdf | Follow along in playground (Class 1); Class-1 check-in; Syllabus (PDF); Class code (.zip) |
| 2 | Sep 1, 2026 | Computational thinking; values & types; expressions; print() and input() | Class02.pdf | Follow along in playground (Class 2); Class-1 check-in; Class code (.zip) |
| 3 | Sep 3, 2026 | Variables & assignment; numeric & string types; operators; f-strings (formatted output) | Class03.pdf | Programming Assignment 1 assigned (due Thu Sep 17, 11:59 PM, D2L — extended). Follow along in playground (Class 3); Class code (.zip) |
| 4 | Sep 8, 2026 | Boolean expressions & comparison operators; if / else; comparing strings; and / or / not | Class04.pdf | Follow along in playground (Class 4); Class code (.zip) · Schedule change: PA1 now due Thu Sep 17, 11:59 PM; Quiz 1 moved to Tue Sep 15 |
| 5 | Sep 10, 2026 | if / elif / else; nested decisions; flags & truthiness; conditional expression; program design & boundary testing | Class05.pdf | Follow along in playground (Class 5); Class code (.zip) · No quiz today — Quiz 1 is Tue Sep 15 (Classes 1–5); PA1 due Thu Sep 17, 11:59 PM In-class activity: Pokémon Python Lab · Class Pokémon World |
| 6 | Sep 15, 2026 | Quiz 1 (first 15 minutes); nested decisions; indentation; tracing; branch selection | Class06.pdf | Class code (.zip) · Editable slides (.pptx) · Quiz 1 (11:00–11:15 AM, Classes 1–5) · Quiz practice Python Playground (Class 6) · PokéLab Phase II (07–09) |
| 7 | Sep 17, 2026 | Boundary tests; syntax, runtime, and logic errors; systematic debugging; guided practice | Class07.pdf | Class code (.zip) · Editable slides (.pptx) · PA1 due tonight at 11:59 PM in D2L · PA1 guide Python Playground (Class 7) · PokéLab Phase II (10–12) |
| 8 | Sep 22, 2026 | Functions: def, parameters, and return values | Class08.pdf | Class code (.zip) · Editable slides (.pptx) · No quiz today — Quiz 2 moved to Tue Sep 29 · Programming Assignment 2 is out — due Thu Oct 1 (extended), handout Python Playground (Class 8) · PokéLab Phase III (13–15) |
| 9 | Sep 24, 2026 | Void vs. fruitful functions; composing calls; decomposing a program into functions | Class09.pdf | Class code (.zip) · Editable slides (.pptx) · Programming Assignment 2 due Thu Oct 1, 11:59 PM (extended) · Quiz 2 next class (Tue Sep 29), first 15 min, Classes 6–7 Python Playground (Class 9) · PokéLab Phase III (16–18) |
| 10 | Sep 29, 2026 | Local scope: how a function's variables stay inside it | Class10.pdf | Editable slides (.pptx) · Quiz 2 first 15 min, Classes 6–7 · Programming Assignment 2 deadline extended to Thu Oct 1, 11:59 PM Python Playground (Class 10) · Interactive: Local scope visualizer · PokéLab Phase IV (19–24) |
| 11 | Oct 1, 2026 | Function design; parameters are local; debugging programs with several functions | Class11.pdf | Class code (.zip) · Editable slides (.pptx) · Exam 1 review begins Tue Oct 6 (Exam 1: Thu Oct 8) · Programming Assignment 2 due tonight, 11:59 PM Python Playground (Class 11) · PokéLab Phase IV (19–24) |
| 12 | Oct 6, 2026 | Class cancelled (instructor sick) — work through the Midterm 1 practice exam on your own (Classes 1–11) | Midterm 1 Practice Exam (PokéLab) — 6 problems, 100 points, 75-minute timer; use today's class time to do it in one sitting. · Exam 1: Thu Oct 8, ONLINE during class time (see the Oct 8 row) | |
| 13 | Oct 8, 2026 | Midterm Exam 1 — ONLINE (Classes 1–11), during class time 11:00 AM–12:15 PM | Midterm Exam 1 (online) — access code SQUIRTLE. No penalty for going up to 30 minutes over time (submit by 12:45 PM). Closed-book, closed-notes, no AI tools. | |
| 14 | Oct 15, 2026 | Loops: while, for, and range(); accumulator and counting patterns | Class14.pdf | Class code (.zip) · Editable slides (.pptx) · Tue Oct 13: Fall Break, no class Python Playground (Class 14) · PokéLab Phase V: The Loop Trails (25–30) |
| 15 | Oct 20, 2026 | Loops in practice: review, bug hunt, nested loops; lab time in PokéLab Phase V (The Loop Trails) | Class15.pdf | Class code (.zip) · Editable slides (.pptx) · Second half of class: PokéLab Phase V: The Loop Trails (25–30) — finish 25–28 first, then 29 (while until a goal) and 30 (nested loops) Python Playground (Class 15) · Programming Assignment 3 posted today, due Tue Nov 3, 11:59 PM (handout) |
| 16 | Oct 22, 2026 | Strings: indexing, slicing, and traversal; counting, building, and searching patterns over characters | Class16.pdf | Class code (.zip) · Editable slides (.pptx) · Thu Oct 22: university course-withdrawal deadline · Quiz 3 next class (Tue Oct 27), first 15 min, Classes 14–16 — practice questions · PA3 due Tue Nov 3 Python Playground (Class 16) |
| 17 | Oct 27, 2026 | Quiz 3 (first 15 min, Classes 14–16); lists: indexing, slicing, mutability, append/insert/pop/remove, looping, accumulate and build patterns; nested loops over lists | Class17.pdf | Quiz 3 in class (11:00–11:15 AM, Classes 14–16): online quiz (access code given in class) · practice questions Class code (.zip) · Editable slides (.pptx) · Python Playground (Class 17) · PokéLab Phase VI: The Poké Mart (31–36) — 31–32 match today |
| 18 | Oct 29, 2026 | Processing lists: count, sum, search, and min/max patterns; built-ins; lab time in PokéLab Phase VI (The Poké Mart) | Class18.pdf | Class code (.zip) · Editable slides (.pptx) · Second half of class: PokéLab Phase VI: The Poké Mart (31–36) — 34 (search), 35 (max), 36 (build a list) Python Playground (Class 18) · PA3 due Tue Nov 3 |
Assignments & Deadlines
| Assignment | Assigned | Due (D2L) | Points | Handout |
|---|---|---|---|---|
| Programming Assignment 1 — Variables, Types, Expressions & Formatted Output | Thu Sep 3, 2026 | Thu Sep 17, 2026, 11:59 PM | 100 | CSC141_PA1.pdf |
| Programming Assignment 2 — Decisions, Program Design, Testing & Debugging | Fri Sep 18, 2026 | Thu Oct 1, 2026, 11:59 PM (extended) | 100 | CSC141_PA2.pdf |
| Programming Assignment 3 — Loops, Accumulators, Nested Loops & Strings | Tue Oct 20, 2026 | Tue Nov 3, 2026, 11:59 PM | 100 | CSC141_PA3.pdf |
Programming Assignment 1 — what is in it
- Part A (20 pts): predict values and types, trace a short program, explain a
TypeError— answers go inpartA.txt. - Part B (10 pts): write pseudocode before coding Program 2.
- Part C (60 pts): four programs —
time_convert.py,bill_split.py,name_tag.py,free_fall.py. - Part D (10 pts): find and fix three bugs in an AI-written program (
debug_me.py).
Everything you need is in Classes 1–3: print(), input() + int()/float(), the arithmetic operators, and f-strings. Read the full handout for exact output formats and the grading rubric.
How to submit
- Put these six files in one folder:
partA.txt,time_convert.py,bill_split.py,name_tag.py,free_fall.py,debug_me.py. Every.pyfile starts with the header comment (name, date, description) shown in the handout. - Compress the six files into a single ZIP named
Lastname_Firstname_PA1.zip(e.g.Lovelace_Ada_PA1.zip). Do not zip the whole folder tree and do not submit screenshots or Word documents. - Upload the ZIP to D2L → CSC 141 → Assignments → Programming Assignment 1 before Thursday, September 17, 2026, 11:59 PM. You may resubmit as many times as you like before the deadline; only the last submission is graded.
- Check the D2L confirmation email. The D2L timestamp is authoritative.
Programming Assignment 2 — what is in it
- Part A (20 pts): trace a nested decision, find an elif-order bug, explain a runtime error — answers go in
partA.txt. - Part B (10 pts): design boundary test cases before coding Program 2, in
test_plan.txt. - Part C (60 pts): four programs —
grade_bracket.py,library_fine.py,movie_ticket.py,shipping_zone.py. - Part D (10 pts): find and fix three bugs (syntax, runtime, logic) in an AI-written program (
debug_attendance.py).
Everything you need is in Classes 4–7: Boolean expressions, if/elif/else, nested decisions, and boundary testing. Read the full handout for exact output formats and the grading rubric.
How to submit
- Put these seven files in one folder:
partA.txt,test_plan.txt,grade_bracket.py,library_fine.py,movie_ticket.py,shipping_zone.py,debug_attendance.py. Every.pyfile starts with the header comment (name, date, description) shown in the handout. - Compress the seven files into a single ZIP named
Lastname_Firstname_PA2.zip(e.g.Lovelace_Ada_PA2.zip). Do not zip the whole folder tree and do not submit screenshots or Word documents. - Upload the ZIP to D2L → CSC 141 → Assignments → Programming Assignment 2 before Thursday, October 1, 2026, 11:59 PM. You may resubmit as many times as you like before the deadline; only the last submission is graded.
- Check the D2L confirmation email. The D2L timestamp is authoritative.
Programming Assignment 3 — what is in it
- Part A (20 pts): trace a
whileloop with a table, listrange()values, index and slice a string — answers go inpartA.txt. - Part B (10 pts): design test cases for the savings program before coding, in
test_plan.txt. - Part C (60 pts): four programs —
step_counter.py,savings_plan.py,word_stats.py,times_grid.py. - Part D (10 pts): find and fix the three classic loop bugs (no update, accumulator reset inside the loop, off-by-one
range()) in an AI-written program (debug_tally.py).
Everything you need is in Classes 14–16: while and for loops, range(), the accumulator and counting patterns, nested loops, and strings. Programs 1, 2 and 4 need only Classes 14–15; Program 3 uses Thursday's string material. Read the full handout for exact output formats and the grading rubric.
How to submit
- Put these seven files in one folder:
partA.txt,test_plan.txt,step_counter.py,savings_plan.py,word_stats.py,times_grid.py,debug_tally.py. Every.pyfile starts with the header comment (name, date, description) shown in the handout. - Compress the seven files into a single ZIP named
Lastname_Firstname_PA3.zip. Do not zip the whole folder tree and do not submit screenshots or Word documents. - Upload the ZIP to D2L → CSC 141 → Assignments → Programming Assignment 3 before Tuesday, November 3, 2026, 11:59 PM. Only the last submission before the deadline is graded.
Tutorials & Supporting Materials
- Example code from each class is linked in the schedule above (per-class .zip). All-in-one: CSC141_code.zip
- Run Python in your browser (no install needed)
- AI Practice Tutor — explanations, quizzes, practice problems and debugging hints that stick to what we have covered (it won't write your assignments)
- Class-1 Check-in — your first program (ungraded)
- Install Python 3: python.org/downloads · VS Code: code.visualstudio.com