The Coursebook is an aim to standardize and build upon Angrave's original wikibook experiment.
The most recent version of the coursebook as a single pdf is here: main.pdf.
- Improve the quality and rigour of the original wikibook
- Keep the openness aspect hand have this be a repository people can make pull requests into.
- Improve the factualness by including citations, footnotes, extended reading, and a glossary
- Have exports in the form of pdf and html
- The content of the coursebook should be in between the current wikibook and an exhaustive survey of linux programming
- Have ownership of the book in case it should go into syndication or something similar
- Have travis build so people don't need to install a bunch of pre-reqs to get started.
- Keep in line with lectures
- Not everything you find on here will be in the quiz
- This is class is meant to be pragmatic. Unless extremely relevent, you won't get asked to cite dates and facts.
Want to contribute? Afraid of latex or python? Don't be!
If you want to contribute, all you need to do is
- Fork
- Make the changes by
- Going to the appropriate chapter
- Make changes either online or on the command line
- Make a PR
- The PR will be cleared up and on build, a new version of the couresbook will be released and deployed!
If you want to make a quick typo fix or a quick formatting fix, make the pull request and it should be resolved soon.
Otherwise, you should probably make an issue first to see what either the course staff or the professor has to say about it. Examples of something like this could be adding a new chapter, adding a substantial amount about some topic, adding more "fun examples", or changing the build system.
To make sure that this document never goes out of date, look in .travis.yml
to find all the build dependencies need for the project
Optional Dependencies include
- inotify-tools (
sudo apt install inotify-tools
on recent debian/ubuntu distros)
To build this project, we have provided a make file and a rebuild script. To compile the latex, just run make
from the root of the project. If you'd like the project to automatically recompile as you make changes, run ./rebuilder.sh
instead.
By default, ./rebuilder.sh
will create a new file in /tmp/
and will re-use it every time it is ran for logging purposes. If a command line argument is specified, ./rebuilder.sh
will treat the argument as a path and will use that as its logging file instead.
- All directories that don't start with
_
are a chapter in the coursebook a chapter is a tex file with bib files and optional images github_redefinitions.tex
glossary.tex
latexmk.outlatexmkrc
configuration file for latexmk.LICENSE.code
Licenses all the code in the bookmain.pdf
The PDF version of the coursebookmain.tex
Makefile
Tried and true makefile for buildings. We don't need ya fancy build systemsorder.tex
This file is autogenerated from theorder.yaml
file so that the actual ordering of the chapter stays in one placeorder.yaml
This file controls the ordering of the chapter. Changing this and typing make will causeorder.tex
to be reformatted.prelude.tex
contains all of the includes and definitions before the start of the document in main. This is a different file solely so that we can accurately convert each chapter with pandoc. More in the_scripts/gen_wiki.py
rebuilder.sh
Efficiently autobuilds the files for maximum productivityrequirements.txt
python requirements if you are building thewiki
version of the coursebook_scripts
This folder contains various scripts to do different things like generate the wiki, spellcheck etc.
Let's say some time in the near future someone decides that it isn't worth to keep up all this infrastructure and man hours. That is entirely fine! There is a built-in eject button that is a one step fix: delete the travis file. Builds will not trigger automatically but you can clone the wiki part of the github repository and turn it back into a good old fashioned coursebook. No maintenance required
To version the repo you should use -num . The term-year combo are simple way of denoting that this is the version of the book for the current semester. num
is simply an incrementer for bug fixes, or material that was already covered in lecture and just needs to be added to the book. No num
release will introduce no material that was not introduced in lecture or is not extra.