Computer Science Major
Quick Links
University Core/General Education Requirements
Major Requirements
- Computer Science Courses
- Computer Science Project Sequence
- Computer Science Electives
- Supporting Courses in Science and Mathematics
- Additional Writing Requirement
- Science Elective/Quantitative Elective Courses
- Ethics Requirement
- General Elective Courses
- Credits Required for the 51ÊÓÆµ
- Academic Standing
BS/MS Program
Course Descriptions
General Education Requirements
For a general description of the current General Education ("GenEd") requirements, please see the
For a list of courses that currently satisfy the General Education requirements, please see the .
Computer science majors typically satisfy the new GenEd 2000 requirements by taking
- College Writing I and College Writing II,
- three courses designated as Arts and Humanities,
- three courses designated as Social Sciences,
- one course designated as a Diversity course, and
- one course that satisfies the Computer Science Ethics Requirement.
Major Requirements
91.101 Computing I for 4 credits
91.102 Computing II for 4 credits
91.201 Computing III for 4 credits
91.203 Computer Organization & Assembly Language for 4 credits
91.204 Computing IV for 3 credits
91.301 Organization of Programming Languages for 3 credits
91.304 Foundations of Computer Science for 3 credits
91.305 Computer Architecture for 3 credits
91.308 Introduction to Operating Systems for 3 credits
91.404 Analysis of Algorithms for 3 credits
Computer Science Project Sequence for 6 credits
Computer Science Elective for 3 credits
View the complete (pdf).
Computer Science Project Sequence
All Computer Science majors must take a one- or two-semester project course from the approved department list. Students who take an approved one-semester project course such as Compiler Writing must take two additional Computer Science electives; otherwise, only one is required. Students may not take more than 6 credits from any combination of the following: 91.401, 91.402, 91.460, and 91.490. Current project course sequences include:
91.309 Database I and 91.310 Database II
91.401 Software Project Lab I and 91.402 Software Project Lab II
91.406 Introduction to Compiler Writing and Computer Science Elective
91.411 Software Engineering I and 91.412 Software Engineering II
91.413 Data Communications I and 91.414 Data Communications II
91. 414 Data Communications I and 91.561 Computer Security I
91.420 Artificial Intelligence and 91.421 Machine Learning and Data Mining
91.427 Graphics I and 91.428 Graphics II
91.450 Robotics I and 91.451 Robotics II
91.491 GUI Programming I and GUI Programming II or 91.427 Graphics I
91.561 Computer Security and 91.562 Computer Security II
This list is subject to revision. Students should check with their advisors for the latest information.
Some project sequences are not offered every year. Thus, you should take the second course of a project sequence in the semester immediately following the one in which you took the first course of that sequence.
Computer Science Electives
In addition to undergraduate courses with 91.3xx and 91.4xx numbers, most 500-level computer science courses may also be used as computer science electives. For example, undergraduate computer science majors are often qualified to take 91.502, 91.515, 91.521, 91.522, 91.538, 91.539, 91.540, 91.541, 91.543, or 91.546.
Supporting Courses in Science and Mathematics
92.131 Calculus I for 4 credits
92.132 Calculus II for 4 credits
95.141 Physics I & Lab for 4 credits
95.144 Physics II & Lab for 4 credits
92.231 Calculus III for 4 credits
92.321 Discrete Structures I for 3 credits
92.322 Discrete Structures II for 3 credits
92.386 Probability and Statistics I for 3 credits
16.265 Logic Design for 3 credits
Additional Writing Requirement
In addition to 42.101 and 42.102, College Writing I and II, all CS majors are required to take 42.220, Oral and Written Communication for Computer Science.
Science Elective/Quantitative Elective Courses
Students who became computer science majors before September 2005 must take two 3-credit courses in quantitative areas outside of Computer Science or Pure Mathematics. Courses in Applied Mathematics, Engineering, the Sciences and other areas of an advanced quantitative content satisfy this requirement. In the social sciences, courses that have calculus or mathematical statistics as prerequisites satisfy this requirement.
Students who become computer science majors in September 2005 and later must instead satisfy a requirement for additional credits in the natural sciences.
The Computer Science Department requires its majors to take an Ethics course.
Courses currently approved as satisfying this requirement are
- 57.211 Sustainable Development
- 59.395 Computers in Society
- 45.335 Ethical Issues in Technology
- 45.341 Science, Ethics, and Society
- 45.334 Engineering and Ethics
- 45.401 Bioethics and Genetic Research
When a course satisfies the Ethics Requirement and a General Education Requirement, CS Majors can use it to satisfy both requirements.
The faculty has approved a change in the curriculum for undergraduate CS majors who take 91.304 (undergraduate Foundations of Computer Science) or 91.502 (Graduate Foundations of Computer Science). The number of general electives these students must take has been reduced from five to four (for students doing the General Education Requirements instead of the Areas). You must still accumulate 120 credits. You may take more than four general electives if you choose.
This change applies to students required to take 91.304. It also applies to students who choose to take 91.304 or 91.502 as a CS elective or a general elective. If you are a major doing the old core (the Areas) and are considering taking 91.304 or 91.502, please see Prof. Heines for an explanation of how the new rules apply to you. Only students who have been continuously enrolled at UML since BEFORE Fall of 1993 should be following the old core.
With certain exceptions, CS students may take any three or four credit course from any academic department within the University as a general elective.
At least one general elective must be in a non-technical area, i.e., not in computer science, the sciences, mathematics, engineering, or similar disciplines. It is safe to choose a course in the humanities or social sciences that does not have a computation or other technical focus.
For all the general electives, CS students must avoid:
- courses in areas required by the CS curriculum (mathematics and physics) unless they are at a level higher than the courses required by the CS curriculum
- non-CS courses having a significant computing component or a significant overlap in content with courses required by the CS curriculum
- CS courses for non-majors
The determination of the acceptability of any proposed general elective course will be made by the CS Department Undergraduate Coordinator.
Examples of courses that may NOT be used as general electives are
- programming language courses offered by other departments (all computer science courses have 91.xxx course numbers; 90.xxx and 92.xxx courses are offered by the Mathematics Department)
- MIS or IT courses
- mathematics courses below the level of the science and engineering calculus sequence
- CS courses for non-majors
- many certificate courses (including some Computer Science Department courses) offered through Continuing Education
You may take courses that do not qualify as general electives. Such courses appear on your transcript and are part of your overall GPA. However, these courses do not count toward your BS degree in Computer Science.
Students who have taken courses in the above categories before they came to 51ÊÓÆµ are usually allowed to use them as general electives.
Total Credits Required for the 51ÊÓÆµ
Students must take or transfer an appropriate course for each slot in the curriculum grid. Each course can fill only one slot. The University requires at least 120 credits to graduate.
Beginning with the first semester of the sophomore year, and every semester thereafter, CS majors must maintain
- a cumulative grade point average of 2.5 or better in all CS courses (91.xxx) taken at 51ÊÓÆµ.
- a cumulative grade point average of 2.3 or better in all courses taken at 51ÊÓÆµ.
Students who fail to satisfy these requirements will not be allowed to graduate. Thus, students should review their cumulative grade point averages regularly with their advisors.