SAHIL-SANGHVI(1)→ TERMINAL(1)

Java Data Structures

6 labs and 9 assignments in Java — ADTs from linked lists and stacks through heaps, BSTs, and hash maps.

project→ sourceJava

tech:

README

CSC 115 — Fundamentals of Programming II

Java Topic

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.