The goal of this repository is to present a course on programming with Python as a more structured, deeper, and more practice-driven learning experience. The materials are being developed week by week over 14 weeks, with each week designed to build understanding through explanation, coding practice, notebooks, assignments, quizzes, and projects.
Peter Oluwafemi Adepoju
Email: petera@aims.ac.za
This course is designed to go beyond passive reading. The focus is on:
- deep conceptual understanding
- step-by-step progression from basics to advanced ideas
- lots of practice and repetition
- programming every concept in Python where possible
- building intuition through examples, exercises, and review
- connecting theory to computation in a clear, practical way
The repository will include:
- weekly schedules
- textbooks and reading materials
- Jupyter notebooks
- Python code examples
- assignments and practice questions
- quizzes and assessments
- projects and review materials
- progress tracking and course resources
Core syntax, the fundamental building blocks of every Python program.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 1 | Foundations | Intro + types | Variables | Strings | I/O + f-strings | Branching |
| 2 | Iteration | while loops | for + range | Nested loops | Approximation | Loop patterns |
| 3 | Functions | Defining fns | Parameters | Return + scope | Docstrings | Fn practice |
| 4 | Recursion | Recursive thinking | Base cases | Call stack | Fibonacci | Mutual recursion |
Working with collections of values and understanding mutability.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 5 | Tuples + Lists | Tuples | Lists | Mutation + alias | List methods | Iteration patterns |
| 6 | Dicts + Mutation | Dictionaries | Dict methods | Nested dicts | Mutable vs immut | Comprehensions |
Writing code that is correct, testable, and maintainable.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 7 | Testing + Debugging | Error types | try/except | Assertions + tests | Debugging strategies | Code quality |
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 8 | Midterm | Review Wk 1-3 | Review Wk 4-6 | Review Wk 7 | MIDTERM EXAM | Debrief + feedback |
Building programs as organized systems of interacting objects.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 9 | OOP I | What is OOP? | Classes + init | Methods + self | Encapsulation | OOP practice |
| 10 | OOP II | Inheritance | super() | Polymorphism | Class design | OOP project |
Thinking rigorously about how fast programs run and why it matters.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 11 | Complexity | Why complexity? | Big-O notation | Best/avg/worst | Common classes | Analysis practice |
| 12 | Searching + Sorting | Linear search | Binary search | Bubble sort | Merge sort | Quick sort |
Modules, files, data, and building complete programs.
| Week | Title | Mon | Tue | Wed | Thu | Fri |
|---|---|---|---|---|---|---|
| 13 | Data + Modules | Modules + import | File I/O | String parsing | Data analysis | Visualization intro |
| 14 | Capstone | Final project | Final project | Final project | FINAL EXAM | Course synthesis |
| Item | Week | Weight |
|---|---|---|
| Daily Quizzes (70 total) | Every weekday | Formative (ungraded) |
| Weekend Assignments (14 total) | Every weekend | Practice |
| Mini-Projects (4 total) | Weeks 3, 6, 10, 12 | Practice |
| Midterm Exam | Week 8, Thursday | 30% |
| Final Exam | Week 14, Thursday | 40% |
| Final Project | Week 14, Mon-Wed | 30% |
- Language: Python 3.10+
- Editor: Jupyter Notebook (primary) or VS Code with Pylance
- Terminal: Any command line (macOS Terminal, Windows Terminal, Linux bash)
This course is designed to be challenging but manageable. If you find a day difficult, don't skip ahead — spend the weekend review time revisiting it. Every concept in this course builds on previous ones. A shaky foundation in Week 2 will make Week 5 genuinely hard. Take your time.
The 2-hour daily sessions are estimated. Some days you may finish in 90 minutes. Others may take 2.5 hours. That is normal and expected.
- Don't just read the textbook — open a Python console alongside it and type every example as you go.
- Do every quiz even if it feels too easy — active recall is how memory is built.
- Finish every weekend assignment before starting the next week.
- Review the previous week's tracker every Monday morning.
- Write comments in your code explaining what you're doing — it forces understanding.
This repository is my own expanded teaching project, developed as an original structured course. The overall motivation and initial inspiration were drawn from MIT OpenCourseWare’s Introduction to CS and Programming Using Python.