Instructors:
Adam Dingle (lecture)
Tomáš Bílý, Vít Šefl (tutorials)
This course is a fast-paced introduction to programming and basic data structures, with a strong emphasis on learning to write working code. It assumes no previous programming experience. The course uses the Python programming language.
Throughout the course students will complete many programming exercises in Python, solving a wide variety of programming problems.
The weekly lecture for this class takes place every Wednesday from 12:20 - 13:50 in room S9.
There are two tutorial sessions:
every Tuesday from 9:50 – 11:20 in room N11 (teacher: Vít Šefl)
every Thursday from 12:20 – 13:50 in room N11 (teacher: Tomáš Bílý)
Danial Mohebbi will hold a programming mentoring session every Thursday at 15:40 in room N9.
Adam Dingle will hold office hours every Friday from 13:00 - 14:00 at his office (room 405), starting on Friday, October 9.
This is a pass/fail course: you will not receive a numeric grade.
To pass this class, you must fulfill the following requirements by Friday, February 12, 2027 at the end of the exam period:
Complete a number of programming exercises through the semester. The tutorial teachers will assign these exercises weekly, and you can submit your solutions to the ReCodEx automated grading system. To pass, you will need to earn at least 70% of the total possible points.
Pass a written test at the end of the semester.
Write a program in Python as a semester project. Your program should accomplish something that is interesting, cool, or fun and can be 100-300 lines long, or longer if you like. Here are some project ideas. Please send your tutorial teacher a 1-2 paragraph project proposal by Sunday, December 6. A first working version of your project is due by Sunday, January 17 and a final version by Sunday, January 24.
Regularly attend the lectures and tutorials and participate in class.
You may not use ChatGPT, Copilot or other AI tools to generate any code or documentation that you submit in any homework assignment or semester project in this course. Any use of such tools is considered cheating and may disqualify you from passing the class.
Eric Matthes, Python Crash Course, 3rd Edition (No Starch Press, 2022)
Bill Lubanovic, Introducing Python, 3rd Edition (O'Reilly, 2025) (PDF available for purchase here)
John V. Guttag, Introduction to Computation and Programming Using Python, 3rd Edition (MIT Press, 2021)
Al Sweigart, Invent Your Own Computer Games with Python (No Starch Press, 2017)
This is a rough map of the ground we plan to cover in this class. (It will probably evolve as the semester goes on.)
input()
and print() functions. Conditional
statements: if and else.
elif. Comments. while
loops. for
loops.
Ranges.
break
statement.
More
about IDEs. Chained
comparisons. More
about ranges. The
continue
statement.
Math functions. Random numbers. ASCII and Unicode. chr()
and
ord().
String functions/operators. String indexing and slicing.
with
statement.
Lists. List indexing and
slicing. List operations.None.
Local and global variables. Passing by value and reference.
Command-line arguments. Recursion. The Tower of Hanoi.__init__.
Writing methods.__repr__.
Magic methods for operator overloading.
map and filter.
max() and sort()
with key functions. Lambda expressions.
nonlocal
keyword. Debugging. Software testing. Unit tests. Pytest.