Computer Science Programs

<p>I am looking at different colleges and at their computer sciences programs. I can’t really tell if they have good programs or not other than abet which doesn't accredit a lot of the good programs from what I hear. So I was wondering if you can tell by what kind of classes they offer can hint to whether it’s a good program or not. Do liberal arts colleges offer good computer science? Any opinions?</p>

<p>-Thank You</p>

<p>Check the catalogs for at least most of the following junior/senior level CS courses:</p>

<p>algorithms and complexity
theory of computation, languages, and automata
operating systems
networks
databases
compilers
security and cryptography
programming languages course if introductory courses do not use several programming languages
software engineering course or large projects in other courses
electives like graphics, artificial intelligence, etc.
hardware courses like digital systems and computer architecture</p>

<p>Then check the schedules to see that these courses are offered at reasonable frequency. Bare minimum frequency is once every two years (you will probably have one chance to take the course during your junior and senior years); better is once per year (two chances) or every semester (four chances).</p>

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

<p>Note that in the ABET specifications, “one year” of course work is one fourth of the courses or credits needed to complete a bachelor’s degree (30 to 32 credits in a typical semester hour credit system). So “one and one-third years” of CS courses would mean 40 to 43 credits in a typical semester hour credit system.</p>

<p>

</p>

<p>At some schools, there is no such course, because the introductory sequence requires the student to become skilled at programming in several different programming languages (e.g. Scheme, Python, Java, C, assembly language). The introductory sequences of CS courses can vary between schools in other ways as well.</p>