<p>
Creativity and initiative will help you if you choose to go with CS. However, programming and web design and an interest in technology are neither necessary nor sufficient.</p>
<p>
</p>
<p>Introductory programming - structured programming with loops/recursion and decision handling.</p>
<p>Programming languages - object oriented programming with an industry-standard language (C++, Java, etc.); exotic languages and paradigms like Prolog or functional; shell scripting.</p>
<p>Computer organization and architecture - parts of a computer, especially CPU, memory and interconnection; caching; instruction sets and assembly language.</p>
<p>Computer systems - operating systems, including process scheduling and memory management; networking, especially TCP/IP and network protocols; databases, usually some implementation of SQL.</p>
<p>Algorithms and data structures - correctness and complexity of algorithms; data structures and operations.</p>
<p>Mathematics and theory - discrete mathematics, logic and proof; automata and formal languages; computability and complexity theory; exotic computing paradigms; limits of computation.</p>
<p>Software engineering - process models; quality verification and assurance; software development tools and environments; source control.</p>
<p>
Strong analytical ability and attention to detail.
Ability to understand a system at different levels.
Able to understand and use abstractions effectively.
(Able to communicate effectively)</p>
<p>
That you’ll know how to fix people’s computers, or find it interesting. You’ll be about as qualified as a math major would be to fix a calculator, and you’d find it about as interesting.</p>
<p>That you’ll automatically have an interest in all things new technology, and keep up with all the latest trends. In reality, your being a CS major will have little influence on whether some new technology is interesting to you or not.</p>
<p>That you’ll be learning about programming and using computers, and won’t take math and science like engineers do. In reality, you’ll take more and more advanced/modern/fundamental math than most engineering majors, the kind most people will never have heard of before.</p>
<p>
See above.</p>
<p>
[/quote]
What are the Pros and Cons?
[/quote]
Pros:
- Great outlet for creativity
- Rich theoretical basis
- Plenty of unsolved but comprehensible problems
- Applying what you know requires only a cheap computer, not sophisticated equipment
- Software engineering is a growing and well-paying field
Cons: - Like all STEM majors, not everybody’s cut out for it
- Programming is a tool you must master, and not everybody can
- You have to remain current in your skills
- Quality of CS programs & jobs are more variable than for engineering majors</p>