Programming Fundamentals (Python)¶
The lab activities are new.. sorta, but I never used them formally in class before. These stem from my short experience tutoring ITS30705 Introduction to Algorithm in Taylor's College in the Aug 2022 semester, as well as being a teaching assistant for IT5001 Software Development Fundamentals in NUS. The latter of the two is more strenuous, and it feels more whole than the former which feels more suitable for secondary school students1. This inspired the name I gave to this set of lab exercises.
As mentioned, these lab activities were never used formally in class before. They may be derived from the material I got to use during classes2 (but not exactly - NUS has a clause for distributing class material externally). I will try my best to make them as digestable within the weeks they have been allotted into.
If you would like to follow along in a semester syllabus structure, here's what I can suggest (and plan to follow; may change as I craft out the lab exercises):
| Week | Lesson | Lab |
|---|---|---|
| 01 | Introduction to Python Programming and Basic Syntax | Lab 01 (coming soon) |
| 02 | Selection Statements and Loop Structures | Lab 02 (coming soon) |
| 03 | Functions and Variable Scope | Lab 03 (coming soon) |
| 04 | Sequences Part 1: Lists and Tuples | Lab 04 (coming soon) |
| 05 | Sequences Part 2: Sets and Dictionaries | Lab 05 (coming soon) |
| 06 | File I/O | Lab 06 (coming soon) |
| 07 | Iteration and Recursion | Lab 07 (coming soon) |
| 08 | Multi-dimensional Arrays | Lab 08 (coming soon) |
| 09 | Searching and Sorting Algorithms | Lab 09 (coming soon) |
| 10 | Higher-Order Functions (HOF) | Lab 10 (coming soon) |
| 11 | Map, Filter and Reduce | Lab 11 (coming soon) |
| 12 | Principles of Object-Oriented Programming | Lab 12 (coming soon) |
| 13 | Exception Handling | Lab 13 (coming soon) |
| 14 | Modules | n/a |
It is tempting to mirror the exact way how IT5001 is conducted, but I think it would be better to follow through an actually packed 14-week structure without leaving weeks empty to simulate the same structure (i.e., Week 8 would have been midterm week, and there are only 13 weeks of classes not counting the recess week in NUS's semester structure).
- The course instructor at the time of me typing this out likened IT5001 to a very tough Super Mario level made in Mario Maker 2 vs. the first level in any Super Mario Bros. game. Yep, I see it.
- I never spearheaded this course before, so what's here has not been trialed in class before! But the best part? - No need to keep it at the same intensity!
-
I have a rant about the state of the mods in Taylor's, but I think I'd keep it for a more appropriate time and place to voice such views.. not right here, though. ↩
-
ITS30705's problem sets were very elemental, and do not really do much other than prompt students to regurgitate what they could absorb during the 2-hour lecture prior. IT5001, however, conducts its 1-hour lab sessions in a tutorial-like structure, where students are greeted with yet another presentation that either reinforces taught concepts during lecture or working through worksheets. The aim of these lab exercises I created here are to be less focused on problem sets (like one would find in websites like Kattis or LeetCode), and something more akin to the Scientific Method (very present at research level, and no one really notices it until they get to a research project).
I do have code repositories where I contain my attempts (and of which I frequently fail) for Kattis and LeetCode exercises in GitHub repositories. Feel free to have a gander, or if you're looking for practice questions in that sort of style, you may want to look there instead. ↩