Computer Science Advising Guide

Computer Science is more than just computer programming. It is the science of solving problems with computers. The ability to think analytically and logically, design creative and robust solutions, work in a team environment, and continue to learn new technologies is vital to stay competitive in a constantly changing world. As computers are now a part of almost every electronic device the need for qualified computer scientists is greater than ever. 

  • Majors will solve problems using multiple programming languages, development platforms, and have a theoretical and practical understanding of the fundamental principles and concepts of computer science. 

  • Caring instructors provide a solid underpinning of structured thinking, and analytical reasoning that prepare students to solve complex problems as a team or as an individual. 

  • Graduates will be equipped with the problem-solving skills, practical experiences, and technical ability to succeed in the rapidly evolving digital landscape and find a career that suits their interests. 


 Computer Science Major

This section lists the requirements of the CS major, 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 below. 

Requirements for the 2020 - 2021 academic year computer science major can be found here

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-150 Discrete Mathematics
  2. MCS-177 Intro. to Computer Science I
  3. MCS-178 Intro. to Computer Science II
  4. MCS-189 Intro to Data
  5. MCS-210 Computing in Society
  6. MCS-250 Discrete Mathematics II
  7. MCS 276 Intro to Systems I
  8. MCS-287 Principles of Programming Languages
  9. MCS-374 Software Engineering
  10. MCS-375 Algorithms
  11. MCS-376 Intro to Systems II
  12. One course from the following: 
    1. MCS-381 Social Computing
    2. MCS-382 Applied Machine Learning
    3. MCS-383 Advanced Networking and Operating Systems
    4. MCS-384 Advanced Algorithms

Computer Science Major Map: a diagram of courses needed to complete a major in computer science

 Computer Science Minor

As with the major in computer science, a minimum grade of C- must be attained in all six courses used to satisfy the minor. There are three tracks for a minor in computer science. 

Computer Science Minor: Traditional

 
  1. MCS-177 Intro. to Computer Science I
  2. MCS-178 Intro. to Computer Science II
  3. MCS-189 Intro to Data
  4. MCS-210 Computing in Society
  5. MCS-287 Principles of Programming Languages
  6. MCS-374 Software Engineering
A diagram illustrating the courses needed for a minor in computer science

Computer Science Minor: Data

 
  1. MCS-177 Intro. to Computer Science I
  2. MCS-178 Intro. to Computer Science II
  3. MCS-189 Intro to Data
  4. MCS-210 Computing in Society
  5. MCS-374 Software Engineering
  6. One course from the following:
    1. MCS-381 Social Computing
    2. MCS-382 Applied Machine Learning
    3. MCS-355 Scientific Computing and Numerical Analysis
    4. MCS-358 Mathematical Modeling
A diagram illustrating the courses needed for a minor in computer science

Computer Science Minor: Theoretical

 
  1. MCS-150 Discrete Mathematics
  2. MCS-177 Intro. to Computer Science 
  3. MCS-178 Intro. to Computer Science II
  4. MCS-250 Discrete Mathematics II
  5. MCS-287 Principles of Programming Languages
  6. MCS-375 Algorithms
A diagram illustrating the courses needed for a minor 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. 

 Typical Schedule (Version 1)

  Fall Spring
1st Year MCS-177 MCS-178
2nd Year

MCS-150

MCS-189

MCS-210

MCS-250

3rd Year MCS-375

MCS 287

MCS 374

4th Year MCS-276

MCS 376

Elective

 

Typical Schedule (Version 2)

  Fall Spring
1st Year MCS-177 MCS-178
2nd Year MCS-189

MCS-210

MCS-287

3rd Year

MCS-150

MCS-276

MCS-250

MCS-376

4th Year MCS-375

MCS-374

Elective


Junior Year Study Abroad

  Fall Spring
1st Year MCS-177 MCS-178
2nd Year MCS-189

MCS-150

MCS-210

MCS-250

3rd Year Abroad Abroad
4th Year

MCS-276

MCS-375

MCS-374

MCS-376

Elective

 

Fast Track: 2.5 Years

    Fall Spring
1st Year   --- ---
2nd Year   --- MCS-177
3rd Year  

MCS-150

MCS-178

MCS-189

MCS-210

MCS-250

MCS-287

4th Year  

MCS-276

MCS-375

MCS-374

MCS-376

Electgive


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 all eleven non-elective courses within the computer science major with a grade 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.)

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

  1. Attainment of a grade 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.