What do you learn in the Computer Science Major?

<p>I am interested in coding and writing programs/websites and the whole technology scene. What exactly do you learn when obtaining a Computer Science degree? What skills will I most likely graduate with? What are some misconceptions? What are some myths? What are the Pros and Cons?</p>

<p>You will learn how to fix computers. Like, every time a student on campus has a computer problem, they will call you to come fix their computer because you are a CS major.</p>

<p>Just kidding! CS is a lot more theoretical than I had imagined, I have always loved computers but CS is very theoretical- Discrete Math was one of the classes I did not care for. I loved the first Java class but Programming with Objects with a Chinese professor who could not speak English very well was traumatizing.</p>

<p>I ended up changing majors but just “loving computers” is not enough for you to do well in CS.</p>

<p>Read the degree requirements and the course descriptions on the website of any good college that has CS.</p>

<p>Here is one definition:
[Undergraduate[/url</a>]

Misconceptions? I think many people underestimate the amount of mathematical aptitude required to succeed in CSci, as well as the theoretical nature of the program.</p>

<p>You can check out some example courses here:
[url=<a href=“Class home pages | Department of Computer Science and Engineering | College of Science and Engineering”>Class home pages | Department of Computer Science and Engineering | College of Science and Engineering]Class</a> Home Pages](<a href=“Home”>Home)</p>

<p>Let me give you a few items that related to a few of the core CS courses.</p>

<p>Algorithms & Data Structures - These areas relate to how to construct and evaluate efficient algorithms and how/when to use the correct data structure for optimal results, INDEPENDENT of a certain programming language.</p>

<p>Organization of Programming Languages - Gives you an overall view on how programming languages act in general and the certain differences of some of the more widely-used languages.</p>

<p>Operating Systems - Shows you how does an operating system (in general) interact with the other software and/or languages. If you have been working on Windows applications for years, you will be able to pick up a Linux/Unix-type operating quick because both Windows and Unix have a LOT of similarities…only the syntax and/or process is different.</p>

<p>What CS gives you (as opposed to I.S. or I.T. programs w/o a lot of pure CS) is the ability to adapt to new languages and operating systems much faster and easier and knowing how to apply the right algorithms and data structures.</p>

<p>Not too long ago, one poster asked “Why is my CS prof giving an assignment on updating part of a Linux kernel??” Well, modifying Unix/Linux kernels is the main task when it comes to the whole “Open Source” thing.</p>

<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>

<p>A common misconception is mixing up CS and IT/IS/MIS. CS is about designing computers and their software, while IT/IS/MIS is about managing computers and their software. A CS graduate should be able to handle the technical aspects of IT/IS/MIS more easily than the other way around, though IT/IS/MIS involves more “business” type of stuff.</p>

<p>

</p>

<p>So is the productivity of computer software developers – it is generally accepted that there can be an order of magnitude of difference in productivity between developers (and the worst can actually have negative productivity by introducing bugs that require more of others’ effort to fix).</p>

<p>However, high productivity developers do come from all kinds of educational backgrounds, including self-education.</p>