
Quiz Management & Examination System
Desktop examination application developed in Java and JavaFX for the Design Patterns Lab Final Project (Mini-SPL) at IIT, University of Dhaka. Implements rigorous GoF patterns, role-based workflows, and SQLite relational persistence.
The Problem
Academic testing systems often suffer from rigid scoring rules, hardcoded question types, and tightly coupled UI and business logic that make codebase maintenance and testing difficult.
Technical Approach
Engineered a modular desktop application in Java 17 and JavaFX 21 applying classic Gang of Four (GoF) object-oriented design patterns to cleanly separate concerns and ensure testability with JUnit 5.
Key Highlights & Architecture
- Implementation of GoF patterns: Strategy (scoring), State (quiz lifecycle), Factory (questions), Observer (timer/events)
- Role-based dashboards for Teachers (quiz authoring, question bank, analytics) and Students (exam taking, result review)
- Support for 4 question types: MCQ, True/False, Fill-in-the-Blank, and Multiple Answer
- Full SQLite persistence via JDBC with automated schema migration and database seeder
Engineering Challenges
- Coordinating quiz timer events, countdown warnings, and auto-submission across asynchronous JavaFX application threads.
- Designing polymorphic database schemas and JDBC queries to support multiple distinct question types.
Key Engineering Decisions
- Strategy Pattern for Scoring: Allows switching between standard scoring, negative marking, and weighted points without altering exam runner code.
- State Pattern for Exam Lifecycle: Modeled quiz states (Not Started, In Progress, Paused, Submitted, Graded) to prevent invalid state transitions.
- Factory Pattern for Questions: Decoupled UI question component instantiation from question data models.
Trade-Off Analysis & Architectural Rationale
Strategy Pattern for Examination Scoring
Monolithic switch/case scoring logic
Decouples grading algorithms (standard, negative marking, weighted) from exam runner execution.
Introduces additional interface and strategy class hierarchies.
Observer Pattern for Exam Timer & UI Sync
Polling thread inside JavaFX controller
Ensures UI countdown and auto-submission events execute safely on the JavaFX Application Thread.
Requires explicit listener deregistration to prevent memory leaks.
Result & Outcome
Completed and presented as the final Mini-SPL course project at IIT DU, achieving clean automated test coverage and seamless multi-role examination workflows.