5 ms·
Yes, you are wrong. I study CS and the first year we learned about digital logic, how to build memory, clocks, ALUs, etc. in parallel with learning about loop
by fabjan 16y ago
Yes, you are wrong.
I study CS and the first year we learned about digital logic, how to build memory, clocks, ALUs, etc. in parallel with learning about loop invariants, operational and denotational semantics, computational complexity, algorithms and data structures, algebra, real logic, how to prove things formally, and emacs.
There were some boring courses as well, mathematical analysis etc.
- j_baker 16y agoWhere 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.
- deleted 16y ago[deleted]
- andrewljohnson 16y agoI think you come off as a bit elitist and arrogant about your major.
- deleted 16y ago[deleted]
- fabjan 16y ago> I'm getting the feeling now that it's the other way around... are computer science majors downvoting me? Probably. I think anyone would downvote your comments, regardless of major.
- deleted 16y ago[deleted]
- tmgrhm 16y ago>I'm guessing whoever has downvoted me is pretty young and/or still in school. […] I guess those early days seem to be a bit touchy because you feel like you have to prove yourself or something. :) I don't think you're helping yourself… You don't have to be young to find the following patronising: >No cheating! :) >If you don't know how to do this then I'm actually right about my assumption.
- deleted 16y ago[deleted]
- tmgrhm 16y agoOh ok, so now I apparently can't decide for myself what I find patronising. I have no problem with your argument — I'm just pointing out that you don't come across very well. >I only speak the truth Seriously…?