Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/UBC-MDS/DSCI_512_alg-data-struct
https://github.com/UBC-MDS/DSCI_512_alg-data-struct
course module
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/UBC-MDS/DSCI_512_alg-data-struct
- Owner: UBC-MDS
- License: other
- Created: 2019-05-27T15:59:22.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-06-10T22:39:35.000Z (over 2 years ago)
- Last Synced: 2023-03-03T12:28:30.330Z (over 1 year ago)
- Topics: course, module
- Language: Jupyter Notebook
- Homepage:
- Size: 5.1 MB
- Stars: 4
- Watchers: 5
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# DSCI 512: Algorithms and Data Structures
How to choose and use appropriate algorithms and data structures to help solve data science problems. Key concepts such as algorithmic complexity and recursion.
## Schedule
Note: lecture recording videos from the 2019 course offering are available [here](https://www.youtube.com/playlist?list=PLWmXHcz_53Q02OsWy9IduQiSGUSnVGFhm).
| # | Topic | Optional reading/watching |
|---|-------|---------------------------|
| 1 | [Time complexity, big O, space complexity](lectures/01_complexity-big-O.ipynb) | [Introduction to Big O notation](https://www.youtube.com/watch?v=D6xkbGLQesk) |
| 2 | [Searching, sorting, hash tables](lectures/02_searching-sorting-hash.ipynb) | [Binary search video](https://youtu.be/y62zj9ozPOM?t=1314) - watch until 31:00. |
| 3 | [Recursive algorithms](lectures/03_recursive-algorithms.ipynb) | |
| 4 | [Recursive data structures](lectures/04_recursive-data-structures.ipynb) | |
| 5 | [Graphs, graph searches](lectures/05_graphs.ipynb) | [Graph traversals video](https://www.youtube.com/watch?v=bIA8HEEUxZI); brilliant.org on [Graph Theory](https://brilliant.org/wiki/graph-theory/), [Traversals](https://brilliant.org/wiki/traversals/), and [BSTs](https://brilliant.org/wiki/binary-search-trees/) |
| 6 | [Adjacency matrices, sparse matrices, generators, map/reduce](lectures/06_sparse-matrices.ipynb) | [StackOverflow post on generators](https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do/231855#231855) |
| 7 | [Discrete optimization](lectures/07_discrete-optimization.ipynb) | [Linear programming and discrete optimization with Python using PuLP](https://towardsdatascience.com/linear-programming-and-discrete-optimization-with-python-using-pulp-449f3c5f6e99) |
| 8 | [Dynamic programming, Speeding up Python code](lectures/08_dynamic-programming-vectorization.ipynb) | [Dynamic programming](http://web.mit.edu/15.053/www/AMP-Chapter-11.pdf) |## Lab Assignments
| | Lab topic |
|-----|-------------|
| 1 | [Computational complexity](labs/lab1/lab1.ipynb) |
| 2 | [Recursive algorithms & data structures](labs/lab2/lab2.ipynb) |
| 3 | [Graphs](labs/lab3/lab3.ipynb) |
| 4 | [Discrete optimization](labs/lab4/lab4.ipynb) |## Course Learning Objectives
By the end of the course, students are expected to be able to:
1. Analyze the scalability and trade-offs of various basic algorithms and data structures using Big-O notation.
2. Read and interpret recursive functions.
3. Select appropriate data structures, such as graphs, given a data set.
4. Map certain real-world problems to discrete optimization problems.
5. Diagnose rate-limiting aspects of slow Python code and enumerate various options for speeding it up.## Online reference material
* [Problem Solving with Algorithms and Data Structures using Python](https://runestone.academy/runestone/books/published/pythonds/index.html)
* [Visualizing Algorithms](https://bost.ocks.org/mike/algorithms/)
* [500 Data Structures and Algorithms practice problems and their solutions](https://techiedelight.quora.com/500-Data-Structures-and-Algorithms-practice-problems-and-their-solutions)
* [Recursion practice problems](https://www.w3resource.com/python-exercises/data-structures-and-algorithms/python-recursion.php)
* [P vs. NP and the Computational Complexity Zoo](https://www.youtube.com/watch?v=YX40hbAHx3s) (video)## Books
* Goodrich, Tamassia, Goldwasser. [Data Structures and Algorithms in Python](https://www.amazon.ca/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/).
* Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani, *Algorithms*, also available [here](http://highered.mheducation.com/sites/0073523402/index.html).
* John Kleinberg and Eva Tardos, [Algorithm Design](https://www.amazon.ca/Algorithm-Design-Jon-Kleinberg/dp/0321295358)
* Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein ("CLRS"),
[Introduction to Algorithms](https://www.amazon.ca/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844).