- 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
thispointer, 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
protectedaccess 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.
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.
Learning Outcomes
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.
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 1Chapters: 6.6, 6.17, 7.10
Function Templates, Vectors
Chapters: 21.1–21.10, 21.13
Strings (create, compare, concatenate, modify, conversions)
Assignment 2Scope: Lesson 1 to 3
Chapters: 3.1–3.7
Introduction to Classes
Chapters: 13.1–13.8
Streams - Input/Output
Assignment 3 SubmissionChapters: 21.12
Stringstreams
Midterm Project ReleaseChapters: 14.1–14.4
Files - Sequential Text & CSV
Midterm Exam & Project SubmissionChapters: 9.1-9.15
More on Classes: Composition, this, friend, static
Chapters: 9.1-9.15
Deep Dive into Classes
Capstone Project Group SelectionCollege Closed - No Classes
Chapters: 10.1–10.11
Operator Overloading
Quiz 2Chapters: 11.1–11.6
Inheritance
Assignment 4Chapters: 12.1–12.7
Polymorphism
Chapters: 20.1–20.3
Class Templates
Assignment 5Chapters: 17.1–17.5
Exception Handling
Capstone Project SubmissionComprehensive 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
- cppreference.com (language/library lookups)
- ISO C++ FAQ
- cplusplus.com Documentation
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
- Create an account on github.com.
- Follow: Create your first repository (GitHub Docs)
- Install Git (if needed) and configure your name/email.
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
- GeeksforGeeks - C++ Exercises - structured exercises across beginner to intermediate C++ topics.
- HackerRank - C++ - coding challenges with an online compiler and test-based feedback.
- CodeChef - C++ Practice - additional programming practice for logic building and problem solving.
- W3Schools - C++ Exercises - simple beginner-friendly practice and review.
- Great Learning - C++ Exercises - extra practice prompts and examples for independent study.
Reference & Mini Projects
- cplusplus.com Documentation - beginner-friendly documentation and tutorials for core C++ concepts.
- Great Learning - C++ Project Ideas - useful if you want extra coding practice beyond small exercises.
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: