<p>@silence_kit:</p>
<p>LOL. Loves it. Technically speaking, that’s just an elective. It is, however, a prerequisite for such things as writing angry journal articles about the state of EE and writing books on why CS is better than EE. That’s more advanced material, though.</p>
<p>@OP:</p>
<p>You ask an interesting and multifaceted question. What do computer scientists do? Well, if you want to draw distinctions where they may not fully exist, we can try that.</p>
<p>The first step down the rabbit hole is to differentiate between programming, software engineering, computer science, and computer engineering.</p>
<p>Programming: writing code in a programming language to make the computer do something. The result of this activity is what many people think of when they think of software.</p>
<p>Software engineering: designing software systems using ostensibly engineering methods. A theoretical and applied approach to getting requirements, analyzing, designing, architecture, testing, and maintenance.</p>
<p>Computer science: essentially a branch of pure and applied mathematics, this deals with what have become “fringe” topics in mainstream mathematics: algorithm design and analysis, proof theory, graph theory, networks, computability theory, formal languages, etc. Programs are written to motivate, test, and demonstrate effectiveness of theories.</p>
<p>Computer engineering: very similar to electrical engineering, with more of a slant towards computer systems. Basically, this is the interface between hardware and software, and as such, dabbles in a bit of both, though not to the extent of either the EE or the SE major.</p>
<p>In practice, any practical college curriculum for any of these will contain a mix of the others; it is useful and desirable to have students in any of these know something about all of them. </p>
<p>Programming can require from no college education to a bachelor’s or higher, depending on the complexity of the job and the domain. When you hear people talking about how they got jobs in computing without going to college, this is usually what they’re talking about, I would imagine.</p>
<p>Software engineering and computer engineering generally require a bachelor’s, or higher for more difficult positions or management positions. These are the sorts of jobs that most people will want to get with a college degree.</p>
<p>Computer science is more research-oriented, and therefore usually (though perhaps not always) requires a graduate degree of some kind.</p>
<p>What are some of the things computer scientists do?
- Graph theory / algorithms
- Algorithm design and analysis
- Data structures
- Programming Languages
- Formal languages
- Automata
- Networks
- Artificial intelligence
- etc.</p>
<p>What are some things that software engineers do?
- Software process
- Software quality assurance
- Software architecture
- Formal methods
- etc.</p>
<p>Hope this has cleared some stuff up.</p>