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)
The expected outcomes of this course are:
- Improved problem solving abilities
- Improved program design skills
- Improved coding skills
- Understanding the fundamental programming concepts of abstract data types
- Understanding the fundamentals of the object-oriented programming paradigm
- Improved ability to test and debug programs
The textbook for this course, Absolute C++, Fifth Edition, by Walter Savitch, is strongly recommended but not required. Although many of the essential topics will be covered in lecture, the textbook provides greater detail and additional examples.
The course will cover the following topics; additional topics may be covered as time permits.
- Object-oriented design concepts
- Classes and objects
- Encapsulation and data hiding
- C++ programming language syntax and semantics
- Basic C/C++ syntax
- Functions in C/C++
- Pointers in C/C++
- Object-oriented programming features and concepts
- Application of Object-oriented design concepts in C++
- Constructors and Destructors
- Operator overloading
- Copy constructors
- Templates and the Standard Template Library
- Program construction techniques
- Unit testing
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.
Your grade will be based on exams, lab assignments, and projects with the following weights:
|Comprehensive Final Exam||20%|
|Lab Average (best 10 of 12)||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.
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 lab sessions provide you with practice writing code, learning to use programming tools, and other course and project related skills.
There will be 12 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.
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. Lecture slides will be posted on Blackboard and linked from the course website. There will not be a Piazza site.
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.