This is a command-line study guide application written in C++ that dynamically generates and adjusts quizzes based on user performance. It was developed as a project for CSCI 135: Software Analysis & Design I at Hunter College, where we were encouraged to iteratively build upon our code each week — refining functionality, improving logic, and eventually creating a complete study tool.
What started as a small assignment grew into something genuinely useful. I actually used this project to prepare for my midterm and found it incredibly helpful for reinforcing concepts we’d learned in class.
When the program runs, it reads from a file of pre-written question-answer pairs and presents them to you one at a time. It tracks your performance across the quiz and displays your results at the end.
The key features include:
- ❌ Adaptive Prioritization: If you answer a question incorrectly three times, the program identifies its topic and flags all questions with that same topic as a top priority. Those questions move up in the queue so you can focus on your weaker areas.
- 🔀 Randomized Practice: To prevent memorization and encourage real understanding, the program randomly shuffles the order of questions (except for those prioritized by difficulty).
- 📝 Built-In Grading: At the end of your session, you’ll get a summary of how you did — including how many questions you got right and your overall accuracy percentage.
This approach mimics spaced repetition and helps improve retention through targeted review.
The code is modular and includes:
main.cpp: The driver file that runs the program loop.quiz.cpp: Functions for reading questions, tracking attempts, and ordering the quiz strategically.- Text files: These files contain the quiz questions and answers.
Welcome Screen:
Sample Question:
Final Results:
To compile and run the project:
-
Clone the repository:
git clone https://github.com/your-username/Study-Guide-CLI.git
-
Navigate to the project directory:
cd Study-Guide-CLI -
Compile the code using the
g++compiler with the C++20:g++ -std=c++20 -o study-guide main.cpp quiz.cpp
-
Run the executable:
./study-guide
You can modify the question file or create your own using a simple text format.
This project reflects my journey learning C++ — from simple I/O and file processing to more advanced concepts like arrays, pointers, classes, and data tracking. Building this project helped me practice debugging, modular design, and real-world application of class materials.
More importantly, it gave me something practical that I could use to study smarter, not just harder.
This project is licensed under the MIT License. See the LICENSE file for more details.
- Huge appreciation to Professor Tong Yi, whose question files and feedback laid the groundwork for this tool.
- Special thanks to the CS teaching staff at Hunter College for their guidance throughout the semester.


