Computer Science Advising Guide

Computer science studies processes that manipulate symbolic information, the procedures by which those processes are carried out, the means by which the processes and procedures are designed, and related phenomena, such as the social impact of information processing and the use of information processing as a model for cognition.

Computer scientists are constantly constructing and using abstractions - generalizations that capture the essence of entire families of specific phenomena. In this regard, computer scientists resemble mathematicians. However, computer science differs in that abstraction is used as a technique for designing concrete artifacts. In short, computer science is a discipline of concrete abstractions.

Computer scientists do many things. Outsiders frequently think that computer scientists write programs. They do, but they also:

  • prove that programs perform correctly
  • compare the efficiency of alternative strategies for solving a problem
  • prove that certain problems are intrinsically hard, i.e. have no efficient strategy for their solution
  • prove that other problems can't be solved at all
  • design the organizational structure of computers
  • devise ways to efficiently allocate and schedule computational resources
  • develop design methodologies and notations that allow efficient and correct systems to be cost-effectively developed
  • study how computer systems are actually used by humans and organizations
  • apply computational models to other areas, such as cognition

Gustavus computer science graduates are prepared for both postgraduate study and employment, and every year some choose each of these options. Among those entering the workforce, the three largest categories of employers are information systems consulting firms, insurance companies, and software developers.

 Computer Science Major

This section lists the requirements of the CS major, provides a graphical illustration of the prerequisite structure of the major CS courses, lists sample student plans, and describes the senior oral which is an optional component of the major. Qualified majors may additionally participate in the honors program, which is described in the next section.

Diagram

This diagram shows the prerequisites structure of courses in the CS major.  Solid lines connecting two courses indicates that a course is a pre-requisite while a dashed line connecting two courses indicates that a course is a co-requisite.    
MCS-355 Numerical Analysis (Spring odd years) or MCS-358 Mathematical Model Building (J-term even years) can be taken in place of one of the two electives. 

A grade of C- or higher is necessary in all 12 courses used to satisfy the requirements of the major, which are as follows:

  1. A grade point average of at least 2.3333 in the following four courses.
    1. MCS-119 or MCS-121 Calculus I
    2. MCS-177 Intro. to Computeer Science I
    3. MCS-178 Intro. to Computer Science II
    4. MCS-228 Proofs in Mathematics and Computer Science
  2. All of the following:
    1. MCS-256 Discrete Calculus
    2. MCS-265 The Theory of Computation
    3. MCS-284 Introduction to Computer Organization
    4. MCS-287 Principles of Programming Languages
    5. MCS-375 Algorithms: Analysis and Design
  3. One course from the following: 
    1. MCS-270 Software Development
    2. MCS-274 Database Systems
  4. One course from the following:
    1. MCS-377 Networking
    2. MCS-378 Operating Systems
    3. MCS-388 Compiler Design
    4. MCS-394 Topics in Computer Science
  5. One course from the following:
    1. A second course from the list in requirement 4
    2. MCS-355 Scientific Computing and Numerical Analysis
    3. MCS-358 Mathematical Model Building

 Computer Science Minor

As with the major in computer science, a minimum grade of C- must be attained in all courses used to satisfy the minor. The necessary courses are

  1. A grade point average of at least 2.333 in these four courses
    1. MCS-119 Calculus with Pre-Calculus Review or MCS-121 Calculus I
    2. MCS-177 Intro. to Computer Science I
    3. MCS-178 Intro. to Computer Science II
    4. MCS-228 Proofs in Mathematics and Computer Science
  2. A course from the following:
    1. MCS-265 The Theory of Computation
    2. MCS-284 Introduction to Computer Organization
    3. MCS-287 Principles of Programming Languages
    4. MCS-375.Algorithms: Analysis and Design
  3. A course from the following:
    1. An additional course from the list in requirement 2.  
    2. MCS-256 Discrete Calculus
    3. MCS-270 Software Developments
    4. MCS-274 Database Systems
    5. MCS-355 Scientific Computing and Numerical Analysis
    6. MCS-358 Mathematical Model Building
    7. MCS-394 Topics in Computer Science

Sample student plans

Each student should ideally lay out a schedule of their own showing what courses they plan to take when. This schedule may not accurately forecast the future, but it is helpful nonetheless. The sample plans below are a useful starting point in developing such an individual plan. You can select the sample plan that comes closest to fitting your own situation and then tailor it as necessary. Note that these sample plans show only courses within the Math and Computer Science Department, but in some cases exceed the requirements of the major.

While the course plans don't include MCS-355 and MCS-358 (since they require math prerequisites), the courses can be used to fulfill the fifth requirement listed above.

 Typical Student

  Fall Spring
1st year MCS-121 MCS-177
2nd year MCS-178
MCS-228
MCS-287
MCS-256
3rd year MCS-284
MCS-375
MCS-270 or MCS-274
MCS-265
4th year MCS-377 or MCS-378 MCS-388 or MCS-394

Early Start: Graduate School Bound

  Fall Spring
