Lecture:
Exercise:
Tutorial:
- Rust Book, Brown University with great quizzes: https://rust-book.cs.brown.edu/
- Rust by Example: https://doc.rust-lang.org/rust-by-example/index.html
- Algorithms and Data Structures in Rust (Second half)
- Walk through the rustlings tutorial: https://github.com/rust-lang/rustlings
- Finish all Exercises for Session 1 in Rust
In each exercise we will attempt a challenging algorithmic problem from the CSES Problemset
The course is taught in a Flipped Classroom style. You are required to prepare coding exercises and will be asked to present them in front of class on a random selection basis.
- 30 min | Review and joint development of selected Homework Exercises
- 60 min | Theoretical input on computational thinking with Algorithms and Data Structures.
- 90 min | Applying theoretical input in a hands-on class project: Building the Game of Clack (https://github.com/dominikb1888/clap).
The Exam will be written and online. It will be a code exercise just like the ones you practice with tests provided.
- Algorithms Analysis, Design and Evaluation (Chapter 2)
- Recursion
- Sequences
- Sets and Maps
- Trees
- Graphs
- Membership Structures
- Heaps
- Balanced Binary Search Trees
- B-Trees
- Heuristic Search
| Prepare before | Exercise | Topic | | 2 | Tower of Hanoi | Recursion | | 3 | Increasing Array | Dynamic Arrays | | 4 | Two Sets | Sets | | 5 | Subordinates | Trees | | 6 | Counting Rooms | Graphs | | 7 | | Bloom Filters | | 8 | | Heaps | | 9 | | Balanced Binary Search Trees | | 10 | | B-Trees | | 11 | | Heuristic Search |
Reading:
- https://nnethercote.github.io/perf-book/introduction.html
- https://towardsdatascience.com/benchmarking-rust-compiler-settings-with-criterion-62db50cd62fb
- https://patrickfreed.github.io/rust/2021/10/15/making-slow-rust-code-fast.html
- Last resort - Assembly Output: https://rust.godbolt.org/, https://darkcoding.net/software/underrust-rust-assembly-output/
Recap:
- Rust Memory Allocation and Pointers
Data Structures:
- Linked Lists: Improving on our Exercise
- Doubly Linked Lists
- Skip Lists
- Dynamic Arrays (Vec):
Algorithms for Sorting and Ordering:
- Bubble Sort
- Merge Sort (Divide and Conquer)
- Quicksort
Further Reading:
- TODO
Algorithms:
- Hashing
Data Structures:
- Maps
- Sets
Reading:
- https://nnethercote.github.io/perf-book/hashing.html#:~:text=The%20default%20hashing%20algorithm%20is,short%20keys%20such%20as%20integers
- https://en.wikipedia.org/wiki/Collision_attack
- https://link.springer.com/chapter/10.1007/978-3-642-34931-7_28
- https://www.reddit.com/r/rust/comments/52grcl/comment/d7kcei2/
- https://betterprogramming.pub/implementing-a-hashmap-in-rust-35d055b5ac2b
Data Structure:
- Heap
- Binary Search Tree
- Red-Black Tree
- Trie
- B-Tree
Algorithms
- Heap Sort
- Graph Representation: Adjacency Matrix