CMSC 202 – Computer Science II

Generic Syllabus

Prerequisites

CMSC 201 with a “B” or better and MATH 150, MATH 151, or MATH 152 with a “C” or better.

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.

Course Outcomes

  1. Improved problem solving abilities
  2. Improved program design skills
  3. Improved coding skills
  4. Understanding of the fundamental programming concepts of abstract data types
  5. Understanding of the fundamentals of the object-oriented programming paradigm
  6. Improved ability to test and debug programs

Program Outcomes

This course enables the following program outcomes:

  • (O1) through the development of C++ programs with increasing complexity.
  • (O3) through the use of the OOP techniques; coding, compiling, and debugging using the Linux operating system.
  • (O5) through the use of Linux systems, introduction to C++ software development, and basic algorithms.

Text

There is no required textbook for this course. The book Absolute C++, Fifth Edition, by Walter Savitch is highly recommended.

Topics

  • Object-oriented design concepts
    • Classes and objects
    • Encapsulation and data hiding
    • Aggregation
    • Inheritance
    • Polymorphism
  • 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
    • Exceptions
  • Program construction techniques
    • Debugging
    • Unit testing

Grading

Grades will be based on a combination of exams, projects, and labs. The number and weight of each type of graded assessment may vary from semester to semester subject to the following guidelines:

Exams
1 – 2 Midterm Exams    20 – 30%
Cumulative Final Exam    20 – 30%
Projects
4 – 5 Programming Projects    40 – 50%
Labs
10 – 12 Lab Assignments    10 – 15%
Participation
Attendance and participation    at most 10%

Approved December 18, 2014