CSCI 272 • Object-Oriented Programming (C++) | Fall 2025

Course portal for students: weekly plan, assessments, expectations, tools, and quick links.

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

Weekly Plan Assessments Policies Tools GitHub Websites Books FAQs Contact

Overview

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.

Instructor: Avijit Roy • John Jay College of Criminal Justice (CUNY) | Office: L 6.63.29

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.

  • Lecture 1
    • Chapters: 6.4, 6.5, 6.10, 6.11, 6.13–6.16; 7.1–7.2; 8.1–8.9
    • Topics: Review — Functions, Arrays, Pointers
    • Assignment 1
  • Lecture 2
    • Chapters: 6.6, 6.17, 7.10
    • Topics: Function Templates, Vectors
  • Lecture 3
    • Chapters: 21.1–21.10, 21.13
    • Topics: Strings (create, compare, concatenate, modify, conversions)
    • Assignment 2
  • Lecture 4
    • Chapters: 3.1–3.7
    • Topics: Introduction to Classes
    • Quiz 1
  • Lecture 5
    • Chapters: 13.1–13.8
    • Topics: Streams — Input/Output
    • Assignment 3
  • Lecture 6
    • Chapters: 21.12
    • Topics: Stringstreams
  • Lecture 7
    • Chapters: Lectures 1–6
    • Topics: Midterm Exam — Written + Take-Home Project
    • Midterm Exam & Project
  • Lecture 8
    • Chapters: 14.1–14.4
    • Topics: Files — Sequential Text & CSV
    • Assignment 4
  • Lecture 9
    • Chapters: 9.1–9.15
    • Topics: More on Classes
  • Lecture 10
    • Chapters: 10.1–10.11
    • Topics: Operator Overloading
    • Assignment 5
  • Lecture 11
    • Chapters: 11.1–11.6
    • Topics: Inheritance
    • Quiz 2
  • Lecture 12
    • Chapters: 12.1–12.7
    • Topics: Polymorphism
    • Assignment 6
  • Lecture 13
    • Chapters: 20.1–20.3
    • Topics: Class Templates
  • Lecture 14
    • Chapters: 17.1–17.5
    • Topics: Exception Handling
    • Assignment 7
  • Lecture 15
    • Chapters: Comprehensive
    • Topics: Final Exam + Capstone Project
    • Capstone Project

Assessments


Participation & Quizzes

Short checks to reinforce weekly topics; start on time. No make-ups for late arrival unless documented emergencies.

  • Weekly knowledge checks as class participation & attendance
  • In-class discussion & code walk-throughs
  • Two announced quizzes + brief pop quizzes

Assignments

Frequent, focused practice. Expect clean headers, comments, and testable examples. Submit on time.

  • 4–5 individual assignments (see syllabus) covering key topics.
  • 2 Group assignments

Midterm

  • Written exam on concepts & code analysis.
  • Individual take-home OOP project (Weeks 1–6).

Final — Exam + Team Capstone

  • Written exam on concepts & code analysis.
  • Plan (UML encouraged), implement, and present a complete OOP app.
  • Clear division of work; everyone explains their code.

Grading Breakdown

Letter grades follow standard CUNY grading scale.

Assessment Weight
Discussion & Class Participation 15%
Quizzes (2 Announced, 2 Pop Quizzes) 15%
Assignments 20%
Mid Term (Written Exam + Project) 25%
Final (Written Exam + Capstone) 25%

Grading of assignments and exams can be reviewed in person to confirm that the submitted work is your own and to clarify any questions about how your solutions work.


Programming Projects

Throughout the semester you will complete a series of programming projects that apply the course concepts: object-oriented design, class and object implementation, inheritance, polymorphism, operator overloading, exception handling, and file I/O. These projects are designed to mirror real-world problem solving and to strengthen your ability to design and build complete C++ applications.

Responsibilities & Policies


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).

Attendance

Regular attendance is crucial. More than 4 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.

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.

Please review the college's policies on Plagiarism and Cheating


Use of AI Tools (ChatGPT, Copilot, etc.)

  • 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 code without citation: submitting AI-generated code as your own work is considered plagiarism.
  • You must be able to explain your code in person if asked. Inability to do so may result in loss of credit.
  • AI is here to support your learning, not replace it.

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 accessibilityservices@jjay.cuny.edu. OAS works in partnership with the entire John Jay community to ensure access to all areas of campus life and to arrange appropriate academic adjustments, programs, and services.

Students seeking accommodations should coordinate through the John Jay Office of Accessibility Services (OAS) and contact the instructor early in the semester so approved adjustments can be implemented promptly.

Tools & Setup


Primary IDE

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++ is the recommended and supported setup for this course.

Note for students using online compilers: You may face issues when we begin working with files, file streams, input/output redirection, and stringstreams. Online C++ compilers often block or sandbox file I/O, which will cause some assignments to fail. A local IDE (Dev-C++ or VS Code with C++ enabled) is strongly recommended.


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-<semester>), 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-<semester> (e.g., CSCI-272-Fall-2025).
  • 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, submissions, grades.
  • GitHub — repositories for practice and (when instructed) submissions.
  • Dev-C++ — IDE (Windows).
  • VS Code — optional editor.
  • cppreference.com — C++ language & library reference.

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.

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: November 2025