How to choose and use appropriate algorithms and data structures to help solve data science problems. Key concepts such as algorithmic complexity and recursion.
Note: lecture recording videos from the 2019 course offering are available here.
Lab topic | |
---|---|
1 | Computational complexity |
2 | Recursive algorithms & data structures |
3 | Graphs |
4 | Discrete optimization |
By the end of the course, students are expected to be able to:
- Analyze the scalability and trade-offs of various basic algorithms and data structures using Big-O notation.
- Read and interpret recursive functions.
- Select appropriate data structures, such as graphs, given a data set.
- Map certain real-world problems to discrete optimization problems.
- Diagnose rate-limiting aspects of slow Python code and enumerate various options for speeding it up.
- Problem Solving with Algorithms and Data Structures using Python
- Visualizing Algorithms
- 500 Data Structures and Algorithms practice problems and their solutions
- Recursion practice problems
- P vs. NP and the Computational Complexity Zoo (video)
- Goodrich, Tamassia, Goldwasser. Data Structures and Algorithms in Python.
- Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani, Algorithms, also available here.
- John Kleinberg and Eva Tardos, Algorithm Design
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein ("CLRS"), Introduction to Algorithms.