This repository contains a collection of independent projects demonstrating proficiency in C++ programming, data structures, modern C++ features, GUI development, computer vision, and game design.
Description: Implements arithmetic operations for arbitrarily large integers and decimals using a doubly linked circular list. Each node holds a single digit, and the list structure allows natural propagation of carries and borrows during addition and subtraction.
Features:
- Full support for addition and subtraction of integers and decimals
- Sign handling and decimal point alignment
- Manual memory management following the Rule of Three
- Qt-based GUI calculator (optional frontend)
Key Learning Outcomes:
- Deep understanding of pointer manipulation and dynamic memory
- Experience with linked list traversal, insertion, and deletion
- Ability to design a non-trivial class with proper resource management
Description: Complete implementation of all seven assignments from Stanford CS106L, a course on modern Standard C++ programming.
Assignment 1: Course Scheduler
Reads courses from a CSV file, filters by user availability, and outputs results. Practices file I/O and STL containers (std::vector, std::string).
Assignment 2: Best Match
Matching algorithm using field-wise comparison. Practices STL algorithms (std::sort, std::find_if), custom comparators, and string manipulation.
Assignment 3: Custom Class Design Designing classes with proper encapsulation, constructors, and operator overloading. Practices OOP design, inheritance, and RAII principles.
Assignment 4: Spell Checker
Implements a spell checker using a custom hash table and dictionary lookup. Practices templates, hash tables, std::unordered_set, and file processing.
Assignment 5: Treebook
Implements a User class for a fictional social media platform with full special member functions (SMFs), operator overloading (operator<<, operator+=, operator<), and friend functions. Practices copy/move semantics, raw pointer array management, and symmetric friend relationships.
Assignment 6: Explore Courses
Uses std::optional and monadic operations (and_then, transform, or_else) to build a course lookup system without conditional branching. Practices functional-style C++23 features and the std::optional API.
Assignment 7: Unique Pointer
Implements a custom unique_ptr from scratch with full RAII semantics, including constructors, destructor, dereference operators, move semantics, and deleted copy operations. Practices templates, operator overloading, move semantics, and smart pointer design. Also implements a singly-linked list backed by unique_ptr.
Key Learning Outcomes:
- Mastery of C++ standard library containers and algorithms
- Deep understanding of RAII, smart pointers, and move semantics
- Experience with operator overloading, special member functions, and friend functions
- Functional-style programming with
std::optionalmonadic operations - File processing, text parsing, and data-driven design
Description: A feature-rich console-based ToDo list application written in C++.
Features:
- Add, delete, and view tasks
- Sort tasks by priority and date
- Edit task attributes (date, importance, dependencies)
- Import and export task lists
- Search tasks by keyword
- Built-in help system
Key Learning Outcomes:
- Modular class design (TODO, TODOlist, Command, TODOmanager)
- File I/O for data persistence
- Command parsing and interactive CLI design
Description: A traditional computer vision prototype for lane detection and lane keeping using Python and OpenCV.
Features:
- Lane detection via threshold binarization and Canny edge detection
- Pixel offset calculation between lane center and image center
- PID steering control to simulate lane keeping
- Visualization with ROI overlay, lane centerline, and steering arrow
- Video file processing for frame-by-frame lane following
Tech Stack: Python, OpenCV, NumPy, Matplotlib
Description: A visual novel application built with Qt, inspired by Senren Banka.
Features:
- Character-by-character text display with typewriter effect
- Customizable backgrounds and character sprites
- Background music and sound effects
- Automated UI management and scene transitions
- Keyboard interaction support
Key Learning Outcomes:
- Event-driven programming and Qt signal-slot mechanism
- Graphics rendering with QGraphicsScene and QGraphicsView
- Multimedia integration with QMediaPlayer
Description: A unique blend of Hearthstone, Slay the Spire, Yu-Gi-Oh, and Shadowverse, built with Qt and C++.
Features:
- JSON-driven card data system with an effect factory
- Player and enemy entities with battlefield management
- Card types: Act, Power, Attack
- Player classes: Warrior, Warlock, Robot, Neutral
- Deck, hand, graveyard, and vanishyard zones
- Extensible effect system via
IEffectinterface
Key Learning Outcomes:
- Game architecture design with entity-component patterns
- Factory pattern for card effects
- JSON parsing and data-driven design
Each project contains its own source code and a detailed README inside its respective subdirectory.
Thank you for reviewing my work.