CMSC 202 -- Syllabus


Absolute C++, Second Edition by Walter Savitch
Addison Wesley Publishing, ISBN: 0-321-33023-4

Recommended Books

C++ Coding Standards, 101 Rules, Guidelines, and Best Practices by Herb Sutter and Andrei Alexandrescu
Addison Wesley Publishing, ISBN: 0-32-111358-6

Also see the list of C++ reference books

Course Description

This course continues the development of programming and problem-solving skills, focusing on the C++ programming language, object-oriented programming and design (OOP/OOD), and improved programming practices. Topics include: Abstract Data Types (ADTs), an introduction to the C++ programming language including string and vectors, encapsulation and information hiding, inheritance and polymorphism and templates. Improved programming techniques including adherence to programming standards is also an important part of this course.
Programming projects for this course will use the C++ programming language. Prerequisites: CMSC 201 and MATH 151.

CMSC Gateway

For students who enrolled in college for the first time in Summer 1998 or later, you have two choices: pass both of CMSC 201 and CMSC 202 with a grade of B or better or don't graduate as a CMSC major. The registrar has very specific rules about repeating courses in sequence; for example, if you were to have a C in 201 and then take and pass 202 expecting to retake 201, you can't. Since the classes form a sequence, you cannot retake an earlier class in the sequence once you've passed a later one. Also, note that all University deadlines (for adding or dropping courses, changing grading method, etc.) will be strictly enforced, so make sure you are familiar with these.


The objectives of this course are:

Lectures and Readings

You are expected to attend all lectures for this course. Although both classes will cover the same general topics, you are responsible for the specifics given during your section. You are expected to attend all laboratory sessions, and you are responsible for all material presented there.

You are responsible for all material covered in class, even if it is not in the textbook. You are responsible for all material in the readings, even if it is not covered during class. If you should happen to miss a lecture or a lab, you are responsible for getting any missed notes or announcements from a classmate.

Assignments and Grading

Grading Criteria

Your grade in this course is based on projects, lab assignments and exams, which are discussed in more detail below. 1 Midterm = 25% 1 Comprehensive Final Exam = 25% 10 Lab Assignments (1% each) = 10% 2 Homeworks (2.5% each) = 5% 5 Projects (7% each) = 35% Letter grades will follow the standard scale: 0 <= F < 60, 60 <= D < 70, 70 <= C < 80, 80 <= B < 90, 90 <= A <= 100 Your grade is based on timely work accomplished during the semester; incomplete grades will only be given for medical illness or other such dire circumstances (almost never).

Project grades will be mailed to your UMBC email account. The Midterm exam will be returned to you either in lecture or in lab.

Regrade Requests

If you feel the grader has made a mistake on your Project or Exam, you may choose to request a regrade. Regrades are given at the discretion of the Instructor/TA. After each grade is returned, there is a grace period of one (1) week during which you may discuss any problems you have with your grade. After that time, your grade will stand. Regrades will incur a 10-point penalty.

Students in sections 0101 - 0106 (Ms. Wortman) must discuss grade changes with Ms. Wortman.

Students in sections 0201 - 0206 (Mr. Raouf) should discuss grade changes with their TA.

No grade change requests will be granted via email.


All CMSC 202 lab sessions are led by your TA. Check the lab schedule for the time and location of the lab session for your section. During the lab sessions, you will be given short programming assignments which relate to the current topic being discussed in class and may be usable in the current project. To recieve credit for attending the lab and completing the lab assignment, your work must be verified by the TA.

Each lab has an associated set of "Prelab Questions" that must be completed before attending lab. You will not receive credit for lab if you have not completed the prelab.

It is our intent to offer more than 10 lab assignments during the semester, schedule and weather permitting. If more than 10 lab assigments are offered, then the 10 best lab grades will be counted.

All lab assignments must be completed during your assigned lab time. You must attend your assigned lab section.

TAs will be present at your lab to explain the lab assignment, help with assignment as needed and record your successful completion of the assignment.

Lab assignments are graded on a scale from 0 to 3 at the discretion of the TA


The critical programming skills cannot be learned simply by attending the lectures. You should budget enough time to work on the projects as well. Projects are due before midnight of the due date.

Projects that are up to 24 hrs late will receive a 25% penalty.
Projects greater than 1 day late will receive a zero.

There will be five graded projects, each counting for 7% of your final grade. In addition, Project 0 is a mandatory ungraded project. The purpose of Project 0 is NOT to make sure you know how to use the submission system, but rather to make sure that the submission system is prepared to accept projects from your account. If you fail to submit Project 0, no future project submissions will be possible and your grade for those projects (which ARE graded) will suffer.

Network and computer failures at UMBC are a fact of life. They are out of your control and out of our control. However, they are not an excuse for a project to be submitted late, nor are they a reason for project deadlines to be extended, even if the outage occurs on the due date. Plan accordingly. Waiting to submit your project until 5 minutes before your project is due is a recipe for disaster. In the event of network outages or computer failures you are still responsible for submitting your projects on time. There are labs on campus even if your dialup or ResNet connections are down. Also, it is your responsibility to take care of any problems with your account, such as quota overages, which interfere with your ability to complete and submit projects for the course. Project extensions will not be given for such problems.


