Course Description

This course continues the student’s development of programming and problem-solving skills by providing an introduction to object-oriented design and programming (OOP). The primary focus is on OOP principles and techniques, including encapsulation, aggregation, inheritance, and polymorphism. Other OOP topics such as exception handling and templates are also covered. This is the second course for students interested in pursuing further study in computer science.

Programming projects for this course will use the C++ programming language and the Emacs programming environment.

Prerequisites: CMSC 201 (with a "B" or better) and MATH 151 (with a "C" or better)

Course Outcomes

The expected outcomes of this course are:


The textbook for this course, Absolute C++, Sixth Edition, by Walter Savitch, is required. Although many of the essential topics will be covered in lecture, the textbook provides greater detail and additional examples. You will be expected to read the textbook.


The course will cover the following topics; additional topics may be covered as time permits.


The online schedule includes lecture topics, midterm and final exam dates, project due dates, and lab dates.


Lecture slides will be posted on-line at least one day before they are covered in class. They are linked from the course schedule or can be accessed directly from Blackboard.

You are expected to attend all lectures. Although all sections will cover the same general topics, you are responsible for the specific details and announcements given during your section, even if the material is not included in the on-line lecture slides. If you miss a lecture, you are responsible for getting any missed notes or announcements from a classmate.

Grading Criteria

Your grade will be based on exams, lab assignments, and projects with the following weights:

Reading Quizzes 5%
Exam 1 10%
Exam 2 15%
Comprehensive Final Exam 20%
Lab Average (best 10 of 13) 10%
Project Average (five projects) 40%

All grades will be posted on Blackboard.

Letter grades will be assigned according to the standard ten-point scale: A ≥ 90, 90 > B ≥ 80, 80 > C ≥ 70, 70 > D ≥ 60, 60 > F. Incomplete grades will only be given in the case of severe illness or major personal emergency.

Reading Quizzes

Brief on-line quizzes will be given to test your understanding of assigned readings. The exact number of quizzes is still to be determined, but there will be at most one quiz per week. Quizzes must be completed before the start of class on the due date; you will be allowed two attempts at each quiz.


There will be two midterm exams and a comprehensive final exam. Exams must be taken with your usual lecture section. The comprehensive final exam will be given to all students at the same time (see the course schedule for the time and place of the final). Make-ups for exams are given under only the most dire circumstances.

See the exams page for additional policies and review materials.

Required Labs

Required lab sessions provide you with practice writing code, learning to use programming tools, and other course and project related skills.

There will be 13 labs assigned over the course of the semester; your best 10 scores will be used to compute your lab average. All lab sessions are led by TAs. To receive credit for attending the lab and completing the lab assignment, your work must be verified by your TA.

See the lab page for additional policies, grading criteria, and the lab schedule.


Critical programming skills cannot be learned simply by attending the lectures. There will be five graded projects totaling 40% of your final grade. The due date and time for each project can be found on the course schedule.

See the projects page for additional project policies, grading criteria, and project descriptions.

Office Hours

All Instructors and TAs will hold weekly Office Hours.

All TA Office Hours will be held in ITE 240. TAs will be available to answer questions and to provide assistance on projects. Office hours are available to all CMSC 202 students and operate on a first-come, first-served basis. ITE 240 is open to all students enrolled in any course where programming is taught or programming projects are required, such as CMSC 201, 202, 313, 341, 421, and possibly others. While many TAs can assist you with C/C++ questions, only the CMSC 202 TAs will have specific knowledge about your programming assignments. We recommend that you plan to use ITE 240 when CMSC 202 TAs are scheduled.


All grades and course-wide announcements will be posted on Blackboard.

Email Policy

Please reserve email for topics that cannot wait until class or office hours. For example, if it is the day a project is due, and you have a family emergency, it is appropriate to send me an email so that I know you will not be able to complete the project on time (of course, you'll still need to provide documentation of the emergency!). Questions about course content will be answered in class unless there is a clear need for a quicker response.

Academic Conduct Policies

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC’s scholarly community in which everyone’s academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the Academic Integrity Resources for Students page or the Faculty Handbook (Sections 14.2-14.3).

If you need help with a project, see your instructor, your TA, or tutors provided by the Learning Resource Center. We also encourage you to consult textbooks and the course web pages. Consult the projects page for additional Academic Integrity policies for projects.

Any act of dishonesty will be reported to the University’s Academic Conduct Committee for further action, which may include, but is not limited to, academic suspension or dismissal from the University.