-
Writing Solid Code Weeks 7 and 8
The students continued with their compressor/decompressor development. Coverity continued to find plenty of issues for the students to fix. I’m about to start doing a bit of differential testing of their code, using voting to determine who is correct and who is wrong. I lectured on paranoid programming and on building a fuzzer, for sort…
-
Paranoid Programming
A lot of software defects stem from developers who lack a proper sense of paranoia. While paranoia can of course be taken to idiotic extremes, a healthy respect for Murphy’s Law is useful in programming. This post is a list of useful paranoid techniques that I hope to use as the basis for a lecture…
-
Writing Solid Code Weeks 5 and 6 — The Plot Thickens
-
What I Accomplished in Grad School
-
Assertions Are Pessimistic, Assumptions Are Optimistic
-
Scary Compiler Code Motion
-
Use of Assertions
Assertions are great because they: support better testing, make debugging easier by reducing the distance between the execution of a bug and the manifestation of its effects, serve as executable comments about preconditions and postconditions, can act as a gateway drug to formal methods. Assertions are less than great because they: slow down our code,…