3 ms·
I found the computer engineering paths to be more engaging from a mechanical sympathy perspective. Starting from pure abstractions and then maybe dipping into
by bob1029 1y ago
I found the computer engineering paths to be more engaging from a mechanical sympathy perspective.
Starting from pure abstractions and then maybe dipping into hardware level concerns in later courses seems completely backward to me. Certainly, you can become a very useful employee without any hardware background, but there is a particular spider sense you will not have when presented with scenarios that a hardware person will feel in their bones. The most common manifestation of this is disrespect for memory heirarchy and latency of computational elements relative to each other.
The CS course material became deeply interesting to me only after I encountered specific problems where digging into the theoretical min/max of different algorithms started to produce value in actual projects. When looking at things from the perspective of upper bounds, you will typically find that N is small enough to not matter. Only when it becomes large do the fancy abstractions make any difference at all on actual machines. If your working set fits in L1, O(N^2) scaling probably won't be something you notice in your profiler.
- __turbobrew__ 1y agoComputer engineering will teach you that algorithmic complexity doesn’t mean squat if you can keep your data in CPU caches. The classic is any sort of connected node algorithm (linked list, graphs) which are stored sparsely in memory and therefore do not effectively utilize CPU caches. I don’t know how it is elsewhere, but computer engineering here is regulated by the local engineering board — as the graduate can continue to become a professional engineer — and has much higher standards than the CS programs. I still don’t think computer engineering programs teach anything that you cannot learn yourself, but the base bar of what is required to get a degree is higher than cs where I am.