Data Structures 2 Syllabus

Grading

  • An A is given to anyone who performs the median number of github commits across assignments or higher.
A is 100%-68% or more.
B is 67-56%.
C is 55-21%.
D is 20-11%.
F is 10-...%.
  • Historically, using this grading method has drawn strong correlations between efforts on assignments and number of commits.

Description

This syllabus covers a comprehensive curriculum of data structures and algorithms, starting from the basics of CLI and Java programming, moving on to object-oriented programming, and culminating in advanced topics such as dynamic programming and graph algorithms. The course is designed to provide hands-on experience with implementing various data structures such as linked lists, arrays, trees, and graphs, as well as various algorithms for searching, sorting, and manipulating data.

Throughout the syllabus, students will be exposed to a range of programming challenges and projects, including the implementation of a tic-tac-toe game, a phone number factory, and an arcade application, all while using the concepts and techniques covered in class.

Additionally, the syllabus also covers advanced topics such as minimum spanning trees, maximum flow and minimum cut, dynamic programming techniques for solving problems such as the longest increasing subsequence and coin change, and advanced sorting and search algorithms.

The final project of the course involves the implementation of a pathfinding algorithm, providing students with a real-world application of the concepts they have learned.

In conclusion, this syllabus provides a comprehensive education in data structures and algorithms, with a strong emphasis on practical implementation and real-world applications.

Introduction:

  • CLI Walkthrough
  • Creating a Repository
  • My First Repository

Java Fundamentals:

  • Creating a Java Project
  • My First Java Project
  • Java Types
  • Java Operators
  • Java Control Flow
  • Java Recursion
  • Foundations of Object Oriented Programming

Automata and Graph Algorithms:

  • Automata and Graph Algorithms: Jfoot Wombats
  • Algorithm Design and Finite State Machines: Jfoot Greeps

Data Structures:

  • Numbers Triangles Tables
  • Intro to Array Manipulation
  • Search Algorithms: Linear Performance
  • Sorting Algorithms: Bubble Sort
  • String Array Utilities
  • Implementing Tic Tac Toe
  • Java Fundamentals Project: Dice and Bin
  • Implementing a Phone Number Factory

Object Oriented Data Structures:

  • Object Oriented Structures: Enums & POJOs
  • Implementing My Collection: Iterables
  • Implementing My Collection: Iterators
  • Implementing My Collection: Node Class
  • Implementing My Collection: LinkedList
  • Implementing My Collection: ArrayList
  • Implementing My Collection: Stack
  • Implementing My Collection: KeyValuePair
  • Implementing My Collection: Sets
  • Implementing My Collection: Maps
  • Implementing My Collection: BinaryTree
  • Implementing My Collection: TrieTree
  • Hash Tables
  • Heaps

Algorithmic Analysis

  • Growth of functions
  • O notation
  • Algorithmic complexity

Algorithms:

  • Sorting Algorithms: Merge Sort
  • Sorting Algorithms: Quick Sort
  • Graph Representations
  • Graph Algorithms: Dijkstra’s Algorithm
  • Dynamic Programming: Identifying all substrings of a String
  • Dynamic Programming: Identifying longest common substring of 2 Strings
  • Chaining, Linear Probing Direct Hashing, Cryptography

Final Project:

  • Collections Project: Implementing an Arcade Application