Skip to content
FhebRekerPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

CS1027B - Computer Science Fundamentals II (Java)

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.

Technologies

  • 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

Assignment 1: Chemical Compounds

A periodic table management system that reads chemical element data from external files and organizes elements into a structured representation of the periodic table.

Features

  • Periodic table construction
  • Element lookup by symbol
  • Period retrieval
  • Group retrieval
  • Lanthanide management
  • Actinide management
  • File-based dataset loading
  • Formatted periodic table output

Skills Demonstrated

  • File Processing
  • Arrays and 2D Arrays
  • Data Parsing
  • Object-Oriented Programming
  • Search Operations
  • Data Organization
  • Scientific Data Modeling

Core Classes

  • PeriodicTable.java
  • Element.java
  • TextFileReader.java

Assignment 2: Trains and Logistics

A freight train management simulation built using a custom doubly linked list structure and an inheritance-based class hierarchy.

Features

  • 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

Skills Demonstrated

  • Linked Lists
  • Doubly Linked Data Structures
  • Inheritance
  • Polymorphism
  • Encapsulation
  • Generic Classes
  • Exception Handling
  • Object-Oriented Design

Core Classes

  • Train.java
  • TrainCar.java
  • Reefer.java
  • DoubleNode.java
  • TrainException.java

Assignment 3: Avoid the Goose

A pathfinding application that navigates a hexagonal campus map while avoiding hazardous goose-populated areas.

Features

  • Hexagonal map navigation
  • Goose avoidance logic
  • Pathfinding algorithm
  • Backtracking system
  • Neighbor analysis
  • Campus graph traversal
  • Real-time graphical visualization
  • Custom stack implementation

Skills Demonstrated

  • Graph Traversal
  • Stack ADTs
  • Backtracking Algorithms
  • Pathfinding
  • Generic Programming
  • GUI Development
  • Data Structures
  • Exception Handling

Core Classes

  • CampusWalk.java
  • ArrayStack.java
  • StackADT.java
  • Map.java
  • Hexagon.java
  • HexLayout.java

Assignment 4: DIY File System

A complete filesystem simulator that models files and directories using tree-based data structures and custom collection implementations.

Features

  • 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

Skills Demonstrated

  • Tree Data Structures
  • Recursive Algorithms
  • Lowest Common Ancestor (LCA)
  • Collection Framework Design
  • Iterators
  • Generic Programming
  • Filesystem Architecture
  • Software Testing

Core Classes

  • DirectoryTree.java
  • FileSystemObject.java
  • ComputerFile.java
  • ArrList.java
  • ArrayOrderedList.java
  • ArrayIterator.java

Key Learning Outcomes

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

Data Structures Implemented

  • Dynamic Arrays
  • Ordered Lists
  • Iterators
  • Doubly Linked Lists
  • Stacks
  • Trees
  • Graph-Like Structures

Future Improvements

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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages