Java Data Structures
6 labs and 9 assignments in Java — ADTs from linked lists and stacks through heaps, BSTs, and hash maps.
tech:
README
CSC 115 — Fundamentals of Programming II
My full set of labs and assignments from CSC 115, the second intro programming course at the University of Victoria — the sequel to CSC 110, moving from Python into Java and from "programming" into data structures: ADTs, linked lists, stacks, queues, generics, heaps/priority queues, binary search trees, and map implementations (linked, BST-backed, and hash-based), plus a basic performance comparison between them.
Each assignment builds an ADT from an interface (List.java, Stack.java,
Queue.java, Map.java, ...) down to a working implementation, tested against a
provided *Tester.java harness.
Assignments
| # | Folder | What it builds |
|---|---|---|
| 1 | assignments/assignment1/ |
Array manipulation exercises implemented without any built-in java.util.Arrays methods. |
| 2 | assignments/assignment2/ |
AuctionItem + Fundraiser — object composition over an array of items (bidding/fundraiser tracking). |
| 3 | assignments/assignment3/ |
A3LinkedList — a doubly-linked list ADT implemented from scratch against the A3List interface. |
| 4 | assignments/assignment4/ |
A4Stack<T> — a generic, linked-node stack ADT, applied to ranking Competitor objects. |
| 5 | assignments/assignment5/ |
SinglyLinkedList / LinkedSongList — a singly-linked list managing a playlist of Song objects. |
| 6 | assignments/assignment6/ |
GenericQueue<T> — a generic queue ADT modeling EventLine, a line-up where people can join at the back, bribe their way to a position, or leave in groups. |
| 7 | assignments/assignment7/ |
HeapPriorityQueue / LinkedPriorityQueue — a heap-based priority queue used to model ConcertLine, ordering Attendees by ticket priority. |
| 8 | assignments/assignment8/ |
BSTMap — a Map ADT backed by a binary search tree (BinarySearchTree), with ShowTree/TreeView to visualize the tree structure. |
| 9 | assignments/assignment9/ |
Three Map implementations side by side — BSTMap, HashMap, and LinkedMap — with a Performance harness comparing their get/put costs. |
Labs
| # | Folder | Topic |
|---|---|---|
| 1 | labs/lab1/ |
First Java classes — a Student class and its testers. |
| 2 | labs/lab2/ |
More class design practice with Student. |
| 3 | labs/lab3/ |
Inheritance/polymorphism — Shape → Circle/Rectangle, held in a ShapeList. |
| 5 | labs/lab5/ |
Array-based Stack and reference-based Queue implementations. |
| 6 | labs/lab6/ |
IntegerLinkedList — a linked list specialized to int values. |
| 7 | labs/lab7/ |
Reference-based Stack/Queue with custom checked exceptions (StackEmptyException, QueueEmptyException). |
(No Lab 4 — not part of the surviving material for this term.)
Building & running
Each assignment/lab folder is self-contained. Compile and run a tester directly, e.g.:
cd assignments/assignment7
javac *.java
java A7Tester
🎓 Project Context
Built as part of CSC 115: Fundamentals of Programming II at the University of Victoria (Spring 2024).
⚠️ Academic Integrity Notice
This repository is maintained for portfolio and educational purposes only. If you are currently enrolled in CSC 115 at the University of Victoria or a similar data-structures course, please note that using this code in your own assignments may constitute a violation of Academic Integrity policies.