You are encouraged read the below material. While this is not compulsory, it is recommended as it will broaden your knowledge and appreciation for the course content.

Week 1

Unix shell and commands

Optional

  • MINIX retrospective, by Andrew Tanenbaum, a professor who created MINIX, and whose student Linus Torvalds created Linux.

Week 2

shell and C programming

The readings are in the book “97 Things Every Programmer Should Know”

  • “The Unix tools are your friends” by Diomidis Spinellis (p. 176-177 of the “97 Things…” book; link above)
  • “The professional programmer” by Uncle Bob (p. 134-135 of the “97 Things…” book; link above)
  • “Know how to use command line tools” by Carroll Robinson (p. 86-87 of the “97 Things…” book; link above)
  • “Comment only what the code cannot say” by Kevlin Henney (p. 34-35 of the “97 Things…” book; link above)

And any “lecture extras” associated with this week’s lectures.

Week 3

C programming and stdio

Most of the readings are in the book “97 Things Every Programmer Should Know”

  • Linux Kernel Coding Style, primarily chapters 1-4, 6-8, 16 (they’re all short).
  • “Don’t Just Learn the Language, Understand its Culture” by Anders Norås (p. 54-55 of the “97 Things…” book; link above*)
  • “Comments on Comments” by Cal Evans (p.32-33 of the “97 Things…” book; link above)
  • “Take Advantage of Code Analysis Tools” by Sarah Mount (p. 158-159 of the “97 Things…” book; link above)
  • And any “lecture extras” associated with this week’s lectures.

Week 4

Web searching

Most of the readings are in the book “97 Things Every Programmer Should Know”

  • Skim Searching the Web, by Arasu, et.al. This paper provides foundation for the TinySearchEngine assignments (Labs 4-6).
  • “Prevent errors” by Giles Colborne. (page 132 of the “97 Things…” book; link above)
  • “Use the right algorithm and data structure” by J.C. van Winkel. (page 178 of the “97 Things…” book; link above) (97_Things_Every_Programmer_Should_Know.pdf))
  • “Write small functions using examples” by Keith Braithwaite. (page 188 of the “97 Things…” book; link above)
  • “The Linker Is not a Magical Program” by Walter Bright. (page 106 of the “97 Things…” book; link above)
  • And any “lecture extras” associated with this week’s lectures.

Week 5

Software design

The first two readings are in the book “97 Things Every Programmer Should Know”

  • “Code in the Language of the Domain” by Dan North.
  • “Don’t Be Afraid to Break Things” by Mike Lewis.
  • No Silver Bullet, by Fred Brooks.
  • Finish skimming Searching the Web, by Arasu, et al.

Week 6

Coding and debugging

The first 3 readings are in the book “97 Things Every Programmer Should Know”

Week 7

Testing and Documentation

The readings are in the book “97 Things Every Programmer Should Know”

  • “Don’t ignore that error” by Pete Goodliffe.
  • “Keep the build clean” by Johannes Brodwall.