Class website for Sociological Gobbledygook, a.k.a. Introduction to Quantitative and Computational Legal Reasoning, University of Iowa College of Law, spring 2019.
This used to be just the private repository for the course website, with the original plan to be to have lessons and discussions of material hosted in other repositories. That didn't really work, so I've opened this repository to the public and am declaring it the Official Source for all lessons and such.
Other repositories that have touched this course:
the original official repository which has pre-course discussions of content, and some very preliminary drafts of lesson material.
a lesson repository that I created to allow students to clone the first few weeks of Jupyter notebooks. This ultimately didn't work very well, so I just made all the Jupyter notebooks directly downloadable from the website.
a library repository that I created just to store a pipfile with verified working versions of every library used in the lessons, and the basis for an ipython kernel that I use to write all the lessons. It eventually grew to include early drafts of lessons as well, and I'll probably keep using it for that purpose down the line (so as not to pollute the history of this repository with a bunch of changes)
The actual lesson material is in the form of jupyter notebooks and markdown files in the content directory.
The output directory is automatically generated and should not be touched. It's generated by the Pelican static site generator.
The custom_build_scripts directory, the plugins directory, plus the scripts in the root of this directory (
.sh files, the
Makefile) build the website. Some are generated by Pelican, others are generated by me or tweaked by me from Pelican's originals. Don't touch them unless you know what you're doing. (And definitely don't touch
The notmyidea-mod directory contains the templates for the HTML pages. Again, probably not a good idea to touch them unless you know what you're doing.
TODO (PG tasks):
- Move pipfile to this repository as canonical source of truth for library versions.
- Fix the arbitrarily assigned dates for lessons in this repository.
- Figure out a way to tag problem sets as belonging to particular iterations of the course and hold old pests in an archives section (as there will obviously have to be new ones for each session, but the old ones are good study material.
- Fix the painfully slow build process where each lesson gets a whole new PDF generated and uploaded on every build/deploy even if no content has changed. (This probably involves taking a fast hash of every lesson file, shoving them into a SQLite database or some such, and checking the hash before pdf converting. (update: did that. works fine.)
- Fix the terribly slow upload because I'm doing a million PDFs of the lessons on every new deploy, even when unchanged. I'll need to write a new upload script that is rather more selective on files (and fix the changes cli to be able to handle binary files. Or just make the upload process be cloning the repo from the webserver. Which might be more sensible anyway, because then I can just grant limited ssh access to run a cloning script to multiple devices and be able to deploy from anywhere.)
- Devise a non-arbitrary ontology to rationalize the tagging system.
- Fix the CSS for tables in Jupyter notebooks converted to HTML so they aren't misaligned and horrifically ugly.
- Add a script to force-refresh cloudflare cache on every deploy so as to prevent outdated site being served to students.
Notes to self (students ignore)
Currently searching for datacamp replacement.
Dataquest free lessons: https://www.dataquest.io/directory/ Pandas on codeacademy: https://www.codecademy.com/learn/data-processing-pandas Bunch of nice pandas resources: https://www.dataschool.io/best-python-pandas-resources/ Some guy's course (he's got good SEO but is it any good?): https://medium.com/dunder-data/intro-to-pandas-free-course-20486c0f9e76
Hacker rank python challenges for daily practice:
https://www.hackerrank.com/challenges/py-if-else/ actually assign all the intro ones for week one: https://www.hackerrank.com/domains/python?filters%5Bsubdomains%5D%5B%5D=py-introduction