Computer Science Majors

The term “computer revolution” -- coined in the 1980s -- was not a hyperbole: The changes were indeed revolutionary. Computers have evolved from being mysterious, unseen behemoths to household items. Applications have changed from primarily numerical to newer areas such as word processing, controllers for cameras and on-line library card catalogs. Most of the new applications are input/output intensive, consisting of heavy use of graphics display monitors, mice and especially computer networks.

A top-to-bottom view of computer science might consist of the following levels, with typical questions from each:

  • Theory: How many operations are needed, and how much memory space is needed, to accomplish a given task? This view is taken independently of a specific machine or specific programming language.
  • Software: How may operations for a task can be expressed? How can software be written so as to minimize development time and presence of errors?
  • Hardware: What are “gates”, and how can they be used to build digital machines? What makes one computer faster than another? How can multiple simultaneous operations be designed so as to increase speed? How does input/output work?
  • Electronics: How can gates themselves be built from the transistor level? How can the entire digital system most efficiently be laid out onto a chip?

The CSE and CS majors include theory, software and hardware and in addition the CSE major includes electronics. Individual courses can be categorized as follows:

Pure Theory ECS 20, 120, 122A
Theory & Software ECS 60, 122B, 132
Pure Software ECS 30, 40, 140A/B, 145, 153, 160, 170
Mainly Software & Some Hardware ECS 142, 150, 152B, 163, 165A/B, 175, 177, 178
Equally Software & Hardware ECS 50, 158; EEC 172
Mainly Hardware & Some Software ECS 152A, 152C
Hardware ECS 154A/B; EEC 180A
Electronics EEC 100, 180B
Heavily Mathematical ECS 130, 175, 177, 178

As in the computer industry, the interactions between software and hardware are very strong in the CS and CSE majors. For example, hardware designers must understand software well and vice versa.

A very commonly-asked question is, “From a career point of view, which major is better, Computer Science or Computer Science and Engineering?” The answer is, “It makes almost no difference.” Graduates of the two majors tend to get the same kinds of jobs, so the choice of major has virtually no impact. The factors which do have a major impact are:

  • How much genuine insight you have into the material (this is very different from your grades).
  • Whether you attain practical experience in a co-op or internship position during your undergraduate years.
  • Your verbal abilities and other personal traits.

A related question concerns double majors. We have a firm, no-exceptions policy to disallow double majors between CSE and EE, CSE and CE, and CSE and CS. Having a double major in two similar fields like this would increase time to degree, and more importantly, would generally lead to the student spreading him/herself too thin. The student would simply be too busy to develop penetrating insight into the field, and again, good grades do NOT imply good insight.

On the other hand, given the emergence of “hybrid” careers, a double major with a very different field may be worthwhile, such as CS and math, CS and biology, or CS and economics. The CS degree, with its large number of unrestricted electives, makes such a double major attainable without undue risk to the development of insight. By contrast, the CSE degree has so few unrestricted electives that such a double major, say CSE and economics, would be difficult to complete, and would almost certainly result in reduced insight.