Course Description

This course will teach object-oriented programming and design using C++. Basic knowledge of C is assumed (as taught in the refresher module); although an interested student can pick up the content as things are taught. The goal is to ensure that students are able to write large programs as they complete this course. The first half of the course will teach basics of object-oriented programming and C++. The second part of the course will go deeper into systems aspects of software engineering. The entire course is compulsory for all MTech(CSE) students as a 4-credit course. For MTech(ECE) students, the first half of the course (as 2-credit course) is compulsory, whereas the second part is optional. For PhD students, this course counts towards the credits requirements.

A key feature of this class is that it will focus on utilizing at least some of the newest features of C++. Thus, we are explicitly referring to books that have the features of C++-20 in mind.


Please note that while these concepts would be introduced in the refresher module and/or tutorials, but it would be easier for students who are comfortable with these concepts.

  • Fundamentals of C and Data Structures
  • Basic understanding of UNIX environment (for the 2nd half)

Reference Material

Please note that using the reference materials is NOT a substitute for attending the classes.

  • Object-Oriented Programming with C++, by Dorothy R. Kirk [DRK]
  • C++-20 for Programmers, by Deitel & Deitel [DAD]
  • Missing semester course [MI]

Class Timings and Office Hours

  • Classes every Monday and Wednesday from 7-7:30pm (attendance is not mandatory)
  • Office hours every Thursday from 5-6pm (occasionally will be moved to 6pm if students are busy)

Weightage of Points

  • Assignments – 30 (6 + 8 + 8 + 8)
  • Midterms – 20
  • Final Examination – 30
  • Project - 20

For students who are taking only the first half of the course, there will be two assignments, the midterms and a mini-project carrying 16 points.

Course Content

The overall structure of the course is described in the table. Please note that this is a rough structure and the structure might be modified depending on the feedback of students. We plan to provide 1-2 programming questions in each class that would be used to reinforce the concepts. While these are not graded, answering these questions would help students to handle the assignments.

Class Number Content Exercises
1 Introduction to the class, procedural programming and object-oriented programming, advantages and disadvantages of C++, setting up of environment, the first C++ program run a simple C++ program
2 A guide to version control, centralized and distributed version control, using git and github, concept of IDE, static and dynamic librarires, creating a simple library creating a static and dynamic library file
3 Additional tutorial to set up git and github repositories, IDE, ensure that students can run a simple C++ program  
4 Revisiting the concepts of OOP, classes, concept of private and public member A simple program with a class having private and public data member. Try accessing them from both within and outside a class function.
5 String and file handling in C++, taking user inputs Assignment 1 handed out
5 Pointers and References, const and constexpr  
7 Inheritance  
8 Private, protected and public members Assignment 2 handed out
9 Polymorphism, function overloading and operator overloading  
10 Abstract classes and virtual functions  
12 Further discussions on data aggregation and association  
13 Exception Handling  

Plagiarism Policy

Please note that we are obliged to report any instances of plagiarism to the examinations department of the institute. Plagiarism is taken very seriously, and action is taken according to the policy of the institute.