Data Structures and Advanced Algorithms (Java)
Labs from the Data Structures and Algorithms class taught at Williams College. The course covers material on topics including Introduction to Java, Object-Oriented Programming, Generics, Associations, Dictionaries and Vectors, Time Complexity Analysis, Interfaces, Sorting Algorithms, Stacks and Queues, Iterators, Linked Lists, Graphs, and Trees
- CoinStrip - Uses arrays and vectors to create a simple coinstrip game.
- WordGen - Uses associations to create a random writings after reading from another file.
- Recursion - Uses recursion to solve problems such as subsequences, printing in binary, checking whether a string is palindrome and many more.
- Linked Lists - Extends on the implementation of double linked list nodes, to use a puppet node as the head and tail.
- Sorting - Introduces to the java sorting using Comparators, extending a vector class to support custom sorting orders and lastly introduces sorting algorithms and their implementation in Java.
- PostScript - Uses stacks to create a basic postscript language interpreter.
- Two Towers - Introduces the idea of iterators and their implementation in java and bit masking as a way of creating subsets. The lab then uses iterators to solve computational problems.
- Super Lexicon - Using a trie to implement a spelling corrector. I implemented a highly efficient Lexicon class with functionality to suggest spelling corrections for misspelled words.
- Exam Scheduling - Uses graphs to create exam schedule for students, avoiding schedule clashes and each student taking at most 1 exam per day.