• Lectures
    1. Overview
    2. Introduction to Python
    3. Sequences and loops
    4. Functions, procedures, and effects
    5. List comprehension
    6. Dictionaries
    7. Generics
    8. Pattern matching
    9. Recursion
    10. Higher order functions
    11. Data Classes
    12. Functional programming
    13. Unit Testing and Type Checking
  • Tutorials and Practicals
    1. Getting started [sources] [solution]
    2. Simple functions and conditional branching [sources] [solution]
    3. Working with lists [sources] [solution]
    4. Lists, Exceptions, Strings [sources] [solution]
    5. Generic functions [sources] [solution]
    6. Dictionaries, Recursion [sources] [solution]
    7. Higher order functions [sources] [solution]
    8. List comprehension [sources] [solution]
    9. Structural Pattern Matching (tutorial) [sources]
    10. Structural Pattern Matching (Quick Intro) [sources]
    11. Recursion on lists [sources] [solution]
    12. Binary Trees [sources] [solution]
    13. Part I: Abstract Syntax Trees [sources] [solution]
    14. Part I: Python ast module [sources]
    15. Part I: Dynamic typing [sources] [solution]
    16. Part I: Static typing [sources] [solution]
    17. Part II: Code coverage [sources] [solution]
    18. Part II: Design-by-contract [sources] [solution]
    19. Part II: A simple PBT framework
    20. Part II: Python libraries for testing [sources]
    21. Part II: PBT with Hypothesis