Fall 2026 John Jay College

CSCI 272: Object-Oriented Programming in 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.

Instructor: Avijit Roy
Schedule: Section 1: Mon & Wed, 08:00 AM – 09:15 AM | Room NB L2.79 Section 2: Mon & Wed, 09:25 AM – 10:40 AM | Room NB L2.79
Office & contact: NB 6.63.29 · By appointment ARoy [AT] jjay [DOT] cuny [DOT] edu

Course Information

Catalog focus: CSCI 272 is a three-hour, three-credit course that continues algorithmic problem solving through more advanced methods, particularly object-oriented design. Topics include procedural abstraction; user-defined static, dynamic, and generic data types; linked structures; sorting and searching; event-driven programming; recursion; abstract data types; inheritance; and polymorphism. Rigorous programming practices and software development are emphasized throughout the course.

Prerequisites: ENG 101 and either CSCI 271 or MAT 271.

The official description, credits, and prerequisites are available in the John Jay Undergraduate Bulletin.

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

This syllabus provides the official semester course outline and schedule. Brightspace is the primary source for weekly materials, assigned readings, submission instructions, announcements, and any subsequently announced changes to the schedule.

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

Introduction and recap; Git and GitHub; functions, arrays, and pointers.

Assignment 1
Week 2 | Lesson 1 Continues

Continue the introductory review and remaining Lesson 1 material.

Week 3 | Lesson 2

Chapters: 6.6, 6.17, 7.10

Function templates and vectors: declaring, initializing, accessing, sizing, and adding values.

Week 4 | Lesson 3

Chapters: 21.1–21.10, 21.13

Strings: creating, comparing, concatenating, measuring, modifying, and converting values.

Assignment 2
Week 5 | Lesson 3 Continues

Group-project discussion, team assignment, and project outline.

Quiz 1 Assignment 3 | Group Project
Week 6 | Lesson 4

Chapters: 3.1–3.7

Introduction to classes: definitions and instantiation, access specifiers, member functions, and data members.

Week 7 | Lesson 5 + Reading Homework

Chapters: 13.1–13.8

In class: Guided coding practice with streams, input/output, and input-state recovery.

Complete at home: Read the Lesson 5 slides and assigned material on formatted and unformatted input/output, bad-input recovery, and failed input states.

Lesson 5 | Read at Home
Week 8 | Lesson 6

Chapter: 21.12

Stringstreams for input/output and string manipulation.

End-of-week release: Midterm review materials will be posted for preparation.

Midterm Review Released
Week 9 | Midterm + Lesson 7

Chapters: 14.1–14.4

Streams and files: sequential text files and CSV files.

Midterm Exam Midterm Project Submission
Week 10 | Lessons 7 and 8

More on classes: separating interface and implementation, constructors, destructors, composition, and the dot and arrow operators.

Week 11 | Lesson 8 + Capstone Project

Continue Lesson 8 and begin focused capstone group-project work.

Capstone Group Project
Week 12 | Lesson 9

Chapters: 10.1–10.11

Operator overloading: unary and binary operators, including dynamically allocated memory.

Quiz 2
Week 13 | Lesson 10 + Lesson 11 Homework

In class — Lesson 10: Inheritance, base and derived classes, protected access, and guided coding practice.

Chapters: 11.1–11.6

Complete at home — Lesson 11: Read the polymorphism section on virtual and pure virtual functions and abstract classes, then complete the related assignment.

Lesson 11 chapters: 12.1–12.7

Assignment 4 | Lesson 11 Polymorphism | Read at Home
Week 14 | Lesson 10 Continues + Lesson 12 Homework

In class — Lesson 10: Complete the remaining inheritance material and practice coding.

Complete at home — Lesson 12: Study class templates and reusable generic classes using the slides and textbook, then complete the assigned practice.

Lesson 12 chapters: 20.1–20.3

Class Templates | Practice at Home
Week 15 | Lesson 13

Chapters: 17.1–17.5

Exception handling with try, catch, and throw; creating custom exception types.

Final preparation: The final review will be posted this week.

Final Review Posted
Week 16 | Final Review + Final Exam

Monday: Final review Q&A using the review materials posted in Week 15.

Wednesday: Comprehensive final exam.

Final Exam

Assessments

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

Engagement, Attendance & Quizzes

Regular engagement, attendance, and short checks (30%).

  • Class participation and discussion (5%): in-class discussion, coding practice, and code walkthroughs.
  • Attendance (5%): regular and punctual attendance under the Departmental Attendance Policy.
  • Attendance scoring: 0 unexcused absence equivalents earns 5 points; 0.5–1 earns 4 points; 1.5–2 earns 3 points; 2.5–3 earns 2 points; and more than 3 earns 0 points before the departmental letter-grade penalty is applied.
  • Knowledge checks (5%): brief checks of preparation and conceptual understanding.
  • Quizzes (15%): two announced quizzes and brief pop quizzes.

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

