It's kind of a bullshit distinction.
Of the shit CS students have to take:
- Torturous things that a software engineer won't need and most other students don't have to take:
- 8+ math classes (2-4 calculus, 2 discrete math, statistics, linear algebra | bad high school ? remedial shit like trig/college algebra too)
- 2 chem or physics classes
- Things SW engineering and CS majors will both have to take:
- Software Engineering (practices)
- Programming (school's choice of language) 3 courses
- Programming in some bullshit language the school used to use before switching to JAVA/Python/whatever, so you can take courses with their old faculty who don't like using the new official language
- Programming in assembly, because FUCK YOU THIS IS A STACK AND YOU WILL ONLY LEARN TO APPRECIATE YOUR HIGH LEVEL FAGGOT TOOLS AFTER EXPERIENCING TRUE PAIN
- Network bullshit / Parallel computing
- "Databases" (Read: SQL + super basic relational algebra. Not a fucking thing about CAP theorem or NoSQL systems.)
- CS courses that a SW eng student has enough background to take anyway
- Compiler Theory and/or Languages theory
- Operating Systems
- Algorithms
- Things CS student theoretically has enough background to take, that SW Eng doesn't.
- A.I. (req stats)
- Machine Learning (req stats)
- Other electives involving calculus and stats, which aren't common (for undergraduates).
I left out some courses that computer engineering cocksuckers fucked the cs department into, like digital logic and computer architecture. They could be good, if they're like, "here is how the getAndSet() works and by the way you can use it for sneaky ninja bullshit in multiprocessor programming," but as it's taught here, it's "GET FUCKING BURIED IN DOCUMENTATION."
I omitted a bunch of other classes (e.g. technical writing/business comm.) because they're essentially utter bullshit.