Spring 2026 John Jay College

CSCI 272: Object-Oriented Programming (C++)

This course builds practical C++ skills through object-oriented design: classes, composition, operator overloading, inheritance, and polymorphism — plus robust I/O with streams, stringstreams, and files. You’ll write clean, modular code and be able to explain your decisions.

Note: This page contains the full course syllabus for CSCI 272.

Instructor: Avijit Roy
Office: NB 6.63.29
Schedule:
Section 1: Mon & Wed, 09:25 AM – 10:40 AM
Section 2: Mon & Wed, 10:50 AM – 12:05 PM

Learning Outcomes

  • Work confidently with functions, arrays, pointers, and vectors - including declaration, initialization, indexing, and memory-focused reasoning.
  • Use function templates and generic techniques to write code that adapts to multiple data types.
  • Create and manipulate strings (build, compare, concatenate, measure length, and convert between strings and other types).
  • Design, implement, and use classes and objects with proper public/private access, member functions, data members, constructors, and destructors.
  • Separate class interface and implementation across header and source files, and apply composition, the dot/arrow operators, the this pointer, friend functions, and static members where appropriate.
  • Use streams for formatted and unformatted input/output, recover from bad input states, and employ stringstreams for parsing and building text.
  • Read from and write to sequential text files and CSV files using robust, error-aware file I/O patterns.
  • Overload unary and binary operators for custom class behavior, including cases that involve dynamic memory management.
  • Implement inheritance with base and derived classes, including use of the protected access specifier.
  • Apply polymorphism using virtual functions, pure virtual functions, and abstract classes to enable runtime method selection.
  • Compare and reason about linear vs. binary search and different sorting algorithms for efficient data retrieval and ordering.
  • Handle errors using exception handling (try/catch/throw), and design custom exception types for specific error scenarios.

Weekly Plan (Snapshot)

This is the detailed, week-by-week plan from the official syllabus. Minor adjustments may occur; any changes will be announced in class and on Brightspace.

Week 1 | Lesson 1

Chapters: 6.4, 6.5, 6.10, 6.11, 6.13–6.16; 7.1–7.2; 8.1–8.9

Review - Functions, Arrays, Pointers

Assignment 1
Week 2 | Lesson 2

Chapters: 6.6, 6.17, 7.10

Function Templates, Vectors

Week 3 | Lesson 3

Chapters: 21.1–21.10, 21.13

Strings (create, compare, concatenate, modify, conversions)

Assignment 2
Week 4 | QUIZ 1 + Group Project

Scope: Lesson 1 to 3

Quiz 1 Assignment 3 (Group Project) Started
Week 5 | Lesson 4

Chapters: 3.1–3.7

Introduction to Classes

Week 6 | Lesson 5

Chapters: 13.1–13.8

Streams - Input/Output

Assignment 3 Submission
Week 7 | Lesson 6

Chapters: 21.12

Stringstreams

Midterm Project Release
Week 8 | Midterm + Lesson 7

Chapters: 14.1–14.4

Files - Sequential Text & CSV

Midterm Exam & Project Submission
Week 9 | Lesson 7 + 8

Chapters: 9.1-9.15

More on Classes: Composition, this, friend, static

Week 10 | Lesson 8 (Cont.)

Chapters: 9.1-9.15

Deep Dive into Classes

Capstone Project Group Selection
Week 11 | Spring Recess

College Closed - No Classes

Week 12 | Lesson 9

Chapters: 10.1–10.11

Operator Overloading

Quiz 2
Week 13 | Lesson 10

Chapters: 11.1–11.6

Inheritance

Assignment 4
Week 14 | Lesson 11

Chapters: 12.1–12.7

Polymorphism

Week 15 | Lesson 12

Chapters: 20.1–20.3

Class Templates

Assignment 5
Week 16 | Lesson 13

Chapters: 17.1–17.5

Exception Handling

Capstone Project Submission
Week 17 | Finals

Comprehensive Final Assessment

Assessments

Your performance is evaluated through participation, quizzes, assignments, and exams.

Participation & Quizzes

Regular engagement and short checks.

  • Weekly knowledge checks as class participation & attendance (10%)
  • In-class discussion & code walk-throughs (5%)
  • Two announced quizzes + brief pop quizzes (15%)

Assignments

Hands-on C++ programming practice (20%).

  • 4–5 individual assignments covering key topics.
  • Focused on OOP principles and clean code.

Midterm Exam

Midpoint evaluation of your programming foundations.

  • Written exam on concepts & code analysis (80%).
  • Individual take-home OOP project (20%).

Finals

Culmination of the course.

  • Written Exam (30%) & Code Exam (20%).
  • Capstone Project (40%) & Presentation (10%).

Grading Breakdown

Discussion & Knowledge Checks 10%
Class Participation 5%
Quizzes (2 Announced, 2 Pop Quizzes) 15%
Assignments 20%
Mid Term (Written Exam[80] + Project[20]) 25%
Final | Written Exam[30] + Code Exam [20] +
Capstone Project [40] + Presentation [10]
25%

Extra Credit Policy

Students will have multiple opportunities throughout the semester to earn extra credit. Please note:

  • 100% Attendance Bonus: Additional 5% extra credit toward final grade.
  • Deadline Policy: All extra credit work must be submitted by the posted due dates.
  • No Extensions: Extra credit deadlines cannot be extended under any circumstances.
  • No Retroactive Credit: Missed or expired extra credit opportunities cannot be submitted later.

Responsibilities & Policies

Course Expectations

This course meets twice per week in person. You are expected to keep up with weekly materials, participate in activities, and monitor course updates regularly. Brightspace will be your central hub for announcements, assignments, quizzes, project descriptions, sample code, and grades.

  • Check Brightspace several times a week for new content and updates.
  • Submit assignments through the method specified for each task (Brightspace or GitHub).
  • Receive email responses within 24 hours, Monday–Friday.
  • You may see optional practice activities in modules - these are not graded but strongly recommended.

Student Responsibilities

  • Attend class lectures regularly and arrive on time.
  • Take quizzes, exams, and in-class activities at the scheduled times.
  • Complete assigned readings, exercises, and programming projects on time.
  • Bring code that compiles and runs, and be ready to explain your design choices.
  • Back up your work and verify submissions (build, run, and test locally).

Participation Expectations

You are expected to engage respectfully and professionally with your classmates. Participation includes asking questions during demos, offering ideas, discussing debugging strategies, and contributing to group work. You are encouraged to explain your logic and collaborate conceptually without sharing full solutions.

  • Participate actively in discussions and coding walkthroughs.
  • Focus on explaining concepts rather than sharing full code with others.
  • Practice clearly communicating your reasoning and design decisions.
  • Respect the diverse experience levels of your classmates.

Attendance

Regular attendance is crucial. More than 3 unexcused absences may lower your final grade by two letter grade.

  • Notify in advance for planned absences.
  • Document emergencies as soon as possible.
  • Missed quizzes/participation cannot be made up without valid medical emergencies.
  • If you are late 20 minutes, you will be counted as absent.

Late Work & Make-Up Policy

  • Quizzes, labs, and participation tasks: You must submit these on time. They cannot be made up because feedback is required before the next module starts.
  • Projects and major assignments: You may submit work up to 3 days late only if you contact me before the due date. Late submissions may receive up to a 20% deduction. You will need to email me for approval.
  • Midterm and final exams: You must complete these on the scheduled dates unless you have a documented emergency.

Academic Integrity

All submitted work must be your own. Sharing solutions, copying code without attribution, or submitting generated work as your own violates course and college policy and may result in a zero and further action.

  • Credit any external help (peers, forums, snippets) in your README.
  • Be prepared to orally explain any code you submit.

Review the college's policies on Plagiarism and Cheating.

Use of AI Tools

  • Use AI tools to learn and explore ideas — not as a substitute for your own work.
  • Cite all use: if AI helps you solve a problem or write code, clearly note which tool you used and what you asked.
  • No copy-paste: submitting AI-generated code as your own work is considered plagiarism.
  • Be ready to share the prompts and responses you used from AI tools if requested. Do not delete the conversation history.
  • You must be able to explain your code in person if asked. Inability to do so may result in loss of credit.

Example citation: “Used ChatGPT on March 12, 2025, to understand operator overloading syntax. Prompt: ‘How to overload + operator in C++?’”

Accessibility Services

If you are a student with a disability (temporary or permanent), please reach out to the Office of Accessibility Services (OAS) at [email protected].

OAS works to ensure access to all areas of campus life and to arrange appropriate academic adjustments. Students seeking accommodations should coordinate through the OAS and contact the instructor early.

