| Week 1 | Topic 1: Getting Started
| Lecture: Lesson 1 -
Algorithms and computational problem solving |
| Lecture: Lesson 2 -
Stored Program Computers |
| Lecture: Lesson 3 -
Binary representation |
| Lecture: Lesson 4 -
Programming languages |
| Lecture: Lesson 5 -
Sample Python code |
| Week 1 | Topic 2: Introduction to Python
| Lecture: Lesson 1 -
Data Types in Python |
| Lecture: Lesson 2 -
Operators |
| Lecture: Lesson 3 -
Expressions |
| Lecture: Lesson 4 -
Variables and the assignment operator |
| Lecture: Lesson 5 -
Miscellaneous |
| Week 2 | Topic 3: Selection and Repetition
| Lecture: Lesson 1 -
Motivation |
| Lecture: Lesson 2 -
Selection if, if-else |
| Lecture: Lesson 3 -
Multi-way selection and nested structures |
| Lecture: Lesson 4 -
Repetition: while loops and counters |
| Lecture: Lesson 5 -
Examples |
| Lecture: Lesson 6 -
For loops |
| Lecture: Lesson 7 -
Nested loops |
| Lecture: Lesson 8 -
Boolean variables in loops |
| Lecture: Lesson 9 -
Bisection method |
| Week 3 | Topic 4: Lists, tuples, and strings
| Lecture: Lesson 1 -
List type |
| Lecture: Lesson 2 -
Manipulating lists |
| Lecture: Lesson 3 -
Element distinctness problem |
| Lecture: Lesson 4 -
List copy: alias versus Clone |
| Lecture: Lesson 5 -
Lists and Tuples with Mutable Objects |
| Lecture: Lesson 6 -
For loops |
| Lecture: Lesson 7 -
Nested loops |
| Lecture: Lesson 8 -
Boolean variables in loops |
| Lecture: Lesson 9 -
Bisection method |
| Week 4 | Topic 5: Functions:
| Lecture: Lesson 1 -
Introduction |
| Lecture: Lesson 2 -
Scope of variables and execution stack |
| Lecture: Lesson 3 -
Functions handling lists, tuples, and strings |
| Lecture: Lesson 4 -
Miscellaneous |
| Lecture: Lesson 5 -
Higher-order functions |
| Lecture: Lesson 6 -
Some methods associated with list and str types |
| Week 5 | Topic 6: Files and exceptions
Topic 7: Miscellaneous: plotting, randomness, and Monte Carlo simulation
| Lecture: Lesson 1 -
Files |
| Lecture: Lesson 2 -
Exceptions and Assertions |
| Lecture: Lesson 1 -
Plotting |
| Lecture: Lesson 2 -
Generating random numbers |
| Lecture: Lesson 3 -
Monte Carlo Simulation: approximating 𝜋 |
| Reading: Spyder Debugger -
Spyder Debugger |
| Week 6 | Topic 8: Program Efficiency, Binary Search, and Insertion Sort
| Lecture: Lesson 1 -
Asymptotic Analysis: Theta notation |
| Lecture: Lesson 2 -
Working with Theta |
| Lecture: Lesson 3 -
Time analysis of the element distinctness problem |
| Lecture: Lesson 4 -
Other asymptotic notations |
| Lecture: Lesson 5 -
Time analysis of programs from previous assignments |
| Lecture: Lesson 6 -
Binary search |
| Lecture: Lesson 7 -
Insertion Sort |
| Lecture: Lesson 8 -
Time analysis of some list operations and methods |
| Module II: Recursion and Elementary Data Structures |
|---|
|
| Week 7 | Topic 9: Recursion I: Foundations
| Lecture: Lesson 1 -
Introduction: recursive factorial and recursion stack |
| Lecture: Lesson 2 -
Tracking recursion, indirect recursion, infinite |
| Lecture: Lesson 3 -
Two-way recursion: Fibonacci numbers |
| Lecture: Lesson 4 -
Two-way recursion: tower of Hanoi |
| Lecture: Lesson 5 -
Recursive binary search |
|
| Week 8 | Topic 10: Recursion II: Merge Sort, Divide-And-Conquer, And Solving Recurrences
| Lecture: Lesson 1 -
Merge Sort |
| Lecture: Lesson 2 -
Merge Sort time: recurrence and recursion tree |
| Lecture: Lesson 3 -
Comparison of Merge Sort with Insertion Sort and |
| Lecture: Lesson 4 -
Additional recursion tree examples |
| Lecture: Lesson 5 -
Master Theorem |
| Lecture: Lesson 6 -
Ternary Search |
|
| Week 9 | Topic 11: Data structures digression: Lists Of Lists, 2-Dimensional Lists, Dictionaries, And Stacks
| Lecture: Lesson 1 -
Lists of lists |
| Lecture: Lesson 2 -
2-dimensional lists |
| Lecture: Lesson 3 -
Dictionaries |
| Lecture: Lesson 4 -
Applications of dictionaries |
| Lecture: Lesson 5 -
Stacks |
|
| Week 10 | Topic 12: Recursion III: Applications: Enumeration, Randomized Quick Sort, Maze DFS Traversal
| Lecture: Lesson 1 -
Application of recursion: enumeration: generate all |
| Lecture: Lesson 2 -
Another enumeration problem: generate all |
| Lecture: Lesson 3 -
Quick Sort |
| Lecture: Lesson 4 -
Randomized Quick Sort |
| Lecture: Lesson 5 -
Maze DFS traversal |
|
| Module III: Object Oriented Programming and Applications |
|---|
| Weeks 11-12 | Topic 13: Classes and Object Oriented Programming
| Lecture: Lesson 1 -
Object oriented programming |
| Lecture: Lesson 2 -
User defined classes |
| Lecture: Lesson 3 -
OOP machinery |
| Lecture: Lesson 4 -
OOP concepts |
| Lecture: Lesson 5 -
Inheritance |
| Lecture: Lesson 6 -
Miscellaneous |
|
| Week 12 | Topic 14: Stacks and Queues
| Lecture: Lesson 1 -
Stack class derived from list |
| Lecture: Lesson 2 -
Queue class: circular implementation |