Reading Assignments
Week 1
Unix shell and commands
- Choose your tools well (page 20) by Giovanni Asproni
- Learn to use a real editor (page 117 – click the top left menu at this link to go to page 117) by Diomidis Spinellis
- Philosophy (15 pages), which is chapter 1 of The Art of Unix Programming, by Eric S. Raymond.
- The Strange Birth and Long Life of Unix, by Warren Toomey – IEEE Spectrum 2011
- Interview with Doug McIlroy, by Rik Farrow – ;login 2016
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 following are all chapters in the book “97 Things Every Programmer Should Know”
- The Unix tools are your friends (page 176) by Diomidis Spinellis
- The professional programmer (page 134) by Uncle Bob
- Know how to use command line tools (page 86) by Carroll Robinson
- Comment only what the code cannot say (page 34) by Kevlin Henney
- and any “lecture extras” associated with this week’s lectures.
Week 3
C programming and stdio
the second, third, and fourth readings are all chapters 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 (page 54), by Anders Norås
- Comments on Comments (page 32), Cal Evans
- Take Advantage of Code Analysis Tools (page 158), by Sarah Mount
- and any “lecture extras” associated with this week’s lectures.
Week 4
Web searching
- 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 in “97 Things Every Programmer Should Know”)
- Use the right algorithm and data structure, by J.C. van Winkel. (page 178 in “97 Things Every Programmer Should Know”)
- Write small functions using examples, by Keith Braithwaite. (page 188 in “97 Things Every Programmer Should Know”)
- The Linker Is not a Magical Program, by Walter Bright. (page 106 in “97 Things Every Programmer Should Know”)
- 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 (page 22), by Dan North.
- Don’t Be Afraid to Break Things (page 48), 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 three readings are in the book “97 Things Every Programmer Should Know”
- Verbose Logging Will Disturb Your Sleep (page 180), by Johannes Brodwall
- Code Layout Matters (page 26), by Steve Freeman.
- Only the Code Tells the Truth (page 124), by Peter Sommerlad.
- Fighting Bugs: Remove, Retry, Replicate, and Rejuvenate, by Grottke and Trivedi.
Week 7
Testing and Documentation
both readings are in the book “97 Things Every Programmer Should Know”
- Don’t ignore that error (page 52), by Pete Goodliffe.
- Keep the build clean (page 84), by Johannes Brodwall.