Computational Thinking

A course designed to build algorithmic thinking by manually solving problems and understanding core programming concepts from variables to concurrency.

This course offered a unique, hands-on approach to understanding the fundamentals of programming and algorithmic thinking. Instead of relying on a compiler, we learned to trace the execution of programs manually. This method provided deep insight into how a computer processes instructions. We covered a wide range of topics, starting with basic building blocks like variables and control flow, moving through essential data structures like lists, dictionaries, and graphs. The course concluded with advanced concepts such as object-oriented programming, recursion, and the challenges of concurrent and parallel programming, providing a complete mental model of computation.


Instructors


Course Schedule & Topics

The course is structured over 12 weeks, progressing from basic programming constructs to advanced computational paradigms.

Week Primary Focus Key Topics Covered
1 Programming Fundamentals Variables, initialization, iterators, filtering, datatypes, flowcharts, and data sanity checks.
2 Algorithmic Building Blocks Iteration, selection, pseudocode, algorithms for finding max and min, and the AND logical operator.
3 Procedural Abstraction Non-nested multiple iterations, procedures, parameters, side effects, and the OR logical operator.
4 Complex Iterations Nested iterations, analyzing problems like the Birthday paradox, and data binning techniques.
5 Linear Data Structures Introduction to lists and a fundamental sorting algorithm: Insertion Sort.
6 Associative Data Structures Working with tables and dictionaries (key-value pairs).
7 Graph & Matrix Representations Introduction to graphs and matrices as abstract data types and structures.
8 Graph Implementations Adjacency matrix representation for graphs and edge-labelled graphs.
9 Advanced Algorithms Algorithmic techniques like backtracking, introduction to trees, recursion, and Depth First Search (DFS).
10 Object-Oriented Programming Core OOP concepts: Class, Object, Encapsulation, Abstraction, Information hiding, and access specifiers.
11 Concurrency & Parallelism RPC, cache, multithreading, race conditions, deadlocks, polling, preemption, and producer-consumer problems.
12 High-Level Problem Solving Top-down vs. Bottom-up approaches, decision trees, numerical prediction, behavior analysis, and classification.

Material used