4 ms·
CS is Computer Science not software development or programming or computer engineering. People/companies commonly treating both the same is IMHO one of the maj
by dathinab 4y ago
CS is Computer Science not software development or programming or computer engineering.
People/companies commonly treating both the same is IMHO one of the major problems of the current industry.
None of the topic you mentioned are fundamental to CS.
They are fundamentals of software development.
Wrt. to computer science they are at most specializations and even then what you might do in a science context of them might differ largely to what you would need to use them for production focused software development. Through they do contain some fundamentals like, e.g. set theory in relational databases and graph theory in network programming and concurrent programming.
You can (rightfully) have a master of computer sience _without having ever written a single line of code_. And going back ~20years that wasn't even that uncommon.
Now today a lot of universities have realized that this mismatch causes problems and are also teaching the fundamentals of software developments additionally to the fundamentals of computer science. Additionally of lot of computer science today requires the use of tooling which requires some programming and SQL.
Still what the "fundamentals of software development" are is a much less clear topic then the "fundamentals of computer science" (and even there people disagree all the time). And for example "relational databases/SQL" is one of the thing people can strongly disagree on weather its foundational to software development or not (anymore).
- nayuki 4y agoYou are right. The OP's examples of networking, SQL, etc. are NOT the foundations of computer science. I know as I did my undergrad in actual foundational CS theory. Here are the foundations of computer science: Sets, Boolean algebra, integers, strings, functions, logic circuits, iteration, recursion, proof by induction, loop invariants, automata, regular expressions, context-free languages, Turing machines, computability, asymptotic complexity, data structures, algorithms, NP-completeness, models, formal logic systems, operational semantics. But to agree with the OP, a lot of CS graduates may not have learned or have forgotten the mathematical underpinnings of CS. A typical bad "CS" education would be some hodge-podge of algorithm design, hand-wavy analysis, and teaching specific technologies/tools (e.g. CSS, NoSQL).
- washadjeffmad 4y agoI wonder if where OP is from, engineering and physics only exist as minors available to mathematics majors? With the rising popularity of tangential fields, we've taken to calling it 'computation science' to help delineate from disciplines that rely on the application of technologies built using CS that run on "computers".
- ghaff 4y agoFor some reason, I was looking at the degrees offered by my undergrad. I see a significant number of the STEM degrees now have variant that is essentially X with computers.
- screwturner68 4y agoCollege is not a trade school, it was never meant to train you for a job with rare exceptions like medical professionals and they have a lengthy apprentice program. I can get a CS/CE degree without ever stepping into an actual office, why would you expect me to know a job I've never done? I may be showing my age but there was a time where companies had new hire programs and OJT where entry level workers could learn the job and learn the job the way the company wants you to learn it. Now there seems to be an expectation that every fresher should have a decade of experience under their belt and know the ins an outs of a job they've never done or at best did for a few week/months as an intern/college hire. This is just another example of companies living on the cheap and pushing the onus training new workers from the company on to the worker. In my opinion it's stupid and short sited.
- retrocryptid 4y ago"You can always tell an MIT man. But you can never tell him much." (More a comment on how some pedagogical methodologies constrain us and less on whether college CS programs are or aren't trade schools.)
- ghaff 4y agoIt's also the outcome of a system where, in many/most cases, the expectation is that a new hire will have moved on by 2-3 years. And, yes, that's driven to some degree by compensation but ICs historically also didn't expect anything like FAANG compensation and even most executives had very middling compensation by Big Tech standards. (My starting salary as a product manager at a major computer company in the mid-80s with two grad degrees was about $100K in today's dollars.) If someone is probably going to head somewhere else in a couple years it might make sense to put them through a one week orientation but probably not a 6 month class.)
- screwturner68 4y agoIsn't that more of a reflection of the company and not the worker? Why would a worker stay when they can make significantly more at another company? If companies wanted to retain their workers you'd think they'd do a better job but it's been shown over and over and over again that if you want to earn a market rate wage you need to find a different job -finding a new employee is expensive, much more expensive than retaining that same employee but being penny wise and pound foolish seems to be how compensation works.
- emilecantin 4y agoOn the opposite end, my degree was in computer engineering... We studied everything from circuits (analog & digital) to networks; even going into CPU design (we had to add an instruction to a MIPS CPU). It didn't make me an expert on any of these fields, but I know enough to know where to start digging if I need to specialize. OP needs to hire Computer Engineering grads, not Computer Science grads.
- shagie 4y agoAt one time, the CS degree was that. My CS degree had digital logic (far too many hours working on Mentor Graphics), machine language programming (from Professor Larus of SPIM fame), compilers (from Professor Fischer), databases (from Professor DeWitt), and networking (from Professor Landweber). Many classes were cross listed with the engineering department. The ECE degree was much more focused on the "designing a computer" rather than "writing software". The difficult part there is that some degrees are "build hardware", some are "write software", others are "study the science", and others are "a survey of all things"... and others are "just enough in the business school to write html and do JavaScript."
- mkipper 4y agoAs someone with a CE/EE degree, I don't really agree. Like you said, that background does have a lot of benefits. But the downside is that a CE grad typically spends less time doing "software" work than a CS grad. When a CE student is taking courses on circuit design, FPGAs, and CPU architectures, a CS student might be taking courses about databases and concurrency. I don't think I touched SQL or a multithreaded program in a university course. Those were all "high level" things that CS students focused on. This isn't meant as a knock on CE grads -- I just don't think it's wise to suggest them as the solution to OP's problem since they have their own set of "blind spots" to deal with.
- GrumpyYoungMan 4y agoI'd say digital logic and computer architecture teaches pretty immediate lessons about tackling concurrency? Every gate and transistor is operating in parallel and it's up to the engineer to arrange things so that race conditions don't occur and valid results are available when the next clock edge arrives.
- tejohnso 4y agoI've noticed Software Engineering is becoming more common as a post secondary school education offering. Perhaps this would be more appropriate for most people. Also helps work toward justifying the "software engineer" title that many non qualifying people like to use.
- scarface74 4y agoPeople aren’t getting thousands in debt to be a “better citizen of the world”. They are doing so because they haven’t found a way to get over their addiction to food and shelter and college should help them earn money to support their addiction.
- tensor 4y agoRelational algebra is absolutely fundamental CS. In fact no real system even implements it as it's formally specified. Also, all of the topics that the OP mentions are areas of study in CS there are entire CS conferences dedicated to them. Your comment reads as some really strange and arbitrary gatekeeping around what CS means.
- paulrpotts 4y agoIt's "fundamental CS," sure, if what you mean by that is: only a very small number of the people who actually design, implement, build, optimize, and debug databases know anything about it at all, have read the foundational texts, use the terminology of relational algebra, or contribute papers or research in the field.