Coursework completed for CS1027B at Western University.
This repository contains four major Java assignments that progressively develop skills in object-oriented programming, file processing, data structures, recursion, graph traversal, pathfinding, and tree-based algorithms.
- Java
- Object-Oriented Programming (OOP)
- File I/O
- Custom Data Structures
- Arrays and Dynamic Arrays
- Linked Lists
- Stacks
- Trees
- Graph Traversal
- Recursion
- Generics
- Exception Handling
- Java Swing
- Algorithm Design
A periodic table management system that reads chemical element data from external files and organizes elements into a structured representation of the periodic table.
- Periodic table construction
- Element lookup by symbol
- Period retrieval
- Group retrieval
- Lanthanide management
- Actinide management
- File-based dataset loading
- Formatted periodic table output
- File Processing
- Arrays and 2D Arrays
- Data Parsing
- Object-Oriented Programming
- Search Operations
- Data Organization
- Scientific Data Modeling
PeriodicTable.javaElement.javaTextFileReader.java
A freight train management simulation built using a custom doubly linked list structure and an inheritance-based class hierarchy.
- Train construction and management
- Train car insertion and removal
- Custom doubly linked list implementation
- Freight compatibility checking
- Refrigerated cargo management
- Dynamic train reconfiguration
- Specialized train car types
- Custom exception handling
- Linked Lists
- Doubly Linked Data Structures
- Inheritance
- Polymorphism
- Encapsulation
- Generic Classes
- Exception Handling
- Object-Oriented Design
Train.javaTrainCar.javaReefer.javaDoubleNode.javaTrainException.java
A pathfinding application that navigates a hexagonal campus map while avoiding hazardous goose-populated areas.
- Hexagonal map navigation
- Goose avoidance logic
- Pathfinding algorithm
- Backtracking system
- Neighbor analysis
- Campus graph traversal
- Real-time graphical visualization
- Custom stack implementation
- Graph Traversal
- Stack ADTs
- Backtracking Algorithms
- Pathfinding
- Generic Programming
- GUI Development
- Data Structures
- Exception Handling
CampusWalk.javaArrayStack.javaStackADT.javaMap.javaHexagon.javaHexLayout.java
A complete filesystem simulator that models files and directories using tree-based data structures and custom collection implementations.
- Hierarchical directory management
- File and folder creation
- Recursive size calculation
- Lowest Common Ancestor (LCA) computation
- Relative path generation
- Recursive file copying
- File movement operations
- Custom ordered collections
- Tree Data Structures
- Recursive Algorithms
- Lowest Common Ancestor (LCA)
- Collection Framework Design
- Iterators
- Generic Programming
- Filesystem Architecture
- Software Testing
DirectoryTree.javaFileSystemObject.javaComputerFile.javaArrList.javaArrayOrderedList.javaArrayIterator.java
Throughout these assignments I gained experience with:
- Advanced Object-Oriented Programming
- Custom Abstract Data Types (ADTs)
- Linked Lists
- Dynamic Arrays
- Trees and Hierarchical Data Structures
- Graph Traversal Algorithms
- Pathfinding and Backtracking
- Recursion
- Generic Programming
- File Input and Output
- Exception Handling
- GUI Development with Java Swing
- Algorithm Design and Analysis
- Software Testing and Debugging
- Technical Documentation
- Dynamic Arrays
- Ordered Lists
- Iterators
- Doubly Linked Lists
- Stacks
- Trees
- Graph-Like Structures
Potential future enhancements include:
- More efficient search and traversal algorithms
- Hash tables and hash maps
- Priority queues and heaps
- Balanced search trees
- Graph shortest-path algorithms
- JUnit testing
- JavaFX user interfaces
- Database persistence
- Multi-threaded applications
- Design pattern implementation