Skip to content

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, and I hope these can complement learning for beginners or for those who don't feel ready to take on proper word problems like on LeetCode or Kattis.

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
02 Selection Statements and Loop Structures Lab 02
03 Functions and Variable Scope Lab 03
04 Sequences Part 1: Lists and Tuples Lab 04
05 Sequences Part 2: Sets and Dictionaries Lab 05
06 File I/O Lab 06
07 Iteration and Recursion Lab 07
08 Multi-dimensional Arrays Lab 08
09 Searching and Sorting Algorithms Lab 09
10 Higher-Order Functions (HOF) Lab 10
11 Map, Filter and Reduce Lab 11
12 Principles of Object-Oriented Programming Lab 12
13 Exception Handling Lab 13
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).


  1. 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. 

  2. 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).

    While it is often encouraged to have ample amounts of practice with problem-solving exercises when it comes to learning how to program, I will be approaching it from a more inquisitve approach; basically, my intention with the labs is to allow learners to explore their tools first and allow them to observe some simple implementations in deeper detail, all before they use them to solve problems. Some of the lab activities will entail creating a mini-program from scratch instead, producing something perhaps more tangible than with solutions for cold hard problems like one may find on Kattis or LeetCode. That being said, the intention is not to dismiss the importance of that way of learning programming - I just think there's more to that than merely solving word problems.

    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.