Computer Programming I (Python)

An Introductory Python Course for Math Students

Welcome to Computer Programming I (Python). This site brings together the lecture notes, computational labs, and supporting materials for the course.

Note

Quick links:

Course at a Glance

  • Format: 4 comprehensive modules covering fundamentals to advanced topics
  • Tools: Python, NumPy, Jupyter, VS Code
  • Main goal: Learn programming through practical application and problem-solving

Learning Approach

  • Start from the basics and progressively build complexity
  • Move from theory to practice through interactive code examples
  • Compare different approaches to solving the same problem
  • Apply concepts through assignments that extend lecture examples into independent investigations

Course Map

What You Will Build

Across the course you will implement and experiment with:

  • Python fundamentals: variables, control flow, functions, recursion, and scope
  • Data structures: lists, tuples, sets, dictionaries, and iteration patterns
  • Practical algorithms: recommendation systems, traveling salesman, Parrondo’s paradox, Sudoku solver
  • Numerical computing: NumPy arrays, vectorization, linear algebra, statistics
  • Real-world applications: image processing, MNIST digit recognition, cryptography (RSA)
  • Professional tools: IDEs, debugging, code organization, and best practices

How to Use the Material

  • Read each module overview first so the learning goals and structure are clear
  • Work through the lessons in order before attempting assignments
  • Run every code example yourself - don’t just read them
  • Complete all exercises before moving to the next topic
  • Return to earlier modules when a later topic builds on previous concepts
  • Use review sessions to consolidate your understanding

Where to Go Next