CMPSC 122: Intermediate Programming

Textbook Information

  • Optional Reference Book: ADTs, Data Structures, and Problem Solving with C++, 2nd edition, Larry R. Nyhoff, ISBN-13:  9780131409095

Published Remarks

  • This course may require you to take exams using certain proctoring software that uses your computer’s webcam or other technology to monitor and/or record your activity during exams. The proctoring software may be listening to you, monitoring your computer screen, viewing you and your surroundings, recording and storing any and all activity (including visual and audio recordings) during the proctoring process. By enrolling in this course, you consent to the use of the proctoring software selected by your instructor, including but not limited to any audio and/or visual monitoring which may be recorded. You will need to use an approved browser and one of the compatible operating systems which are listed in Honorlock’s Minimum Requirements table. Please contact your instructor with any questions.

Hardware Requirements

  • Computer
  • Webcam for use with Honorlock, which is a proctoring software for exams

Software Requirements

  • You will need to use an approved browser and one of the compatible operating systems which are listed in Honorlock’s Minimum Requirement table (https://honorlock.com/support/).’

Proctored Exams

  • This course uses Honorlock to proctor exams.

Course Description

Object-oriented programming, recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), the basics of algorithmic analysis, and an introduction to the principles of language translation.


CMPSC 122 introduces the fundamental concepts of program design, object-oriented programming, and data structures. Topics covered include advanced C++ concepts such as classes, inheritance, virtual methods, public/private/ protected class members, constructors, destructors, operators overloading, templates, and Standard Template Library (STL), static & dynamic memory allocation, program and project organization, code debugging and variable watching.

Advanced data structure topics include sequential containers (vectors and lists), stacks and queues, recursive algorithms, trees, sorting algorithms, and hash tables. This course uses C++ as the object-oriented computer language to prepare computer science, software engineering, and computer engineering majors to meet immediate demands in solving computational problems and produce high-quality and efficient code. Given a problem statement, the students will follow a structured problem-solving methodology to provide an error-free source code that is well-organized, readable, and efficient.

Course Prerequisite(s): CMPSC 121

Credits: 3

Learning Objectives

By the end of this course, successful students will be expected to demonstrate competency in the following areas: C++ programming skills, object-oriented programming, fundamental data structures, algorithms and their performance, problem-solving, and software debugging and testing.

Upon completion of the course, students should be able to:

  1. Class Programming: Given an object-based entity with specific functionality, you should be able to create an equivalent C++ class to represent it.
  2. Generic Programming: Given a concrete problem, you should be able to derive a generic solution using templates.
  3. Memory Management: You should be able to choose an appropriate allocation technique (static or dynamic) and write code that manages memory efficiently while avoiding memory leaks.
  4. Coding Standard: You should be able to follow a coding standard necessary for producing robust, efficient, well-structured, and readable code.
  5. Data Types: You should understand how fundamental data types such as vectors, linked-lists, stacks, queues, and trees work, considerations for using them, and be able to employ the corresponding STL templates in their code when necessary. Students should be able to design their templates corresponding to these data types.
  6. Testing and Debugging: You should be able to test and debug the code they develop to ensure correctness and to repair runtime errors.

This course supports the following ABET software engineering outcomes:

  1. an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
  1. an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
  1. an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
 

Course Structure

All course activities are contained in modules, where you will find:

  • A guide to the module, which serves as a road map for the module learning
  • Lesson materials and resources pages
  • Assessments

All new modules are released on Monday mornings per the course schedule, and all assignments (excluding exams) are due at 11:59 p.m. Eastern, Sunday night of the module. This course contains the following content modules:

  1. Introduction Software Development, ADT (Abstract Data Type)
  2. Pointers, Dynamic memory, C-strings
  3. C++ Classes (I)
  4. C++ Classes (II)
  5. List ADT
  6. C++Class (III)
  7. Stacks and Queues
  8. Templates, Standard Template Library
  9. STL Iterators, Algorithms
  10. Recursion
  11. Algorithm Analysis
  12. Binary Trees
  13. Hash Tables 
  14. OOP and Inheritance 
  15. Sorting Algorithms

Course Requirements and Grading

Course Assessments

This course contains the following graded assessment categories.

  • Assignments: Fourteen (14) assignments worth 30 points each. 
  • Quizzes: Fifteen (15) quizzes worth 10 points each. Open-note, open-book, open-Canvas; proctored by Honorlock.
  • Midterm Exam: A 100-point midterm exam. Open-note, open-book, open-Canvas; proctored by Honorlock.
  • Final Exam: A 150-point final exam. Open-note, open-book, open-Canvas; proctored by Honorlock.
  • Participation: Prompt and regular online participation is required to complete this course successfully. The lessons are cumulative; therefore, it is imperative that students stay current with their coursework and assignments. In addition, forum discussions are encouraged. Participation points are assessed by the proportion of the statistics automatically recorded of accessing teaching materials for each student on Canvas, such as the time spent on the contents, number of posts viewed, and number of posts contributed. The decision on participation rests solely with the instructor. Please do NOT request participation credit from the instructor.

Course Grading

The final course grade is determined as follows:

Assignment Categories and Grade Calculation
Assessment Percent of Final Course Grade
Assignments 40%
Quizzes 20%
Midterm 10%
Final 20%
Participation 10%
TOTAL 100%

You are responsible for checking your grades on Canvas and report in the case of any discrepancy. Any concern regarding the grading should be addressed directly to the instructor, no later than one week after the grade was released on Canvas.

Your grade for the course will be determined by the points earned out of 1,000. Rounding is pre-calculated into the point scale. A score of 939.9 9s an A-, not an A. Letter grades will be based on the following scale:

Grading Scale
Letter Grade Range
A ≥ 94.%
A- ≥ 90%
B+ ≥ 87%
B ≥ 84%
B- ≥ 80%
C+ ≥ 77%
C ≥ 70%
D ≥ 60%
F ≤ 0%

Grade Policy

It is your responsibility to stay up to date with your grades posted on Canvas and to bring any grade errors to your instructor’s attention as soon as possible. Items will be graded as quickly as possible with grades posted to Canvas.

Late Submissions

No late assignments will be accepted except for those who have been granted pre-approved extensions. All assignments are due Sunday at 11:59 p.m., Eastern, which means that you have approximately one week to work on assignments. Assignments are to be completed and submitted in Canvas by the posted deadlines in the course schedule. Only the .cpp and .h files are accepted for the programming assignment submissions. For written assignments, you can submit in any popular format such as .doc, .pdf, or .txt, etc. You are responsible for ensuring that the items are properly submitted. See Project Documentation and Submission Guidelines in the course introduction module. 

Make-Up Policy

Make-up exams are offered only to those with documented excuses who have been granted pre-approved permissions so that alternate arrangements can be made. There are no make-ups for quizzes. 

Turn-Around Time

All assignments will be graded and returned to students with feedback within one week after the submission deadline.