Ask HN: Should computer science degrees be separated from software engineering?
There are schools/colleges that offer degrees in crafts (for example, car repair) which are clearly separated from academic degrees in the same field (mechanics engineering, in this case). This is not the case in software engineering: you have to graduate with an academic degree in order to work as a software engineer.
Do you think it is a good idea to create separate degree programs for teaching the "craft" of software engineering with a reduced dose of academia?
26 comments
[ 3.2 ms ] story [ 71.4 ms ] thread> Do you think it is a good idea to create separate degree programs for teaching the "craft" of software engineering with a reduced dose of academia?
Sometimes it's a good idea but that usually has bad outcomes in the quality of education
There are also IT degrees.
You don't need any degree to work as a software engineer.
Also, there is a lot of software engineering degrees that are much more focused on the "engineering" part.
there are a lot of programs that claim to teach you web dev in a few weeks. and what about all the "coding schools"? also, web dev has nothing to do with building real software or computer science. it's 80% CRUD apps anyway.
Meh, the most important skill a computer scientist or a software engineer needs to have is to be able to think critically which good courses, especially ds/Algo and the like, will teach - tooling changes every month and varies across companies.
* Edit: Not sure why this was down voted. Software development is one skill of many in software engineering. Software engineering should be an academic degree IMO
i think that one of the main issues we have today is that all of the above is treated the same, and the main focus is on hiring people to write code (i.e. brick laying), and the this is done by first putting them through irrelevant coding interviews to make sure they can write code (something that a good academic education / degree will require you to do anyway, if you want to graduate). the interviews optimize for memorizing optimal solutions to problems you are unlikely to encounter in practice and which you can find in a book if you need them.
computer science / software engineering is still a young field, so there are no trade organisations yet. given the situation it is unavoidable that they will be created sooner or later.
Engineering is more about making things work and when what you're trying to make work MUST WORK (like an airplane) then there need to be some explicit certifications and training to ensure you actually know how to make the software act safely and sanely. Other engineering applications of computers are more experimental (like devising new ways of jamming radar signals) and while they still can be life-critical (for the jet fighter pilot) they will also sometimes tolerate less formal standards as long as the application works. Other types of engineering are even less safety/life critical. So I'd divide computer engineering into degrees of criticalness which determines the level of training involved and necessary.
Instead my program favored some management and organizational stuff. I chose SE because all the courses I needed were available online and I could continue to work full time without needing to go out to a classroom 3-5 times a week.
University studies have had a weird century or so, and have become substantially about signaling. I remember over-hearing a conversation from peers about why Software Engineering as a degree doesn’t make sense, because it’s not a study-able topic, while computer science was the true path. I suspect it had more to do with gatekeeping the signal than what qualifies as a valid course of study.
I have often made the comparison that Computer Science and Software Engineering have a similar relationship to Physics and Electrical Engineering. When I was studying EE, I remember that we had a course for Electrodynamics that was offered by the EE department, but the Physics department had their own version of the same topic. Engineering courses are usually more oriented towards tools and applications, and less theory.
I can totally see a Software Engineering degree (or dept) that might have courses with the same titles as those under CS but with a similar shift away from theory. For example, I would imagine a CS Algorithms course using the CLRS book while the SWE version might use something like the Algorithm Design Manual for a textbook instead.
I would see the SWE degree having CS electives and vice versa, but I would still imagine different required core courses. A CS degree might need more math pre-reqs, but I don't think SWE needs as much. I think SWE needs to cover more topics like software testing (I feel like that's almost non-existent in schools), and process management (scrum, kanban, story estimation, CI/CD), technical design and documentation, and more applied practice.
And I don't believe bootcamps are the answer here. Maybe if they were longer, but I wouldn't call them bootcamps at that point, just a trade school.
- Introduction to Software Engineering
- Web Design and Development for Small Business
- Graphical Interface Programming
- Intermediate Web Development
- Networking and Data Communications Systems
- Designing User Experiences
- Fundamentals of Project Management
- Object Oriented Systems Development
- Database Management Systems
- Systems Analysis and Design
- Introduction to Programming
- Structured Programming
- Object-Oriented Analysis, Design, and Programming
- Algorithms and Data Structures
- Software Engineering I
- Operating Systems
- Networking
- Calculus I
- Calculus II
- Discrete Mathematics
- Elementary Probability Theory
- Introduction to Statistical Analysis
- College Research Paper
- Physics I
- Biology: Atoms to Cells
- Senior Project
- + two major electives (mine were an independent study building a SCARA robot that is remote controlled and a second independent study on the use of drones in wildfire mitigation)