Comment

Comment by michael-lehn

One thing I would add to the excellent suggestions above is that it can be surprisingly useful to go one level below what is usually considered “software engineering fundamentals.” I teach mathematics students, and over the years I've become increasingly convinced that understanding some of the machine underneath makes many higher-level concepts much easier to understand later: memory and addresses, a simple CPU, assembly, calling conventions, and eventually how a compiler translates a programming language into something the machine can execute. There is a pedagogical principle I like: don't learn the solution before you know the problem. For example, pointers become much less mysterious once memory and addresses are concrete. Many programming-language features also make more sense once you have encountered the problems they are designed to solve. This is one reason I like the Computation Structures recommendation above. I've been experimenting with a similar bottom-up approach in an undergraduate course at Ulm University. We eventually go as far as writing a small compiler, and then rewriting a smaller version of it in its own language so that it becomes self-hosting. I've started putting the material in English here:

https://github.com/michael-lehn/not-abc

parent michael-lehn 2 months ago

No comments yet

Be the first to share your thoughts.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton