University of Tehran - School of ECE
Advanced Programming
Instructor: Ramtin Khosravi

[About] [Resources] [Grading] [Assignments] [Topics]

About this course

The goal of this course is to teach the students techniques in writing quality programs. After covering top-down program design techniques, students learn object-oriented programming concepts as the means to manage complexity in medium- or large-scale programs. These techniques and concepts are reviewed in a number of case studies from various domains such as program interpretation, simulation, and games. Throughout the course, program correctness is emphasized using unit tests, assertions, and pre- and post-conditions. The focus of the course is more on techniques rather than specific language constructs, yet most parts of the C++ language are covered, as well as the STL library.


The following two textbooks are used during the course.

The assignments and slides presented during classes can be accessed via CECM page of the class. Additionally, the annotated sources of the example programs discussed during the classes can be accessed via Class Notes page.


The final score of the students are computed according to the following weights:

Assignments and Final Project
8 pts
Mid-Term Exam
6 pts
Final Exam
6 pts

Important Notes:


The course emphasizes practices of programming through weekly computer assignments (CAs). The assignments are accessible through the course CECM page. To give the students a chance to review the concepts introduced in the class quickly, there are a series of short assignments during the term. The CAs are tested automatically for correctness and manually for design and style. The final project of the term is scheduled for the last three weeks of the term.