Course website dev notes¶
All course materials live in my a github repository:
https://github.com/isaacovercast/CSCI232
Building this website¶
Install mkdocs-material into your current environment.
conda install mkdocs-material -c conda-forge
Move into the repo directory alongside mkdocs.yml and build locally with mkdocs
.
Changes to the repo will now automatically update in the website being served
to localhost:8000.
mkdocs serve
Other good online DS&A materials¶
- Crafting Interpreters - Hash Tables (Nystrom): This is actually quite a nice and thorough but still accessible textbook-like approach to the subject (uses C for the example code). This is actually a really nice and modern treatment. It's part of a book about programming language design, so too bad it is not from a DS&A book. Could be a good opportunity to follow this lead and do a whole DS&A book in this style.
- Visualgo Hash table: A direct link to all the text contained in the E-Learning interactive part of this page, very concise, good details but terse.
- Grokking Algorithms (Bhargava): This is a very fun and accessible book about algorithms that uses drawings and a conversational style to illustrate concepts. It's really fun to read, maybe a little 'light' overall, but students might like it.
DS&A in python¶
- A nice list of phython DS&A books
- Data Structures and Algorithms in Python by Goodrich, Tamassia, & Goldwasser pdf: Seems like a pretty solid and standard DS&A book. Hash table description starts on page 410.
- Fundamentals of python: Data Structures by Lambert
- Data Structures and Algorithms with Python (Springer 2014): Pretty old fashioned.
- Data Structures and Algorithms (github): A textbook-like collection of python code implementing several different data structures. Not comprehensive.
DS&A in rust¶
Both of these are freely available online in github repositories
Hash table visualizations¶
- Visualgo Hashtable: Very fancy. Has a built in lesson that is quite extensive. Exploration mode is excellent. Developed by National Univ. Singapore. A huge amount of other data structures are covered with similarly cool visualization. Worth looking at.
- Open Hashing (SF State): Implements mod 13 hashing, it's cool but you have to add one element at a time by hand, maybe useful.
- Hashing Visualization (ACM): Can choose your hash function and collision resolution policy, maybe good for illustrating linear probing. Has a bunch of other stuff not covered in the book.
- Virtual Labs - Hash Tables: Less a visualization platform and more of a self-guided learning platform (developed by the Ministry of Education of the Government of India, wow!). It actually does have some interactive parts under the 'Practice' left-navs.
Getting Java working with Jupyter notebooks¶
It turns out there are not too many options for running java kernels in jupyter. I messed with this for a long time and never got satisfactory results, mostly because I wanted students to do some easy plotting and this is impossible in Java. I did get a java jupyter kernel working though, with some trial and error:
- IJava: I ended up using this because it was simple
to install (
conda install -c conda-forge ijava
) and it seemed to 'work', but it has few features and is not actively maintained. - awesome-jupyter-java maintains a list of kernels (both active and inactive)
- Kotlin-jupyter seems promising, as kotlin is designed to be backwards compatible with java, so the algs4 code should work, and also it could give access to more plotting functionality.
- ganymede & rapaio also both seemed promising, but supported by individuals so maybe not robust in the long term.
- The JetBrains team maintains a lets-plot implementation which works with Kotlin, and theoretically could work in jupyter notebooks but I never got that far.
Materials from past courses¶
- CSCI 232 Spring 2024 - Syllabus
- CSCI 232 Spring 2024 - Class Schedule
- CSCI 232 Fall 2021
- Lucy's course materials are all layed out nicely in github pages
Materials from UIUC CS courses¶
The Grainger College of Engineering has a massive CS program and all their course materials are standardized and available on their website. It is a treasure trove of useful resources!
VisuAlgo Cheat-sheet¶
Insert items to generate separate chaining in the text:
90, 80, 51, 71, 62, 52, 2, 42, 53, 44, 24, 14, 45, 85, 15, 26, 56, 67, 17, 18
Items to generate Linear probing in the text:
91, 84, 19, 59, 99