UCSS
University Course Selection System with role-based access, clash detection, and waitlist management built in Java 21.
Tech Stack
Key Highlights
Relational schema design with ERD and normalization
JDBC connection pooling with DAO pattern
Atomic transactions with row-level locking
Weekday-aware time-conflict detection algorithm
Graph-based prerequisite validation engine
FIFO waitlist with auto-promotion system
Project Details
Web-based course selection with login/logout, browse & filter, add/drop with clash checks, capacity & FIFO waitlist, and GPA—implemented in plain Java 21 + JDBC + SQL (no Spring).
**Team & role:** Built by a team. My role: Backend & Database.
Highlights (system):
**Student:** Auth, upcoming course list & filters (code, instructor, schedule, quota), add/drop, weekly timetable, GPA view.
**Admin/Professor:** CRUD for courses/sections (quotas, prerequisites, syllabus, schedule), student record ops, grade entry.
**Rules & safety:** Time-conflict prevention, prereq/co-req checks, credit limit, block when full, FIFO waitlist auto-promotion.
**Security:** Role-based access, salted password hashing, and planned field-level encryption for sensitive data.
My contributions (backend & DB):
**Data model & integrity:** Designed relational schema (Student, Course, Section, Meeting, Enrollment, Prereq, Waitlist, etc.), keys/indexes, normalization, and ERD.
**JDBC layer:** Connection pooling, DAO pattern, and transactional workflows for add/drop/swap; atomic seat accounting with row-level locking; waitlist promotion in the same TX.
Business rules:
• Clash detection: Weekday-aware time-interval overlap algorithm.
• Prereq engine: Graph-based validation with minimum grade thresholds.
• GPA: Letter→score mapping and weighted GPA updates on grade entry.
**API & validation:** Lightweight REST-like endpoints (framework-free), input validation, consistent error payloads; Dockerized DB.
**Docs:** Contributed to SRS/SDP/SDD/STR; produced UML (use case, activity, deployment).
**Next up:** Stronger ACID checks and deadlock-retry strategy, integration tests (e.g., Testcontainers), API docs, iCal export, ILP/CP-SAT auto-scheduler PoC, column-level encryption, and basic rate limiting.