Every project must be submitted with a makefile. It is to be named either makefile or Makefile (your choice). No other names are acceptable for your makefile. The grader will compile and link your submitted project by typing 'make ProjN' (where N is the project number), so your makefile must correctly compile and link your project. This includes correct naming of the executable; the executable file produced for Project n must be named Projn ; no other names for the executable are acceptable (note the uppercase P).

A number of tutorials on makefiles are available. One is the an excerpt from the GNU tutorial.

Project Compilation

All projects must compile and link on UMBC's Linux system using the g++ compiler/linker. To ensure you are accessing Linux, log on to Do not develop your projects on the Irix machines (; different compilers are installed on the two systems, and what compiles on one may not compile on the other. All students must use the g++ compiler in the directory /usr/local/bin. You should do the following to insure you are using the correct compiler: To check that you are using the correct g++ compiler, execute the command which g++. The response should be /usr/local/bin/g++ .

Further, the compiler switches -ansi and -Wall must be used when compiling. These must be included in your makefile rules and used whenever you compile "by hand" (e.g. /usr/local/bin/g++ -ansi -Wall MyProgram.cpp)

Note that to use the Linux gdb debugger, you should also compile with the -g switch.

Design Assignments

Some projects will include a design/test assignment. The purpose of this assignment is to spend some time thinking about the design of your project before actually implementing it and to consider how your program should be tested. Generally, the design/test assignment for a project will be due a week before the project itself. You will be graded not only on the merits of your design, but on whether or not you actually follow your design in the implementation of the project. Designs will be submitted electronically just like source code files; late design/test assignments are not accepted. More details will be provided with the first project assignment.


Follow the same policies as Projects. Homework assignments are worth 2.5% of your final grade.


There will be two (2) exams -- one midterm exam and the comprehensive final exam. (Note that the last exam is given during the scheduled final exam time for the class.) Make-ups for exams are given under only the most dire circumstances (such as hospitalization). Exams must be taken with your lecture session.

Unless otherwise noted, all exams are closed-book, closed-notes. A picture ID is required to take the exam.

Review questions for the exams will be made available approximately one week prior to the exam.

Course BlackBoard

A BlackBoard site has been created for this course. This site is used primarily to support discussion boards, but announcements and helpful course documents are are also posted there.

A discussion board will be established for each programming project. Students are encouraged to post general project questions, answer questions posted by other students or just browse the discussion board to find answers to project questions. Your instructors and TAs will also be posting questions and answers. Your questions may be posted anonymously.

A FAQ sheet found under "Course Documents" will also be created for each project. Students are encouraged to view this document before posting a question about the project.

Other discussion boards for topics such as general C++ questions will also be established. The course BlackBoard is accessed by logging on to and clicking on the Blackboard tab at the top of the page.

If you have difficulty accessing the course blackboard site, you can "self enroll" as a student in the course. To enroll for the course click on the courses tab in the Blackboard web site, and then select the Computer Science hyperlink under the Course Catalog section. Then select the enroll button for the current semester's course. Refer to this link for more information.
If you're still having difficulty, email your instructor.

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 UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory. The UMBC Student Academic Conduct Policy is also online.

All projects must be completed by your own individual effort. You should never have a copy of someone else's project either on paper or electronically under any circumstance. Also, you should never give a copy of your project, either on paper or electronically, to another student. This also means that you cannot "work" on the project together. Cases of academic dishonesty will be dealt with severely.

If you need help with your project, see your instructor, your TA, the Computer Science Help Center (room ITE 201E), or tutors provided by the Learning Resource Center.  We also encourage you to consult your textbook and the course web pages.

Having someone else's project (even a small part) in your possession, even briefly, is forbidden. Safeguard your account password; you are responsible for the actions of anyone else you may allow to log into your account.

Safeguard hard copies of your programs; excuses such as "I must have left a copy of my code in the lab where someone else must have found it" will not be accepted.

Your project will be checked for similarities with all other student projects. If your project is found to be "substantially similar" to that of another student, or if it is determined that someone else wrote your project for you, then at a minimum you and the other student (if applicable) will receive a grade of zero for that project and 10 point deduction in your semester average. Furthermore, all parties concerned will have their prior projects re-checked for cheating. Any second incident will result in a grade of 'F' for the semester. Also, checking for cheating may occur at any time during the semester. Therefore, if you cheated on Project 1, you may be confronted about that at any time; receiving a grade for a project does not mean you are "in the clear".

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.

Email Policies

Email is great -- much better than voice mail. If you need to contact your instructor about this class outside of lecture and office hours, email is much better than the telephone. You should, however, observe the following etiquette:

In addition, due to the volume of student email during each semester, please note the following: