A two-part Java project built solo as a sixth-semester Advanced OOP academic assignment, covering generic class design, inheritance, file-based data parsing, and custom circular/priority queue data structures.
Models a college CS department using generics and inheritance:
Professor<T>— a generic class representing a professor, with fields for seniority, hiring date, disciplines taught, and offered courses. Parses professor records from a colon-delimited text file (profs.txt) usingScanner, and includes acompareTo()method for seniority-based comparison.Courses— represents a course (ID, title, discipline, hours, number of groups), parsed fromcourses_f22.txt.Department— extendsProfessor<Object>and manages aHashMap<String, Courses>of offered courses.
Demonstrates: generics, inheritance, HashMap/HashSet/ArrayList usage, LocalDate handling, and file I/O parsing of structured text data into domain objects.
A progression of custom queue implementations, each building on the last:
MyQueue— a basicint-based circular array queue (enqueue/dequeue with modulo wraparound, resizing)MyGenQueue<T>— a generic version of the same circular queue, working with any reference typeMyPriorityCircularQueue<T extends Comparable<T>>— extendsMyGenQueue<T>to maintain elements in priority order on insertion, using a bounded type parameter so onlyComparabletypes can be used
Demonstrates: generic type parameters, bounded type parameters (T extends Comparable<T>), inheritance over generic classes, circular array indexing, and dynamic array resizing.
- Java (with the Java Module System — see
module-info.java)
src/MyCsDept/ → Professor, Courses, Department classes + sample data files
src/project/ → MyQueue, MyGenQueue, MyPriorityCircularQueue
Each class with a main() method (Professor, Courses, MyQueue) can be run independently:
Professor.main()andCourses.main()read and parse the sample.txtdata files insrc/MyCsDept/MyQueue.main()is interactive — prompts for queue size and elements via console input
Built solo by Riyaz Badhan as a sixth-semester Advanced OOP academic project.