4 ms·
As part of the computer science/engineering program I went to at university, we had courses spanning the entire stack. Intro courses were in Scheme and C, and l
by henrikschroder 17y ago
As part of the computer science/engineering program I went to at university, we had courses spanning the entire stack. Intro courses were in Scheme and C, and later courses went on to higher-level OO and relational databases and other paradigms. But we also had a short course in analogue electronics, followed by one in digital electronics, both of which were extremely hands-on, requiring us to construct simple circuits in the analogue course, but eventually progressing up to making our own simple CPU in the digital one, including making the microcode for it, and programming it in our own machine code.
That was a real eye-opening moment for me when I realized I had actually been all over the stack and had some sort of understanding of how a high-level program gets compiled and executed and what actually happens at the lowest level, and that that was useful for understanding the high level better.
- elblanco 17y agoI second this. One of the most eye opening and impactful classes I took in my undergrad was the digital circuits class. It finally made it click. Breadboarding a simple ALU at a workbench out of simple logic components, making them work off of a clock (seeing how the clock was just a final input that forced the operation to occur blew my mind), etc. etc. then doing it again in an FPGA was awesome. Suddenly all of the stack made sense, my compiler class made sense (when we wrote an emulator for a fictional target system to compile to, I kept thinking about how that system would work as a logic diagram), the OS class made sense (thinking about how the contents of an instruction could be swapped out for context switches in a multi-tasking system)... I wish that the curriculum at my school had started with that class. It would have been a much better foundation to start off of than C++ and Prolog.