Tools & Setup

Primary IDE

  • Embarcadero Dev-C++ (Windows) - this is the primary IDE used in class. All demos, screenshots, and walkthroughs will use Dev-C++.
  • OnlineGDB - recommended secondary option for students using Linux lab computers or any system where Dev-C++ is not available.
  • Visual Studio Code - optional editor (requires a working C++ toolchain).

You may use a different C++ toolchain if you already have one configured, but make sure you can compile, run, and debug your programs reliably. Dev-C++ and OnlineGDB are the recommended setups.


Quick References

Using GitHub for Version Control & Submissions

GitHub will be our shared workspace and code archive. It helps you track every change, back up projects safely, and practice professional version control workflows. You’ll also use it to build your coding portfolio - and later, submit assignments when instructed. Practice and share only your learning repos (like CSCI-272-Spring-2026), not graded assignments, to avoid revealing answers to others.

Note: Not all assignments will be submitted via GitHub. Follow the submission method listed on Brightspace for each assignment.

Get Started


Course Repo Pattern

  • Create a personal practice repo named CSCI-272-Spring-2026.
  • Use this repo to share practice code, notes, and experiments.
  • Do not post full assignment solutions before grading is completed; you may be asked to submit privately.

Assignments & Submission

  • When instructed, submit via GitHub (private repo) by sharing access to the instructor; otherwise submit on Brightspace.
  • Keep .h and .cpp files separate; include clear comments.
  • Commit regularly with meaningful messages (e.g., “add input validation for withdrawals”).
  • Do not commit binaries or IDE build folders.

README Expectations

  • Short problem summary and how to build/run.
  • Reflection: what you learned, tricky parts, known issues.
  • Sample I/O or screenshots when helpful.

Books & References

Required / Main Text

  • C++ How to Program (10th Edition), Deitel & Deitel - ISBN-13: 978-0134448237

Optional References

  • Programming: Principles and Practice Using C++ (2nd Ed.), Bjarne Stroustrup - ISBN-13: 978-0321992789
  • The C++ Programming Language (4th Ed.), Bjarne Stroustrup - ISBN-13: 978-0321563842
  • Effective Modern C++, Scott Meyers - ISBN-13: 978-1491903995

Any recent printing is acceptable. Library/ebook access is fine for reading and study.

Important Websites

  • Brightspace - course announcements, assignments, submissions, and grades.
  • GitHub - repositories for practice work and, when instructed, assignment submissions.
  • Dev-C++ - primary IDE used in class (Windows).
  • Visual Studio Code - optional editor if you already have a working C++ setup.
  • cppreference.com - technical reference for C++ language and library features.

Practice C++ Resources

In addition to class notes, assignments, and demos, you are strongly encouraged to practice C++ regularly outside class. The websites below can help you build confidence with syntax, logic, debugging, and problem solving.

You do not need to complete everything on these sites. Use them to get extra practice on topics such as loops, functions, arrays, strings, classes, and general C++ problem solving.


Practice Problems & Exercises


Reference & Mini Projects


How to Use These Resources Well

  • Start with beginner exercises, then move to challenge-based platforms.
  • Focus on topics we are currently covering in class.
  • Do not just read solutions - write, test, and debug your own code.
  • Try to practice at least 2 to 3 problems each week.
  • Ask questions in class if you get stuck on a pattern or concept.

These are optional practice resources, but students who practice consistently usually become much more confident with coding, especially when we move deeper into classes, operator overloading, inheritance, and polymorphism.

Quick FAQs

How do I submit assignments?

Follow instructions on Brightspace for each assignment. When asked to use GitHub, keep the repo private and share access for grading.

What happens if my code compiles but fails some tests?

We focus on correctness, clarity, and adherence to requirements. Partial credit may be limited if logic is incorrect or unexplained.

Can I use AI tools?

Use AI to learn concepts, not to replace your work. Cite any use in your README. You must be able to explain your code.

Course Updates

  • March 2026 - Added C++ practice resources and mini project ideas section.
  • January 2026 - Course site published for Spring 2026.

Contact & Office Hours

You can reach me at ARoy [AT] jjay [DOT] cuny [DOT] edu

Office: NB 6.63.29 - Office hours by appointment.

Scheduling is flexible - email to coordinate a time.

Last updated: