Skip to content

md-jamal/coursebook

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coursebook

Build Status Current Pdf Link Current Wiki Link Current HTML Link

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.

Overview

Goals

  • Improve the quality and rigour of the original wikibook
  • Keep the openness aspect.
  • Improve the factualness by including citations, footnotes, extended reading, and a glossary
  • Have exports in the form of pdf, md, 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.

Contributing & Building

Read CONTRIBUTING.md

Optional Build dependecies

If you'd like the project to automatically recompile as you make changes, run ./rebuilder.sh instead. You need inotify tools.

  • inotify-tools (sudo apt install inotify-tools on recent debian/ubuntu distros)

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.

Scripts

Documentation, Structure

  • 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 - Various redefinitions so that pandoc recognizes files
  • glossary.tex - Various glossary files
  • latexmkrc - Configuration file for latexmk. Currently, it only deals with glossary generation.
  • LICENSE.code Licenses all the code in the book
  • main.tex - The top level tex files that compiles all the other files
  • Makefile Tried and true makefile for buildings. We don't need ya fancy build systems
  • order.tex This file is autogenerated from the order.yaml file so that the actual ordering of the chapter stays in one place
  • order.yaml This file controls the ordering of the chapter. Changing this and typing make will cause order.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 productivity
  • requirements.txt python requirements if you are building the wiki version of the coursebook
  • _scripts This folder contains various scripts to do different things like generate the wiki, spellcheck etc.

Eject Button

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

Versioning

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.

About

Systems Programming Coursebook

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TeX 97.5%
  • Python 1.8%
  • Other 0.7%