In this web content, the author discusses their advice for teaching the C programming language in a way that highlights its importance in critical software infrastructure, while also acknowledging its role in computer security issues. The author recommends various reading materials for students, such as “K&R” for the basics and “Expert C Programming” for advanced C. They also suggest using high-quality C code, like Redis, Musl, or Xv6, to teach students about tradeoffs in system building. The author emphasizes the need to teach students how to avoid C’s shortcomings and the importance of error detection and testing. They also mention the necessity of teaching students about undefined behavior and the need for modern approaches in C programming. The author concludes by addressing the criticism of teaching C, noting that while it may not be the best first language choice, its importance in the systems programming niche cannot be ignored.
https://blog.regehr.org/archives/1393