nottingham-cs-notes

All my notes for the University of Nottingham’s BSc Hons Computer Science and Artificial Intelligence with Year in Industry programme. Files are automatically updated and deployed at midnight UK time every day. Visible on notes.oling.dev and open-sourced on GitHub.

These notes are intended as a “spiritual successor” to my Cheat Sheets on iBaguette; they are nowhere near as polished, but should remain useful to an extent.

View notes

Year 2 - All Notes

Year 1 - All Notes

Other lectures

Miscellaneous notes

You can browse the miscellaneous folder here.

Setup & Automation

Every night at midnight, a cron job (see below) on my homelab syncs a S3-compatible storage bucket that contains my notes in Obsidian (which uses Remotely Save to sync notes to the bucket every 5 minutes) to this Git repo, and pushes them. Then, a Jekyll build is started on GitHub which renders and deploys the new, updated notes to the GitHub Pages site, visible on this page.

If the homelab is off (which should be never) then this repository will not be updated; usually, this should only be the case for a few days at most.

Sometimes I write notes in a hurry and this (especially for mathematics) causes the Jekyll build to fail. I am notified when this happens and notes are usually fixed for the next day; if this persists, feel free to open a PR. It should be an easy fix.

Maintenance

If the remote repository is pushed to, a manual push and sync is required to avoid conflicts before the cron job can run again successfully.

Crontab expression

0 0 * * * cd /mnt/mega/uni-notes-git/ && /usr/bin/rclone sync --exclude .git/ --exclude .github/ r2:notes . -v && /usr/bin/git add . && /usr/bin/git commit -m "[cron] auto commit: update notes" && /usr/bin/git push &>> /mnt/mega/notes_sync.log

where /mnt/mega refers to the mount point of the external drive mounted in /etc/fstab as UUID=<uuid> /mnt/mega ext4 nofail,defaults 0 2, and notes is the name of the storage bucket.

Must exclude .git to reduce remote bucket Class A/B writes and storage used, and to speed up syncing. Must also exclude .github to not overwrite/remove Jekyll build settings.

Star History

A few people have found this useful so far, so here is a nice graph to visualise it.

Star History Chart