Lawrence Angrave 8bf29081d3 Speed up CI: install only the texlive packages the book needs
The PDF job takes ~9 minutes and is the whole workflow's wall clock,
because install.sh pulls texlive-full: 455 packages and 4.0 GB of every
language pack, ConTeXt and Metapost. The book needs 68 packages,
768 MB.

Measured by building the book both ways in ubuntu:24.04 and comparing:

                 packages   download   apt install   make pdf
  texlive-full   455        3995 MB    270s          188s
  reduced set     68         768 MB     92s          141s

Output is equivalent, not merely similar: all 19 PDFs (main plus 18
chapters) have identical page counts (main.pdf is 390 pages either
way), identical page sizes, and byte-identical pdftotext output, with
no unresolved references in either.

Also:
- fail-fast: false, so a WIKI failure 90 seconds in stops cancelling
  the 9 minute PDF job. That happened repeatedly while fixing CI: the
  run then says nothing about whether the PDF is healthy.
- concurrency groups, asymmetric on purpose. PR builds have no side
  effects so a superseded run is cancelled. Deploy is NOT cancelled
  mid-run: it pushes the wiki, force-pushes epub_deploy and pdf_deploy
  and nudges the website, and interrupting that can leave the three
  targets on different commits.
- timeout-minutes: 30, so a hung link check cannot burn six hours.
- pip cache. Marginal - five small pure-python wheels - but free.

Note make -j4 was tried and rejected: it cuts the build to 80s but
produces a wrong book, numbering the appendix 13 instead of 17 and
degrading a cross-reference to ??.
2026-08-24 02:06:06 -05:00
2020-01-12 17:44:39 -08:00
2020-10-04 21:37:13 -05:00
2023-10-16 21:12:47 -05:00
2024-08-27 11:21:21 -05:00
2023-10-16 21:12:47 -05:00
2023-10-16 11:23:51 -05:00
2023-10-16 21:11:47 -05:00
2024-09-14 17:26:17 -05:00
2019-07-30 15:52:19 -05:00
2024-09-30 12:02:37 -05:00
2019-07-23 10:53:37 -05:00
2024-08-27 15:11:09 -05:00
2019-04-13 11:38:18 -05:00
2019-03-23 14:33:59 -05:00
2019-07-31 13:01:20 -05:00
2019-07-23 14:36:36 -05:00
2019-07-23 10:53:37 -05:00
2019-07-23 12:49:21 -05:00
2019-05-21 21:29:22 -05:00
2023-10-16 21:12:47 -05:00
2018-12-26 22:15:47 -06:00
2024-01-08 21:00:12 -06:00
2024-01-08 21:00:12 -06:00

Coursebook

Build Status Current Pdf Link Current Wiki Link Current HTML Link Current Epub Link

Welcome to the systems programming coursebook! This repository houses a high-quality, open-source introductory systems programming textbook used by the CS 341: System Programming course at the University of Illinois Urbana-Champaign The book assumes that you have taken a programming language course and are familiar with assembly instructions. All of the code and instruction will be in C, as it is the de-facto language of the Linux Kernel.

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 while maintaining openness.
  • Improve the factualness by including citations, footnotes, extended reading, and a glossary.
  • Have exports in the form of pdf, markdown, and html.
  • Automagically build so writers can focus on writing.

Contributing, Building, and Structure

Read CONTRIBUTING.md

Credit Where Credit is Due

S
Description
GitHub Trending: cs341-illinois/coursebook
Readme
30 MiB
Languages
TeX 96.3%
Python 2.4%
Shell 1%
Makefile 0.3%