UMBC, CMSC202 Computer Science II, Spring 2007

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.


Other good C++ books are listed under Resources.


The formal prerequisites for this course are CMSC 201 Computer Science I and MATH 151 Calculus I (or their equivalents). From CMSC 201 you should have mastered the concepts and skills in the following table. If you are unfamiliar with a significant number of these skills and/or concepts, you should take CMSC 201.

Concepts Skills
functional/procedural abstraction writing functions
top-down design using header files
separate compilation character and string handling
libraries basic pointer manipulations
abstract data types pointers as parameters
dynamic memory allocation file I/O
recursion writing recursive functions
searching and sorting structures
  linked lists, stacks and queues


Your grade for this course will be based on 5 programming projects, 2 midterm exams, the final exam and on grades from the discussion sections (see below). The weighting of these scores are:

Discussion: 1 point x 12 = 12 points
Projects: 7 points x 5 = 35 points
Midterm Exams: 15 points x 2 = 30 points
Final Exam: 23 points x 1 = 23 points

Your final letter grade is based on the standard formula:

0 ≤ F < 60,   60 ≤ D < 70,   70 ≤ C < 80,   80 ≤ B < 90,   90 ≤ A ≤ 100.
Your grade might be curved upward, but under no circumstance will your grade be curved downward. Your grade is given for timely work done during the semester; incomplete grades will only be given for medical illness or other such dire circumstances.

Discussion Section Grades

Attendance and participation in the discussion section is required. After each meeting, each student will be assigned a grade by the teaching assistant. This grade will be on a 10-point scale reflecting the student's attendance, participation in the discussion and completion of the lab exercise. Since 14 meetings of the discussion sections have been scheduled (see list of lab exercises), it is possible to earn 2 points of extra credit from the discussions. However, if one or two discussion sections are canceled due to inclement weather, those points will not be made up. (I.e., you cannot earn extra credit from snow days.)

Lectures and Readings

You are expected to attend all lectures for this course. Although both instructors will cover the same general topics, you are responsible for the specifics given in your lecture section. You are expected to attend all discussion 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 textbook 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.

Programming Project Policies

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.

Late submissions

Projects that are up to 24 hrs late will receive a 25% penalty.

Projects more than 1 day late will receive a zero.

Project 0

In addition to the 5 graded projects, 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 Outages

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.

A Standard C++ Compiler

Despite the ANSI C++ standard, there are differences among these many C++ compilers available. We will use the g++ compiler in /usr/local/bin/ directory of the GL systems using the compiler switches -ansi -Wall. Thus, you should compile your programs using an instruction like:
/usr/local/bin/g++ -ansi -Wall project1.cpp
To save yourself typing "/usr/local/bin/g++ -ansi -Wall" you should use a Unix alias and/or a makefile to compile your projects.

Regrade Requests

There are two kinds of regrade requests for programming projects.

The first kind is a grade correction and you must claim that the grader has made a factual error in the grading of your programming project. Requests for a grade correction must be discussed in person with the teaching assistant of your discussion section within one week of receiving your project grade.

The second kind is a resubmission request. In this case you are claiming that a very small error in your programming project has caused you to lose a large number of points. As a rule of thumb, you must be able to correct your program by changing fewer than 5 lines of code. You must discuss the resubmission request in person with your TA who has the discretion to grant or deny your resubmission request. You must make your request within one week of receiving your project grade. If your resubmission request is granted, your project will be regraded with a 10-point penalty. Thus resubmission requests will only be considered in cases where you could improve your project grade by more than 10 points.

Projects and Academic Conduct

In this class, all programming projects must be completed by your own individual effort. You should never have a copy of someone else's project (in part or in whole) 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.

Thus, you should:

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.

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 a 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".

All incidents of academic misconduct 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.

The full text of the Student Academic Conduct Policy is available from the Provost's Office:

Computer Science Gateway

All computer science majors and some computer engineering majors are required by the Gateway to earn a grade of at least "B" in CMSC 201 and CMSC 202 in order to stay in their major. If you fall under this gateway requirement and you received a grade of "C" or lower in CMSC 201, then you must retake CMSC 201 prior to completing CMSC 202. This is because the Registrar's Office considers (correctly) CMSC 201 and CMSC 202 as a sequence and will not allow you to retake CMSC 201 after you have completed CMSC 202.

From the "Academic Requirements and Regulations" section of the Undergraduate Catalog, under "Repeating Courses":

... students may not repeat a course for a higher grade once they have completed any subsequent course of a higher level in an academic sequence (for example, students may not retake FREN 101 after successfully completing FREN 102).
This same section of the catalog also states that "students may not register for a course more than three times."

Email Policy

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:

[CSEE] | [CMSC202] | [Spring '07 CMSC202]             Last Modified: 26 Jan 2007 03:47:30 EST