<p>Although ABET accreditation does not really mean much in Computer Science, the ABET site does give a good outline on how a CS curriculum should resemble:</p>
<p>a. Computer science: One and one-third years that must include:</p>
<ol>
<li><p>Coverage of the fundamentals of algorithms, data structures, software design, concepts of programming languages and computer organization and architecture. [CS]</p></li>
<li><p>An exposure to a variety of programming languages and systems. [CS]</p></li>
<li><p>Proficiency in at least one higher-level language. [CS]</p></li>
<li><p>Advanced course work that builds on the fundamental course work to provide depth. [CS]</p></li>
</ol>
<p>b. One year of science and mathematics:</p>
<ol>
<li><p>Mathematics: At least one half year that must include discrete mathematics. The additional mathematics might consist of courses in areas such as calculus, linear algebra, numerical methods, probability, statistics, number theory, geometry, or symbolic logic. [CS]</p></li>
<li><p>Science: A science component that develops an understanding of the scientific method and provides students with an opportunity to experience this mode of inquiry in courses for science or engineering majors that provide some exposure to laboratory work. [CS]</p></li>
</ol>
<p>Having said that. As a long-time software engineer, I will attempt to break the above down into actual semester-based courses AS WELL AS GIVE PRACTICAL REASONS WHY one should look for these items in a CS program.</p>
<p>Almost all CS programs will start with introductory programming courses. The exact language(s) will depend on the school.</p>
<p>Introductory Programming I (May also be called Computer Science I)
Introductory Programming II (May also be called Computer Science II)</p>
<p>** The selected languages may be Java, C++, Python or Scheme and may or may not include object-oriented programming concepts**</p>
<p>Next and following Item #1 above will be a course that introduces the concepts of computer organization and architecture:</p>
<p>Computer Organization</p>
<p>So, Introductory Programming I & II and Computer Organization are you basic foundation courses of a CS degree.</p>
<p>Next, you will enter the “Core CS courses”. It AIN’T a CS program without these 4 areas (from #1 above):</p>
<p>Algorithms
Data Structures
Concepts of Programming Languages
Operating Systems Theory</p>
<p>Algorithms & Data Structures go hand-in-hand, as algorithms are the step-by-step plan of calculation and data structures are the tools that are used to implement the algorithms. At some schools, these two areas are offered within the same course. It doesn’t matter how they are offered…just as long as the CS program covers these areas.</p>
<p>The “Concepts of Programming Languages” course serves at least two purposes: One is to give one an understanding on how languages work “in general”. This helps mold the mind of computer scientists to be able to pick up on new languages quicker by knowing in depth how all of them work. The other purpose is to satisfy Items #2 & #3 above because usually this course will cover a few different languages (and their constructs) during the course.</p>
<p>The “Operating Systems” course is conceptually like the “Concepts of Programming Languages” course but for the operating system. It’s purpose is to teach one how any operating system works in general. Both Windows and the Unix/Linux-based operating systems have many similarities…only the syntax and their approaches are different.</p>
<p>After the Basic Foundation and Core CS courses, one usually picks their CS electives to specialize. You want a CS program that has a wide array of electives. Here are a few:</p>
<p>Artificial Intelligence
Parallel Programming
Computer Networks
Database Systems
Machine Learning
Computer Graphics
Cryptology
…and others</p>
<p>Mathematics.</p>
<p>You want a CS program that gives you a firm foundation in Mathematics. No, you do not have to be at a level of a math major, but you would want AT LEAST the following math courses:</p>
<p>Calculus I - Why?..prerequisite for other math courses needed in CS
Calculus II - Why?..prerequisite for other math courses needed in CS
Linear Algebra - One of the most useful mathematical areas in engineering and CS. Need Calc I & II for it.
Probability & Statistics - You don’t need the separate courses in Probability Theory and Mathematical Statistics like a Math major would…just something like Prob/Stats for Engineers (combined course). Stats comes in handy when messing with Computer Networks and performance analysis of operating systems.</p>
<p>and one more mat course: Discrete Mathematical Structures…which gives an introduction to combinatorics and graph theory.</p>
<p>This is what your CS program should resemble…whether or not it is offered through the College of Arts & Sciences, College of Engineering, its own college (like at U-Maryland or Syracuse).</p>