Welcome to the C++ Basic Programming Course Repository — a comprehensive, community-driven learning resource.
This project is more than a collection of materials — it’s a living documentation of how our teaching team collaborates, mentors, and builds a hands-on learning experience for students.
Our mission is to ensure that every student not only understands C++ concepts but can also apply them confidently through coding, problem-solving, and projects.
We believe that learning to code should be an active, guided process — not a passive one.
To achieve that, we combine theory from lectures with practice, mentorship, and structured documentation.
| Section | Description |
|---|---|
| /overview/ | Conceptual overviews for each lecture week — theory summaries, examples, and key takeaways. |
| /workshops/ | Hands-on guided activities for each topic, designed to help students learn by doing. |
| /assignments/ | Weekly assignments that reinforce lecture material and build problem-solving skills. |
All sections are written in Markdown, making them easy to read, modify, and publish (e.g., on GitHub Pages or Quartz).
Our approach combines theoretical coverage, active practice, and close mentorship:
-
Weekly Lectures
- Delivered by the professor.
- Introduce core programming concepts in C++.
-
Workshops
- Designed and run by TAs.
- Translate concepts into hands-on coding experiences.
- Encourage collaboration and experimentation.
-
Assignments
- Weekly exercises that challenge students to apply what they’ve learned.
- Reviewed and discussed with mentors.
-
Mentorship
- Each TA mentors a small group of students.
- Provides personalized support, code reviews, and guidance.
- Builds a feedback loop between students, TAs, and the professor.
We’re documenting everything we do for three major reasons:
-
Comprehensiveness for Learners
Provide a high-quality, public resource for current students and self-learners outside the university. -
Pedagogical Transparency
Allow educators and future TA teams to see and improve upon our structure, methods, and materials. -
Continuity and Growth
Leave behind a foundation that future teaching teams or other institutions can build upon, adapt, and evolve.
| Week | Topic | Description | Overview | Workshop | Assignment |
|---|---|---|---|---|---|
| 1 | Algorithmic Thinking & Problem-Solving | Develop foundational skills in algorithm design: representing problems with flowcharts and pseudocode, and reasoning about step-by-step solutions. | Overview | - | Assignment |
| 2 | Introduction to C++ & Basic Programming Constructs & Data Types | Get started with C++: setting up the IDE, basic syntax, compiling and linking, and simple programs. Understand fundamental data types, expressions and operations | Overview | Workshop | Assignment |
| 3 | Control Structures | Move into control flow with logical operators, if/else, switch, loops, iteration and avoiding infinite loops. |
Overview | Workshop | Assignment |
| 4 | Functions & Modular Design | Learn how to design and call functions in C++, including void vs return-type, parameter passing, overloading, and thinking in modular pieces. |
Overview | Workshop | Assignment |
| 5 | Arrays, Strings & Multidimensional Data | Explore static arrays, C++ strings and multidimensional data structures. Incorporate memory-thinking in simple data manipulations. | Overview | Workshop | Assignment |
| 6 | Advanced Functions & Recursion | Deepen function usage with recursion, higher-level thinking about how functions call themselves, and problem-solving patterns that leverage recursion. | Overview | Workshop | Assignment |
| 7 | Pointers & Dynamic Memory | Dive into pointers, dynamic memory allocation/deallocation (e.g., new, delete), pointer arithmetic, and how memory model impacts correct usage of arrays/strings. |
Overview | - | Assignment |
| 8 | File I/O, Structs & A Very Brief Introduction to Object-Oriented Concepts | Work with file input/output streams, define and use structs, and get a first glance at OOP mindset |
Overview | Workshop | - |
| 9 | Mini Project | Integrate the learned topics into a hands-on project: design, implement, test a moderately sized application showcasing applied algorithms, data structures and modular code. | Overview | - | - |
| 10 | Project 101 | An introduction to terminal games: designing game loops, FPS and how to implement it in code, header files and some tips on clean code | Overview | - | - |
| 11 | Final Project & Wrap-up | Launch the final project with full guidelines: design documentation, coding standards, testing, and presentation. Wrap up with reflections and next steps in C++ or software development. | Overview | - | - |
- Create a sustainable, evolving educational model that balances theory and practice.
- Encourage open-source education — anyone can learn from or contribute to our materials.
- Serve as a baseline for future educators in teaching programming effectively.
- Professor: Dr. Saeed Reza Kheradpisheh
- Head Teaching Assistant: Mehrdad Shirvani
- Teaching Assistants (Alphabetical by Last Name):
We welcome contributions — whether you’re a TA, a student, or an educator from another institution.
If you’d like to:
- Improve explanations or examples
- Add new workshop exercises
- Suggest assignment ideas
- Translate materials
Please open a pull request or contact us.
If this repository includes interactive code or materials, consider mentioning:
- Markdown for documentation
- C++ for code examples
- GitHub Pages / Quartz for deploying the website
- VS Code for coding environment
All materials are shared under the Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) license.
You’re free to learn, adapt, and build upon our content — just credit the authors and share alike.
— C++ SBU CS BP TA Team, 2026
