This repository contains the Java programming assignments that I completed while taking COS 226 at Princeton during the spring semester of my first year.
The course focuses on the implementation of various data structures and algorithms. It also concentrates on the time and space complexities of each of them. Topics covered can be found here.
Most of the dependencies that I used are contained within the course's algs4.jar. This can be found, along with installation instructions, at this link. The same link also has any needed java programs and libraries that may not be in the .JAR file. Note at times are commenting is entirely inconsistent, this depends on how "over" each assignment I was :D
Assignment | Description | Topics Learned |
---|---|---|
Estimate the percolation threshold of a composite system
|
quick-union, weighted quick-union, Monte Carlo method
|
|
Create Deque and RandomizedQueue objects
|
linked lists, stacks, queues, deques, Java iterators
|
|
Autocomplete feature for user queries
|
selection sort, insertion sort, binary search, mergesort, quicksort, Java comparators
|
|
Solver for any k-puzzle
|
A* search, priority queues/heaps, heapsort
|
|
Build a WordNet object with built-in search methods
|
hash tables, depth-first search, breadth-first search, topological sort, minimum spanning trees, Kruskal's algorithm, Prim's algorithm
|
|
Content-aware image resizing API
|
Bellman-Ford algorithm, Dijkstra's algorithm, Ford-Fulkerson algorithm, MinCuts, MaxFlows
|
|
Implement a machine learning model to detect fraudulent credit card transactions
|
clustering algorithms, dimensionality reduction, weak learners, boosting algorithms, decision stumps, AdaBoost
|
Please note, this readme was shamelessly stolen and adapted from Ryan Albertson, who's own COS-226 repository can be found here.