1st year MCS-121 or MCS-142 or MCS-122
MCS-177
MCS-122
MCS-178
2nd year MCS-228
MCS-284
MCS-287
MCS-256
3rd year MCS-375
MCS-377 or MCS-378
MCS-265
MCS-270 or MCS-274
4th year MCS-377 or MCS-378 MCS-388
MCS-394

Start Sophomore Fall

  Fall Spring
1st year 121
2nd year MCS-177
MCS-228
MCS-178
MCS- 256
3rd year MCS-284
MCS-375
MCS-265
MCS-287
4th year MCS-377 or MCS-378 MCS-388 or MCS-394
MCS-270 or MCS-274

Start Sophomore Fall, late on 228

  Fall Spring
1st year 121?
2nd year

MCS-121
MCS-177

MCS-178
3rd year MCS-284
MCS-228
MCS-265
MCS-256
MCS-287
4th year MCS-375
MCS-377 or MCS-378
388 or 394
270 or 274

Junior Year Abroad

  Fall Spring
1st year MCS-121
MCS-177
MCS-178
2nd year MCS-228
MCS-284
MCS-265
MCS-256
MCS-287
3rd year abroad
4th year MCS-375
MCS- 377 or MCS-378
MCS-388 or MCS-394
MCS-270 or MCS-274

Spring Junior Year Abroad

  Fall Spring
1st year 121 177
2nd year 178
228
265
256
287
3rd year 284
375
abroad
4th year 377 or 378 385 or 394
270 or 274

Fall Junior Year Abroad

  Fall Spring
1st year MCS-121
MCS-177
MCS-178
2nd year MCS-228
MCS- 284
MCS-256
MCS-287
3rd year abroad MCS-265
MCS- 270 or MCS-274
4th year MCS-375
MCS- 377 or MCS-378
MCS-388 or MCS-394

Honors program

In order to graduate with honors in computer science, a student must complete an application for admission to the honors program, showing that the student satisfies the admission requirements, and then must satisfy the requirements of the program.

Admission to the Honors Program

The requirements for admission to the honors program are as follows:

  1. Completion of MCS-119 or MCS-121, MCS-177, MCS-178, MCS-228, MCS-256, MCS-265, MCS-284, and MCS-287 with a quality point average greater than 3.14.
  2. Approval by the Computer Science Honors Committee of a honors thesis proposal. (See the honors thesis guidelines below.)

Requirements for Graduation with Honors

The requirements of the honors program, after admission to the program, are as follows:

  1. Attainment of a quality point average greater than pi in courses used to satisfy the requirements of the major. If a student has taken more courses than the major requires, that student may designate for consideration any collection of courses satisfying the requirements of the major.
  2. Approval of the honors thesis by the computer science honors committee. The thesis should conform in general outline to the previously approved proposal (or an approved substitute proposal), should include approximately 160 hours of work, and should result in an approved written document. Students completing this requirement will receive credit for the course MCS-350, whether or not they graduate with honors. (See the honors thesis guidelines below.)
  3. Oral presentation of the thesis in a public forum, such as the departmental seminar. This presentation will not be evaluated as a criterion for thesis approval, but is required.

Honors Thesis Guidelines

Computer science honors thesis proposals should be written in consultation with the faculty member who will be supervising the work. The proposal and thesis must each be approved by the Computer Science Honors Committee. These guidelines are intended to help students, faculty supervisors, and the committee judge what merits approval.

The thesis should include creative work, and should not reproduce well known results; however, it need not be entirely novel. It is unreasonable for an undergraduate with limited time and library resources to do a thorough search of the literature, such as would be necessary to ensure complete novelty. Moreover, it would be rare for any topic to be simultaneously novel, easy enough to think of, and easy enough to do.

The thesis should include use of primary-source reference material. As stated above, an exhaustive search of the research literature is impractical. Nonetheless, the resources of inter-library loan, the faculty supervisor's private holdings, etc. must be tapped if the thesis work is to go beyond standard classroom/textbook work.

Many computer science theses include some system-building effort (typically programming, though hardware construction is possible). However, this kind of work is neither necessary nor sufficient. There must be some more theoretical, conceptual, or empirical side to the work. A typical thesis might involve the practical application of a theoretical concept. Other theses, however, are purely theoretical.

Occasionally, a thesis may be based on empirical, rather than theoretical, foundations. For example, the quantitative performance of a system might be measured. This kind of thesis should be approached with caution, as empirical work has many pitfalls and can therefore be difficult to complete on a tight time schedule.

The written thesis should sufficiently explain the project undertaken and results achieved that someone generally knowledgeable about computer science, but not about the specific topic, can understand it. The quality of writing and care in citing sources should be adequate for external distribution without embarrassment.

The thesis must contain a substantial computer science component, though it can include other disciplines as well. If a single thesis simultaneously satisfies the requirements of this program and some other discipline's honors program, it can be used for both (subject to the other program's restrictions). However, course credit will not be awarded for work which is otherwise receiving course credit.

The Computer Science Honors Committee maintains a file of past proposals and theses, which may be valuable in further clarifying what constitutes a suitable thesis.