4 ms·
Teach modern C, with "restrict" and with the new-style initializers and aggregate immediates. Put a good deal of effort into showing how people get burned by un
by tropo 8y ago
Teach modern C, with "restrict" and with the new-style initializers and aggregate immediates. Put a good deal of effort into showing how people get burned by undefined behavior. (strict aliasing, signed overflow of intermediates, etc.) Put a good deal of effort into giving students a feel for what the compiler can and can't optimize, and a feel for what the hardware has trouble with. You should be introducing and insisting on the use of tools like Coverity, VTune, Klocwork, valgrind, OProfile, perf, LTTng, Coccinelle, Astrée, Polyspace, and Frama-C.
If there is time, which is unlikely:
Teach the ispc language. This C variant is a good way to get in the mindset of vectorizing.
Teach how to write a cross-platform JIT. Get it working on both Windows and on a Linux with SELinux enabled. Alternately, get it running on both x86-64 and aarch64.
Rust might be worthwhile. It's a gamble that could pay off well, or not. How are you at predicting the future? This could be headed the way of Tanenbaum's prediction of HURD on SPARC, or it could really take off.
- diegoperini 8y agoIs this sarcasm or are these advices overkill?
- tropo 8y agoIt certainly isn't sarcasm. The class is "Advanced Programming". If it isn't going to be advanced, then the name is improper. This could be a case of name inflation. All of that stuff is great to learn. All by itself, the first suggestion makes one immediately employable.