Computer Science Advising Guide

This document is intended primarily as a resource for students majoring or minoring in Computer Science, as well as those considering such a major or minor. It should also be valuable to first year advisors outside the department and as an adjunct to advisors within the department. The first section gives a brief overview of the discipline; the remaining sections describe the major, the honors program, and the minor.

Contents

Computer Science

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.

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

(prerequisite diagram)

This diagram shows the prerequisites structure of courses in the CS major. 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. Although MCS-385 Artificial Intelligence is no longer offered, petitions to use it in place of an elective will be accepted pro-forma.

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. MCS-121 (or MCS-122), MCS-177, MCS-178, and MCS-236, with an average grade point average of at least 2.3333 in these four courses.
  2. MCS-256, MCS-265, MCS-284, MCS-375, and MCS-287.
  3. MCS-270 or MCS-274.
  4. One of MCS-377, MCS-378, MCS-388, and MCS-394.
  5. Either a second course from the list in requirement 4 or one of MCS-355 and MCS-358.

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 121 177
2nd year 178
236
287
256
3rd year 284
375
270 or 274
265
4th year 377 or 378 388 or 394

Early start, grad. school bound

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

Start sophomore Fall

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

Start sophomore Fall, late on 236

  Fall Spring
1st year 121?
2nd year 177 (and 121) 178
3rd year 284
236
265
256
287
4th year 375
377 or 378
388 or 394
270 or 274

Junior year abroad

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

Spring junior year abroad

  Fall Spring
1st year 121 177
2nd year 178
236
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 121
177
178
2nd year 236
284
256
287
3rd year abroad 265
270 or 274
4th year 375
377 or 378
388 or 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-121 (or MCS-122), MCS-177, MCS-178, MCS-236, MCS-256, MCS-265, MCS-284, and MCS-287 with a quality point average greater than pi.
  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.

The 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. MCS-121 (or MCS-122), MCS-177, MCS-178, and MCS-236, with a grade point average of at least 2.333 in these four courses.
  2. One of MCS-265, MCS-284, MCS-287, and MCS-375.
  3. Either an additional course from the list in requirement 2 or one of MCS-256, MCS-270, MCS-274, MCS-355, MCS-358, and MCS-394.

Last updated on June, 2003