Object-Oriented Programming at MIPT
Designed and taught an annual programming course for second-year students. 80+ students over four years.
I became involved in teaching early in my time at MIPT, first as a mentor at TechnoTrack, a joint programme by Mail.Ru Group and MIPT, and later teaching school students at MIPT’s Evening School. This eventually led me to teaching my own C++ and object-oriented programming course for second-year students.
I have never been particularly fond of programming contests and tests as a way of learning software development. After my first year of teaching, I began rebuilding the course around project work instead.
During the first semester, students learned C++ by building games directly. In the second, they revisited the same problems by designing reusable game, graphics and physics engines. Code that had previously been scattered throughout a game could now be expressed through much smaller and clearer programs built on top of those abstractions.
The main idea of the course was one constraint: students could not use their own engines for the final games. Teams exchanged them. This made interfaces and design decisions matter to somebody other than their authors, while giving students experience integrating unfamiliar code and dealing with the practical relationship between a software developer and their users.
Course materials
Selected lecture slides from the course: