4 ms·
Where do you go to school? Where I went, denotational semantics and code proofs were taught in a senior level class (I went to a public university though). I
by j_baker 16y ago
Where do you go to school? Where I went, denotational semantics and code proofs were taught in a senior level class (I went to a public university though). I think you might be the exception rather than the rule.
Still, you're correct to say that engineers are taught the things the grandparent mentions in CS courses.
- deleted 16y ago[deleted]
- j_baker 16y agoHow do you understand that a quicksort is faster than a selection sort at the core level without theory? I mean, I see what you're getting at. That does help you understand how to speed things up at a very low level and might be useful for embedded systems programming or kernel hacking. But most programmers work on a much higher level and need to understand a lot more concepts than that. For instance, it takes a lot more to build a scalable and reliable system (especially one that must scale to multiple systems) than simply knowing how the circuits are designed. You need to understand network protocols, how things are stored on disk by databases, a bit of graph theory, how caching works, and a whole slew of other things. Would it be beneficial to learn this all from the ground up? Probably. But I doubt many college students would be thrilled by the idea of spending 20 years finishing their degree.
- deleted 16y ago[deleted]
- j_baker 16y agoI'm not trying to compete with you. Nor am I trying to imply that CE majors can't build scalable web systems. I'm just trying to explain that the interesting problems in CS are different than the interesting problems in CE, and therefore benefit from a different approach. My experience has been that the difference is simply that CS majors get told "This is how you create programs" while CE majors get told "This is how you create hardware that can run programs". No more, no less.
- deleted 16y ago[deleted]
- fabjan 16y agoAnd what I'm trying to get at is that there are about zero CS graduates that do not know that integers usually are limited to the word size of the architecture you are working on. If you're talking about really crappy schools and crappy students, then I agree, but what is there to debate then? There are no crappy engineering schools or stupid engineers? The kind of people who write a program that stores telephone numbers as primitive ints are not CS graduates.
- dasil003 16y agoThe way you're phrasing things is inviting a pissing contest where it's unwarranted. A proper CS degree and a proper CE degree do not differ that much in their mental rigor. The former is higher level than the latter, but for the most part it's turtles all the way down. CE certainly gets messier where physics get involved, but it's not fundamentally a different kind of thinking from software engineering, you're just operating at different level of abstraction where the constraints are different. Saying that CS is about "this is the best way to code this type of algorithm" is insulting. CS is not about coding at all actually. It's more about "these are the best known algorithms for solving such and such mathematical problems". The coding part is what you figure out on your own in the labs. There is a significant machine architecture component as well, where you learn how the mathematical models map to physical hardware, and what your constraints are. > I feel it's that very ability to piece all of that knowledge together on our own while forming highly complex (and scalable ;)) systems that separates C.E. from C.S. Note that separation does not imply one is better than the other, only different. So what is it that you think software engineers do? Retype BASIC programs out of Byte Magazine? You disingenuously state that you're not making a value comparison, yet that can be the only purpose of such a god-like description of the field of CE "in comparison to" but without a description of CS. > And another personal example, I've designed a web-based multidimensional database application framework that allows me to create nearly any web app within minutes to days (depending on the scope)... highly scalable... and the database is entirely of my own design, works flawlessly, and benchmarks put it ahead of mysql. Again, this isn't a competition... I'm just proving a point that I didn't need 20 years of education... just needed a mental map of a computer's internals. Because specific theories have not been ingrained into my head (just cold hard facts)... I'm able to think outside of the box and sometimes (definitely not every time!) design a better system with a little more effort (because I have to make it up as I go, based on the knowledge I have). Wow. This is the height of hubris. Did you proof this? I have news for you; you are not making world-changing breakthrough software based on your intimate knowledge of hardware (if you are, by all means show us the code!). There is plenty to think about anywhere along the abstraction ladder, and the point where you hope to make a dent will get diminishing returns the further you move up or down the ladder—just ask the assembly programmer who got replaced by a web developer when the ROI for bit-flipping optimizations crossed over the very low threshold of having read Javascript for Dummies. I dunno, maybe I just got trolled, in which case well-played. But if you really think this way you need to meet some world-class programmers and get some of your code reviewed to get some perspective on how "flawless" it really is. If there's a salient point trying to claw its way out of your post, I think it's that there are more crap CS programs than crap CE programs simply because there's a market for crap programmers whereas hardware has to be reasonably well-engineered from the get-go since it's more expensive, rarer, and is created pretty much exclusively by companies for whom hardware is their core competency.
- fabjan 16y agoI went to University in Sweden, this was the first year in an undergraduate program. A public university of course, we're dirty socialists after all ;) We learned denotational and operational semantics but only used operational semantics in the exam. I can't imagine private universities being of higher quality. It's not true of private primary schools or private high schools here.