In office hours, talked to one student who was lost on tail recursion, not getting it. Drilled into an example on godbolt.org and showed how work was getting shifted to before the tail call, and he really got it after 20 minutes, like mind exploding. That kind of thing just shows me that the rest of the students almost certainly are not getting it.
@krismicinski this reminds of a question I've had for some time: here, you show a student (I presume) a low-level representation of the program and walk them through it and it clicks. But decades ago that was simply the norm; as we get further away from hardware (or so it seems to me...) does student intuition about how their programs actually execute on real machines get similarly more abstract?
@cross @krismicinski @regehr I think there’s something absolutely joyful about platforms that are powerful enough that you can build legit software for them but simple enough that a single human can plausibly understand every aspect of hardware’s operation if they are sufficiently interested.
*looks pointedly at TI-84+*
@krismicinski @cross @regehr getting to read assembly to answer questions about your compiler is nice, but getting to write assembly to answer questions about your ASIC is nicer
@elfprince13 @cross @regehr my experience is that modern compilers and tools like godbolt.org really do go very far in terms of helping you see exactly what's going on. Of course, to truly get it you also have to do things like cache profiling and other things that I have never done, but know I would have to do to truly get it.