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, 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.
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:
- A grade point average of at least 2.3333 in the following four courses.
- MCS-119 or MCS-121 Calculus I
- MCS-177 Intro. to Computer Science I
- MCS-178 Intro. to Computer Science II
- MCS-228 Proofs in Mathematics and Computer Science
- All of the following:
- MCS-256 Discrete Calculus
- MCS-265 The Theory of Computation
- MCS-284 Introduction to Computer Organization
- MCS-287 Principles of Programming Languages
- MCS-375 Algorithms: Analysis and Design
- MCS-256 Discrete Calculus
- One course from the following:
- MCS-270 Software Development
- MCS-274 Database Systems
- MCS-270 Software Development
- One course from the following:
- MCS-377 Networking
- MCS-378 Operating Systems
- MCS-388 Compiler Design
- MCS-394 Topics in Computer Science
- One course from the following:
- A second course from the list in requirement 4
- MCS-355 Scientific Computing and Numerical Analysis
- 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
- A grade point average of at least 2.333 in these four courses
- MCS-119 Calculus with Pre-Calculus Review or MCS-121 Calculus I
- MCS-177 Intro. to Computer Science I
- MCS-178 Intro. to Computer Science II
- MCS-228 Proofs in Mathematics and Computer Science
- A course from the following:
- MCS-265 The Theory of Computation
- MCS-284 Introduction to Computer Organization
- MCS-287 Principles of Programming Languages
- MCS-375.Algorithms: Analysis and Design
- A course from the following:
- An additional course from the list in requirement 2.
- MCS-256 Discrete Calculus
- MCS-270 Software Developments
- MCS-274 Database Systems
- MCS-355 Scientific Computing and Numerical Analysis
- MCS-358 Mathematical Model Building
- 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-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:
- 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.
- 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:
- 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.
- 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.)
- 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.