Pull requests to update any of this material are welcome and encouraged.
- How to setup your Mac, Windows, or Linux computer for this course.
- How to effectively search and use man(ual) pages
- A git primer and high-level guidelines on using GitHub.
- Brief C development requirements.
- Some tips and tricks for using xv6 in the class.
- You're training to be a software engineer, so you must treat programming as a craft. An exceedingly important part of this is thinking about how others will read your code. Read about style, and understand a mental model for how to write readable code.
- Notes on debugging intelligently, and a reference for the GNU Debugger.
- How to properly set GCC flags to optimize your code
- How to automate building C projects using GNU Make
- Notes on how to think about testing.
- Ubuntu Essentials
Resources associated with the class include:
- C development issues: visibility and includes, generic data-structures, and polymorphism
Add more links here via Pull Request!
- Modern C by Jens Gustedt
- The c build process
- Linker scripts and how to place programs explicitly in memory.
- Don't implement your own spinlock if you can avoid it!
- Understanding C by learning assembly
- Tiny C Games that run on Mac, Linux, Windows
- comp.lang.c FAQ
- SEI CERT C Coding Standard
- All things low-level and embedded.
- The Night Watch: a satirical look at Systems Programming
- Three Tribes of Programming