Requirements

Computer Science Major

The major in computer science consists of at least ten courses.

Required Courses
CSCI 2101Data Structures1
CSCI 2200Algorithms1
CSCI 2330Foundations of Computer Systems1
Select at least one course from each of the following areas, for a total of six computer science electives, at least three of which must be advanced-level courses numbered 3000 or higher:6
Algorithms/Theory
CSCI 2210
Theory of Computation
CSCI 2220
Logic in Computer Science
CSCI 3210
Computational Game Theory
CSCI 3250
Computational Geometry
CSCI 3225 GIS Algorithms and Data Structures
Artificial Intelligence
CSCI 2400
Artificial Intelligence
CSCI 3400
Cognitive Architecture
CSCI 3420
Optimization and Uncertainty
CSCI 3445
Nature-Inspired Computation
CSCI 3465
Financial Machine Learning
CSCI 3725
Computational Creativity
Systems
CSCI 2320
Principles of Programming Languages
CSCI 2335
Software Engineering
CSCI 3300
Computer Networks
CSCI 3310
Operating Systems
CSCI 3325
Distributed Systems
Projects Courses
CSCI 3225 GIS Algorithms and Data Structures
CSCI 3325
Distributed Systems
CSCI 3445
Nature-Inspired Computation
CSCI 3465
Financial Machine Learning
CSCI 3715
Human-Computer Interaction
CSCI 3725
Computational Creativity
Select one mathematics course numbered 1000 or higher.1
 

Computer Science Minor

 
The minor in computer science consists of CSCI 2101 Data Structures, plus at least three courses, numbered 2000 or higher. Independent studies in computer science cannot count toward the 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

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

  • The prerequisite for 2000-level courses is a grade of C or better on the final exam in CSCI 1101 Introduction to Computer Science or CSCI 1103 Programming with Data. For courses at the 2000 level or above, a grade of C- or better must be earned in the course for it to serve as a prerequisite for another computer science course.

  • One independent study at the intermediate or advanced level may be applied toward the required number of computer science courses, but cannot be used to fulfill any other requirements (areas, projects, or 3000 level).

  • At most two of the nine 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.

  • Majors may double-count one course with another department or program. 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 test, 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 generally start with CSCI 1101 Introduction to Computer Science (offered every semester) or CSCI 1103 Programming with Data (offered every fall; previously named Accelerated Introduction to Computer Science) both of which provide an introduction to core concepts in computer science. In rare cases, students may jump directly into CSCI 2101 Data Structures (see below for more information).

Note that introductory computer science classes regularly fill to capacity, and registration priority is given to first-years. You are encouraged to take these courses early, as you will have a smaller chance to enroll as an upper-class student. Students who are interested in pursuing a major in computer science are especially encouraged to take CSCI 1101 Introduction to Computer Science or CSCI 1103 Programming with Data during their first year at Bowdoin. All computer science classes regularly fill to capacity and taking an introductory course after the first year can make it difficult to complete the major.

Introductory Courses

  • Students with no programming background normally start with CSCI 1101 Introduction to Computer Science.
  • Students with some programming background normally start with CSCI 1103 Programming with Data
    • CSCI 1103 Programming with Data covers the same core material as CSCI 1101 Introduction to Computer Science but at an accelerated pace through basic material and with some additional topics. Students who enroll in CSCI 1103 Programming with Data are expected to have basic comfort with programming concepts; experience with Python specifically is not required or expected. 
    • Examples of programming background appropriate for CSCI 1103 Programming with Data include AP or IB coursework in computer science, completion of DCS 1100 Introduction to Digital and Computational Studies or DCS 1200 Data Driven Societies, informal programming experience, or experience from other science courses. Prior knowledge of computer science is used for course placement only and does not count as credit toward the major or minor.
    • Students intending to enroll in CSCI 1103 Programming with Data as their first computer science or digital and computational studies course must email the instructor directly to request a registration override and can find that information in the Classfinder.
    • Students with some programming background, but who wish to enroll in CSCI 1101 Introduction to Computer Science instead of CSCI 1103 Programming with Data must meet with a professor in the department to discuss their particular situation.
  • Students with substantial programming background normally start with CSCI 1103 Programming with Data or, in rare cases, CSCI 2101 Data Structures
    • In exceptional cases, students with a strong computer science/programming background may skip CSCI 1101 Introduction to Computer Science/CSCI 1103 Programming with Data and enroll directly in CSCI 2101 Data Structures. Students interested in this option must consult with the department. This course uses Java, but does not assume any prior Java experience (most students enter with Python experience only). The course has a 1½ hour lab. Students interested in this option should contact the department to complete an informal placement recommendation questionnaire.
    • If they receive a result that indicates CSCI 1103 Programming with Data, they should enroll in that course. If they receive a result that indicates CSCI 1103 Programming with Data or possibly CSCI 2101 Data Structures, and they wish to explore the possibility of enrolling in CSCI 2101 Data Structures, they should follow up with one of the instructors of the CSCI 2101 Data Structures sections and can find that information in the Classfinder.
    • Prior knowledge of computer science is used for placement only and does not count as credit towards the major. Students with any questions about appropriate placement should talk to a member of the department prior to registration.

This is an excerpt from the official Bowdoin College Catalogue and Academic Handbook. View the Catalogue