146 lines
11 KiB
Markdown
146 lines
11 KiB
Markdown
# C++ Basic Programming
|
||
|
||
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.
|
||
|
||
---
|
||
|
||
## Purpose and Vision
|
||
|
||
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.
|
||
|
||
---
|
||
|
||
## What This Repository Contains
|
||
|
||
| 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 Teaching Model
|
||
|
||
Our approach combines **theoretical coverage, active practice, and close mentorship**:
|
||
|
||
1. **Weekly Lectures**
|
||
- Delivered by the professor.
|
||
- Introduce core programming concepts in C++.
|
||
|
||
2. **Workshops**
|
||
- Designed and run by TAs.
|
||
- Translate concepts into hands-on coding experiences.
|
||
- Encourage collaboration and experimentation.
|
||
|
||
3. **Assignments**
|
||
- Weekly exercises that challenge students to apply what they’ve learned.
|
||
- Reviewed and discussed with mentors.
|
||
|
||
4. **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.
|
||
|
||
---
|
||
|
||
## Why We Document This
|
||
|
||
We’re documenting everything we do for three major reasons:
|
||
|
||
1. **Comprehensiveness for Learners**
|
||
Provide a high-quality, public resource for current students and self-learners outside the university.
|
||
|
||
2. **Pedagogical Transparency**
|
||
Allow educators and future TA teams to see and improve upon our structure, methods, and materials.
|
||
|
||
3. **Continuity and Growth**
|
||
Leave behind a foundation that future teaching teams or other institutions can build upon, adapt, and evolve.
|
||
|
||
---
|
||
|
||
## Course Topics Overview
|
||
| 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](src/content/01-topics/01-problem-solving/0-Overview.md) | - | [Assignment](src/content01-topics/01-problem-solving/2-Assignment.md) |
|
||
| 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](src/content01-topics/02-basics-and-data-types/0-Overview.md) | [Workshop](src/content01-topics/02-basics-and-data-types/1-Workshop.md) | [Assignment](src/content01-topics/02-basics-and-data-types/2-Assignment.md) |
|
||
| 3 | **Control Structures** | Move into control flow with logical operators, `if/else`, `switch`, loops, iteration and avoiding infinite loops. | [Overview](src/content01-topics/03-conditions-loops/0-Overview.md) | [Workshop](src/content01-topics/03-conditions-loops/1-Workshop.md) | [Assignment](src/content01-topics/03-conditions-loops/2-Assignment.md) |
|
||
| 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](src/content01-topics/04-function-1/0-Overview.md) | [Workshop](src/content01-topics/04-function-1/1-Workshop.md) | [Assignment](src/content01-topics/04-function-1/2-Assignment.md) |
|
||
| 5 | **Arrays, Strings & Multidimensional Data** | Explore static arrays, C++ strings and multidimensional data structures. Incorporate memory-thinking in simple data manipulations. | [Overview](src/content01-topics/05-arrays/0-Overview.md) | [Workshop](src/content01-topics/05-arrays/1-Workshop.md) | [Assignment](src/content01-topics/05-arrays/2-Assignment.md) |
|
||
| 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](src/content01-topics/06-functions-2/0-Overview.md) | [Workshop](src/content01-topics/06-functions-2/1-Workshop.md) | [Assignment](src/content01-topics/06-functions-2/2-Assignment.md) |
|
||
| 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](src/content01-topics/07-pointers/0-Overview.md) | - | [Assignment](src/content01-topics/07-pointers/2-Assignment.md) |
|
||
| 8 | **File I/O, Structs & A Very Brief Introduction to Object-Oriented Concepts** | Work with file input/output streams, define and use `struct`s, and get a first glance at OOP mindset | [Overview](src/content01-topics/08-file-struct/0-Overview.md) | [Workshop](src/content01-topics/08-file-struct/1-Workshop.md) | |
|
||
| 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](src/content01-topics/08-file-struct/0-Overview.md) | - | - |
|
||
| 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](src/content01-topics/10-project-overview/0-Overview.md) | - | |
|
||
| 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](src/content01-topics/11-final-project/0-Overview.md) | - | - |
|
||
|
||
|
||
---
|
||
|
||
## Long-Term Goals
|
||
|
||
- 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.
|
||
|
||
---
|
||
|
||
## The Team
|
||
- **Professor**: [Dr. Saeed Reza Kheradpisheh](https://github.com/SRKH)
|
||
- **Head Teaching Assistant:**[ Mehrdad Shirvani](https://github.com/MehrdadShirvani)
|
||
- **Teaching Assistants (Alphabetical by Last Name):**
|
||
- [Aeen Bolandian](https://github.com/aeen-bolandian/)
|
||
- [Ali Ghaedrahmat](https://github.com/aliGhaedrahmat/)
|
||
- [Aryan Ghasemi](https://github.com/aryanGh-imp)
|
||
- [Mahdi Hoseinpoor](https://github.com/MahdiHoseinpoor)
|
||
- [Mohammad Hossein Jaafari](https://github.com/MMDHosain)
|
||
- [Raha Rokni](https://github.com/raharokni)
|
||
- [Partow Roshani](https://github.com/PartowRoshani)
|
||
- [Soroush Saberi](https://github.com/Soroushsbr)
|
||
- [MohammadFazel Sadeghizad](https://github.com/Sadeghizad)
|
||
- [Sadra Seyedtabaei](https://github.com/Sadra3st)
|
||
|
||
## Contributing
|
||
|
||
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.
|
||
|
||
---
|
||
|
||
## Tech Stack
|
||
|
||
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
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
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*
|
||
|
||
|
||
|
||
|