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

  1. CoinStrip - Uses arrays and vectors to create a simple coinstrip game.
  2. WordGen - Uses associations to create a random writings after reading from another file.
  3. Recursion - Uses recursion to solve problems such as subsequences, printing in binary, checking whether a string is palindrome and many more.
  4. Linked Lists - Extends on the implementation of double linked list nodes, to use a puppet node as the head and tail.
  5. 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.
  6. PostScript - Uses stacks to create a basic postscript language interpreter.
  7. 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.
  8. 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.
  9. Exam Scheduling - Uses graphs to create exam schedule for students, avoiding schedule clashes and each student taking at most 1 exam per day.
Designed by BootstrapMade