Requirements
Computer Science Major
Students majoring in computer science must complete the four courses in the core sequence (CSCI 2100 or CSCI 2101; CSCI 2102; CSCI 2200; and CSCI 2330), five additional electives 2000-level or above and one mathematics course 1300-level or above. The electives must satisfy the following distribution requirements: at least one in theory, at least one in systems, at least one in artificial intelligence, at least one projects course, and at least two 3000-level courses. An elective course may be used to satisfy multiple requirements (for e.g. CSCI 3325 Distributed Systems checks 3000-level, projects and systems). Each of the courses required for the major must be taken for a regular letter grade (not Credit/D/Fail) with a minimum earned grade of C-. Independent Studies and Honors Projects do not count towards the required courses for the major. Students who place in CSCI 1101 must take CSCI 1101 before starting the core sequence.
| Code | Title | Credits |
|---|---|---|
| Core Courses | 4 | |
CSCI 2100 | Accelerated Data Structures and Advanced Programming I | |
or CSCI 2101 | Data Structures and Advanced Programming I | |
CSCI 2102 | Data Structures and Advanced Programming II | |
CSCI 2200 | Algorithms | |
CSCI 2330 | Foundations of Computer Systems | |
| Elective Courses in Algorithms/Theory b | 1 | |
CSCI 2210 | Theory of Computation | |
CSCI 3210 | Computational Game Theory | |
CSCI 3225 | Algorithms for GIS | |
CSCI 3240 | Computational Complexity Theory | |
CSCI 3250 | Computational Geometry | |
CSCI 3260 | Quantum Computation | |
| Elective Courses in Artificial Intelligence b | 1 | |
CSCI 2400 | Artificial Intelligence | |
CSCI 3220 | Logic in Computer Science | |
CSCI 3400 | Cognitive Architecture | |
CSCI 3465 | Financial Machine Learning | |
CSCI 3725 | Computational Creativity | |
CSCI 3485 | Deep Learning for Computer Vision | |
| Elective Courses in Systems b | 1 | |
CSCI 2320 | Principles of Programming Languages | |
CSCI 2335 | Software Engineering | |
CSCI 3310 | Operating Systems | |
CSCI 3325 | Distributed Systems | |
CSCI 3330 | Cybersecurity | |
| Elective Courses that fulfill the "projects" requirement b | 1 | |
CSCI 2715 | Human-Computer Interaction | |
CSCI 3225 | Algorithms for GIS | |
CSCI 3325 | Distributed Systems | |
CSCI 3465 | Financial Machine Learning | |
CSCI 3485 | Deep Learning for Computer Vision | |
CSCI 3725 | Computational Creativity | |
| Other Elective Courses b | 1 | |
CSCI 2350 | Social and Economic Networks | |
CSCI 2510 | Creating Future Worlds: Computing, Ethics, and Society | |
CSCI 2715 | Human-Computer Interaction | |
| Mathematics Requirement | 1 | |
Select one mathematics course number 1300 or higher | ||
- a
Students with a placement in CSCI 2101 Data Structures and Advanced Programming I are exempt from taking CSCI 1101 Introduction to Computer Science or CSCI 1103 Accelerated Introduction to Computer Science
- b
At least two of these courses must be at the 3000-level
Computer Science Minor
Interdisciplinary Major
The department participates in an interdisciplinary major program in computer science and mathematics. See the Interdisciplinary Majors.
Additional Information and Department Policies
- Students interested in majoring in computer science must complete CSCI 2102 Data Structures and Advanced Programming II with a letter grade of C- or better by the end of their sophomore year. Prospective majors are also encouraged to satisfy their mathematics requirement as early as possible (ideally in their first two years).
-
Each of the courses required for the major or minor must be taken for a regular letter grade (not Credit/D/Fail) with a minimum earned grade of C-.
-
For all CSCI courses, a grade of C- or better must be earned in the course for it to serve as a prerequisite for another computer science course.
-
Independent Studies and Honors Projects do not count towards the required courses for the major.
-
At most two of the ten computer science courses required for the major, or one of the four computer science courses required for the minor, can be transfer credit from other institutions. Transfer credit cannot be used to fulfill the 3000-level requirement.
-
Beyond the one course allowed by college policy, majors and minors may not double-count any courses with another department or program.
-
Advanced Placement and International Baccalaureate scores, in addition to the computer science placement survey, are only used for placement.
-
Students—particularly those who intend to do graduate work in computer science—are encouraged to collaborate with faculty on research projects through independent studies, honors projects, and fellowship-funded summer research.
Information for Incoming Students
Students interested in computer science start with one of two courses, based on the computer science and mathematics placement surveys:
CSCI 1101 Introduction to Computer Science is the entry point for students with no prior background in computer science. It is an introduction to programming, computational thinking and problem solving using the Python programming language.
CSCI 2100 Accelerated Data Structures and Advanced Programming I is the standard entry point for students with sufficient background in computer science that includes knowledge of Java (e.g. from AP classes). CSCI 2100 begins with an accelerated introduction to Python (which is used in the upper level AI electives), followed by the standard data structures and Java curriculum from CSCI 2101.
CSCI 2101 Data Structures and Advanced Programming I covers the standard data structures and Java curriculum, but assumes existing familiarity with Python (such as from taking CSCI 1101) rather than any Java background, and therefore starts with an introduction to Java before continuing into the standard data structures curriculum. Incoming students with sufficient prior background in Python may be placed into CSCI 2101 rather than CSCI 2100.
Depending on your starting point, there are three usual pathways into the computer science curriculum (up through CSCI 2102 Data Structures and Advanced Programming II):
• For students with no prior experience or those placed into CSCI 1101: CSCI 1101 --> CSCI 2101 --> CSCI 2102
• For students placed into CSCI 2100: CSCI 2100 --> CSCI 2102
• For students placed into CSCI 2101: CSCI 2101 --> CSCI 2102
Placements are binding and may not be overridden without permission of the department. Prior knowledge of computer science is used for placement only and does not count as credit towards the major.
Students with a placement of CSCI 2100 Accelerated Data Structures and Advanced Programming I should note that this course is normally offered only in the fall; CSCI 1101 Introduction to Computer Science and CSCI 2101 Data Structures and Advanced Programming I are offered every semester.
Students are strongly encouraged to take their first computer science course during their first year, and students who intend to pursue a computer science major are required to complete CSCI 2102 Data Structures and Advanced Programming II with a letter grade of C- or above by the end of their sophomore year.
Questions about your CSCI placement, or requests to enroll in a course other than what is indicated by your placement, should be directed to csci_placement@bowdoin.edu.
Math placements:
- Students with a placement of of MATH 1050 Quantitative Reasoning should complete MATH 1050 Quantitative Reasoning before taking a computer science course.
- Students with a placement of MATH 1600 Differential Calculus should complete MATH 1600 Differential Calculus before taking CSCI 2100 Accelerated Data Structures and Advanced Programming I or CSCI 2101 Data Structures and Advanced Programming I.
This is an excerpt from the official Bowdoin College Catalogue and Academic Handbook. View the Catalogue