Files
basic-programming-course/README.md
T

147 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# C++ Basic Programming TA Team Initiative
Welcome to the **C++ Basic Programming Course Repository** — a comprehensive, community-driven learning resource.
This project is more than a collection of materials — its 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 theyve 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
Were 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/content/01-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/content/01-topics/02-basics-and-data-types/0-Overview.md) | [Workshop](src/content/01-topics/02-basics-and-data-types/1-Workshop.md) | [Assignment](src/content/01-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/content/01-topics/03-conditions-loops/0-Overview.md) | [Workshop](src/content/01-topics/03-conditions-loops/1-Workshop.md) | [Assignment](src/content/01-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/content/01-topics/04-function-1/0-Overview.md) | [Workshop](src/content/01-topics/04-function-1/1-Workshop.md) | [Assignment](src/content/01-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. | | | |
| 6 | **Advanced Functions & Recursion** | Deepen function usage with recursion, higher-level thinking about how functions call themselves, and problem-solving patterns that leverage recursion. | | | |
| 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. | | | |
| 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 | | | |
| 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. | | | |
| 10 | **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. | | | |
---
## 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 youre a TA, a student, or an educator from another institution.
If youd 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.
Youre free to learn, adapt, and build upon our content — just credit the authors and share alike.
---
> — _C++ SBU CS TA Team, 2025_