827 points · 232 comments · 5 years ago · matt_d
cs.cornell.eduibains
37ef_ced3
Take C (or some other language) and its mature optimizing compilers as a foundation, and write a program that compiles a high-level description of a domain-specific program into C
For example, NN-512 (https://NN-512.com) is a compiler that takes as input a simple text description of a convolutional neural net inference graph and produces as output a stand-alone C implementation of that graph
GNU Bison (https://www.gnu.org/software/bison/) is another example, where the output is a parser: Bison reads a specification of a context-free language, warns about any parsing ambiguities, and generates a parser (either in C, C++, or Java) which reads sequences of tokens and decides whether the sequence conforms to the syntax specified by the grammar
Halide (https://halide-lang.org/) is a language for fast, portable computation on images and tensors, and it originally generated human-readable C++ code as output (but not anymore, now it feeds directly into LLVM)
Can anyone provide other examples? (Code generators for network packet processing?)
richardjennings
I find the presentation style of subtitles with surrounding context extremely helpful. I often lose the ability to listen when concentrating; the subtitle context provides a superior recovery mechanism to the usual, try to work out what was missed. I look forward to purchasing augmented reality glasses at some point in the future which add this advantage to in-person interactions.
mathattack
“Real 6120 also has an end-of-semester course project—in the self-guided version, your end-of-semester assignment is to change the world through the magic of compilers”
nojvek
Would love to see a high level course that covers how to build the tooling for a great developer experience.
nandaja
yla92
pbiggar
Producing Wrong Data Without Doing Anything Obviously Wrong! Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, and Peter F. Sweeney. ASPLOS 2009.
https://dl.acm.org/doi/10.1145/2528521.1508275
I happened to be at that ASPLOS and I thought it was fascinating. Good to see it recognized as one of the most important papers in compilers.
prando
mdergosits
One of the most painful parts of the the project was using Scala which had ridiculously long compile times which made iterating quite a pain.
My favorite memory was that for one project we had to submit a program written meant to stress test everyone's parser.
mcguire
But what is a "PhD level course"? All I've seen is undergrad and graduate, and the difference between masters and PhD has nothing to do with classes.
cmrdporcupine
fermentation
jtlienwis
abdullahkhalids
Question for students: how do you find synchronous courses with some discussions during class, vs asynchronous courses where discussions are limited to an online written forum or office hours?
jcq3
rhendz
pfdietz
archi42
"parallelization, just-in-time compilation, and garbage collection" sound fun, too. Especially JIT.
chrisseaton
Serious_Cheese
mhh__
tomcam