Final Exam & Capstone Project

Culmination of the course.

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

Grading Breakdown

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

College grading rules: Review John Jay's Grades policy for official grade symbols, grade-point values, withdrawals, and Pass/No Credit rules.

Incomplete grades: An INC may be considered only when a student would otherwise be passing the course and, after consultation with the instructor, there is a reasonable expectation that the outstanding work can be completed by the last day of the following semester. An INC is not guaranteed and is assigned at the instructor's discretion. If the work is not successfully completed and no grade change is submitted, the INC becomes a FIN under College policy.

Extra Credit Policy

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

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

Course Flexibility

To support student learning, the instructor may adapt this syllabus and weekly plan in response to class progress, demonstrated understanding, instructional needs, College calendar changes, or unforeseen circumstances. Adjustments may include the pace or sequence of topics, readings, activities, assignments, or due dates. Substantive changes will be announced in class and posted on Brightspace with reasonable notice; grading changes will not be applied retroactively to work already submitted.

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.

Departmental Attendance Policy

Regular attendance is expected and essential to success in the course. You are responsible for all material, announcements, and assignments covered in class, whether present or not.

  • Unexcused absences: More than 3 unexcused absence equivalents in the semester will result in a one-full-letter-grade penalty, such as B to C or B+ to C+. Additional unexcused absences may result in further letter-grade penalties and may result in a failing grade.
  • Excused absences: Documented illness, religious observance, family emergency, jury duty, or military service requires notification and, where possible, documentation within 2 class meeting days.
  • Late arrival or early departure: Arriving more than 15 minutes late or leaving more than 15 minutes early counts as one-half absence. Two partial absences equal one full absence.
  • Missed material: It is your responsibility to obtain missed notes, materials, and announcements from a classmate and to review Brightspace.
  • Make-up work: Work missed because of an excused absence must be arranged with the instructor within 1 week of your return to class.

Approved Office of Accessibility Services accommodations will be applied as authorized. The course-level attendance score is described under Assessments. This policy will be reviewed on the first class meeting and posted as a standalone item on Brightspace.

Late Work & Make-Up Policy

  • Quizzes, labs, and participation tasks: You must submit these on time. They cannot be made up after feedback is released, except when an excused absence qualifies for make-up work under the Departmental Attendance Policy.
  • 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.

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 October 30, 2026, to review the difference between BFS and DFS. Prompt: ‘Compare BFS and DFS without solving my assignment problem.’”

Academic Integrity

Academic dishonesty is prohibited. Penalties may include academic sanctions, such as a failing or reduced grade, and disciplinary sanctions, including suspension or expulsion.

Cheating is the unauthorized use or attempted use of materials, information, notes, study aids, devices, collaboration, or communication during an academic exercise. Examples include, but are not limited to:

  • Copying or sharing answers on an assignment or exam.
  • Collaborating when collaboration is not authorized.
  • Having another person complete work for you, completing work for another student, or submitting someone else's work as your own.
  • Fabricating data or using unauthorized notes, websites, devices, AI tools, or other resources.

Plagiarism is presenting another person's ideas, research, writing, code, media, or computer-generated content as your own without appropriate attribution. This includes copying or paraphrasing material from online or other sources without citation, failing to acknowledge collaborators, or submitting AI-generated content as original work.

  • Credit all permitted external help, including peers, forums, snippets, and AI tools, in your README.
  • Be prepared to orally explain any code you submit.
  • If you are unsure whether a resource or form of collaboration is allowed, ask before submitting.

These examples are not exhaustive. Review the John Jay Academic Integrity Office for definitions, College policies, and information about the review process.

Accessibility Services

Students who believe they may need an accommodation for a temporary or permanent disability are encouraged to contact the Office of Accessibility Services (OAS) at [email protected]. OAS handles disability documentation and coordinates approved academic adjustments.

You are welcome, but not required, to discuss your course-specific needs with the instructor privately. You do not need to disclose your diagnosis or the specific nature of your disability to the instructor. Any disability-related information you choose to share will be treated privately. Please contact OAS and the instructor as early as possible so approved accommodations can be implemented.

Student Support Resources

John Jay offers academic, health, counseling, accessibility, emergency, and basic-needs support. Seeking support early can help you stay healthy and engaged in the course.

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

Course Materials & Submissions

GitHub & Version Control

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-Fall-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-Fall-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

Practice & Learning 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

  • August 29, 2026 - Standardized syllabus terminology and expanded student-support resources.
  • August 27, 2026 - Added October 12 to the no-class schedule notes.
  • August 24, 2026 - Fall 2026 syllabus published.

Last updated: