2023-2024 Catalog

Computer Science

Overview

Computers have transformed our world technologically, economically, and socially. Although computer science has its roots in mathematics, the use of computers increasingly informs almost every academic discipline. At Occidental College, the study of Computer Science emphasizes an understanding not only of the process of computing but also of the promise and limitations of computers within an intellectual, societal, and ethical framework. A major or minor in Computer Science can help prepare students for a variety of opportunities for subsequent employment or graduate work. Moreover, the program can provide students with models of problem solving and theoretical constructs that can shed light on human intelligence and the workings of the mind.

Requirements

Major

Computer science is a broad field, encompassing topics from digital logic and advanced mathematical theory to video games and data science. At the same time, these foundations and applications require fundamental knowledge of how a computer works, as well as the ability to translate processes into working programs. The Computer Science major coursework mirrors this structure. A student majoring in Computer Science must complete the COMP 131 proficiency Requirement and take a minimum of 12 courses (46 units).

Required Courses

A student majoring in Computer Science must take a minimum of 12 courses (46 units). Study abroad courses and transfer credit may satisfy any of these requirements, except for COMP 101, COMP 390, or COMP 490, with departmental approval.

COMP 101Justice and Equity in Technology

2 units

COMP 229Data Structures

4 units

 

COMP 149Mathematical Foundations of Computer Science

4 units

Or

 

MATH 210Discrete Mathematics

4 units

And

MATH 214Linear Algebra

4 units

 

COMP 239Computer Organization

4 units

COMP 390Computer Science Junior Seminar

4 units

COMP 490Computer Science Senior Seminar

4 units

Students may substitute MATH 211 Discrete Mathematics Through Cryptography for MATH 210.

Focus Areas

Students should meet with an advisor early on to explore potential pathways through the major. Students will select one of the following three focus areas:

Computer Science Focus

Six courses 200-level or above in at least two different sub-fields of computer science (artificial intelligence, interfaces, security, systems/software, and/or theory). At least three of those courses must be at the 300-level or above. COMP 317 is highly recommended for students interested in graduate school. Students can count at most two courses from the Additional Electives (below) towards the major in this pathway.

This focus is designed to give students broad working knowledge of the many facets of the field, while maintaining freedom to pursue specific topics in depth.

Computational Mathematics Focus

Six elective courses at 200-level or above, with at most two courses at the 200-level (not including Linear Algebra or Discrete Mathematics). Students must complete three elective courses from MATH and three elective courses from COMP that are centered on a theme in computational mathematics, plus a senior comprehensive project related to the theme. At most two of these courses can be double-counted for another major/minor.

This focus reflects the growing importance of work in computer science that is grounded in mathematical foundations, and work in mathematics that requires an understanding of computational methods and implementation. Students who are interested in the Computational Mathematics option will work with an advisor to propose an interdisciplinary focus of six courses on a related theme. Students may choose to seek an additional advisor from the Mathematics Department, but this is not required. Proposals must include an intellectual rationale for the course selection and associated senior project. The proposal should be submitted to the department using this form no later than two semesters prior to the semester of graduation, and at least two weeks before Advising Week. 

Any changes to the pathway must be approved via a Petition for Special Consideration, signed by the academic advisor, the department chair, and the optional math advisor, and submitted to the Registrar's Office no later than the week prior to registration in the semester before graduation.

MATH 210Discrete Mathematics

4 units

MATH 214Linear Algebra

4 units

Students may substitute MATH 211 Discrete Mathematics Through Cryptography for MATH 210.

CS+X Focus

Six courses 200-level or above, with at least three of those courses at the 300-level or above. Students must complete two CS courses in different sub-fields, a four-course interdisciplinary focus around a computer science or technology theme (for a total of 24 units), plus a senior comprehensive project related to the theme. At least three of the four courses in the interdisciplinary focus must be outside of and not cross-listed with Computer Science, and at most two of these courses can be double-counted for another major/minor.

This focus reflects the growing importance of computer science in many fields, and allows students to explore the intersection of technology with their other academic interests. Students who are interested in the CS+X option will work with an advisor to propose the interdisciplinary focus of four courses on a related theme. Proposals must include an intellectual rationale for the course selection. A faculty member outside of Computer Science must approve the proposal and agree to act as an outside advisor for the senior comprehensive project. The proposal should be submitted to the department using this form no later than two semesters prior to the semester of graduation, and at least two weeks before Advising Week. 

Any changes to the pathway must be approved via a Petition for Special Consideration, signed by the academic advisor, the department chair, and the outside advisor for the CS+X theme, and submitted to the Registrar's Office no later than the week prior to registration in the semester before graduation.

Additional Electives

Students may select courses from the list below to satisfy a major elective.

BIO 268Biostatistics

4 units

BIO 373Computational Biology

4 units

COGS 242Computational Approaches to Cognition

4 units

ECON 305Game Theory

4 units

GEO 255Remote Exploration of Earth

4 units

KINE 302Biomechanics

4 units

KINE 310/PSYC 310Motor Learning and Control

4 units

MATH 212Multivariable Calculus

4 units

MATH 322Number Theory

4 units

MATH 330Probability

4 units

MATH 332Mathematical Statistics

4 units

MATH 354Set Theory and Foundations of Mathematics

4 units

MATH 370Numerical Analysis

4 units

MATH 372Operations Research

4 units

MATH 380Combinatorics

4 units

MATH 396Topics in Applied Mathematics

2 or 4 units

PHIL 150Formal Logic

4 units

PHIL 341Philosophy of Space and Time

4 units

PHIL 350/MATH 350Metalogic

4 units

PSYC 301Learning

4 units

PSYC 302Perception

4 units

PSYC 444Thinking and Reasoning

4 units

UEP 305Urban Data Analysis

4 units

PHIL 242Minds, Agents, and Persons

4 units

PHYS 261Simulations in Physics

4 units

PSYC 310/KINE 310Motor Learning and Control

4 units

Students may also apply MAC 250 as an additional elective if they have enrolled in the "Game Design Workshop" section of the course.

Honors in the Major

Honors in Computer Science may be awarded to graduating seniors who demonstrate excellence in their coursework and perform additional research related to their senior comprehensive project during the spring semester of their senior year. Intent to propose an honors project is due the first Friday of December by completing the form linked here. Decision to accept or reject the proposal will be communicated to the student before the first day of classes in the spring semester. Students will be required to enroll in COMP 499 in order to be eligible for Honors. Honors will be awarded based on evaluation of the honors project produced in COMP 499 by Computer Science faculty. To be eligible, students must have a 3.5 grade point average in the major and a 3.25 overall grade point average.

Minor

Students seeking a Computer Science Minor must complete six courses (24 credits) which satisfy the following:

  1. Two courses are required: COMP 131 and COMP 229.
  2. At least four (16 credits) of the six courses (24 credits)  in the Minor must be COMP courses at the 200-level or higher.
  3. One of the following two choices is also required to fulfill the mathematics component of the Minor: COMP 149 or MATH 210 and MATH 214.

COMP 131Fundamentals of Computer Science

4 units

COMP 229Data Structures

4 units

Three 4-unit COMP courses at the 200-level or above

12 units

 

COMP 149Mathematical Foundations of Computer Science

4 units

Or

 

MATH 210Discrete Mathematics

4 units

And

MATH 214Linear Algebra

4 units

Second-Stage Writing

Students majoring in Computer Science will fulfill the College's Second-Stage Writing Requirement by receiving at least a C in COMP 390 and satisfactorily completely its writing component. Note that this course is typically only offered in the Spring semester, and we strongly recommend students avoid studying abroad that semester to complete the requirement by the end of their junior year. Students who do not successfully complete the writing component of COMP 390 will be required to submit a portfolio of technical writing about their 300-level or above COMP electives. The portfolio should be submitted to the department chair of Computer Science no later than the midterm of the following semester.

Comprehensive Requirement

In the senior year, the student will complete a project on a topic in Computer Science. The project is coordinated with the work of the Computer Science Senior Seminar (COMP 490). All majors take the Senior Seminar in the fall semester of the senior year. Students considering study abroad must coordinate with the department to ensure the completion of their senior comprehensive project, but we recommend not studying abroad during fall of senior year. 

To earn credit for COMP 490, students will present their completed project to the computer science faculty at a public showcase open to the campus community, in addition completing a thesis on their work. Example projects include a fully functional and user-tested mobile app, a research paper in computer science, or a review of technology policies and their impacts. Students who pursue a CS+X or Computational Mathematics focus must complete a comprehensive project related to their theme. Distinction will be awarded by the Computer Science faculty (and in consultation with external faculty for students pursuing CS+X) to exceptionally strong comprehensive projects.

Advising Information

There are three focus areas in the major: the standard Computer Science focus, the Computational Math focus for students who have a more theoretical interest, and the CS+X focus for students who want to dive into the intersections between computing and other disciplines in the liberal arts (forming the discipline X).

All 100-level COMP courses are appropriate for students with no computer science experience. For students exploring their interest in the major, we recommend starting with COMP 131, which will provide an introduction that should determine their levels of interest and enjoyment in the subject. Students with previous experience that includes object-oriented programming may be able to start at a more advanced level (see Placement Information below). Once students have completed COMP 131, they should enroll in COMP 229 (Data Structures), which serves as a gateway course to upper-division courses. Students may also take COMP 239 (Computer Organization). Both courses are required for the major. Students are also encouraged to take COMP 101 (Justice and Equity in Technology) as early as possible.

The CS department typically offers 4-5 upper-division electives each semester. Note that our required upper-level seminars, COMP 390 (Junior Seminar) and COMP 490 (Senior Seminar), are only offered in the Spring and the Fall semesters respectively, and should be taken in the Junior Spring semester and the Senior Spring semester. Careful schedule planning is recommended for majors, and students who wish to study abroad should talk to their advisor as early as possible.

Placement Information

Students interested in the Computer Science major who have not previously studied object-oriented programming do not need to take a placement exam and should start with COMP 131.

Students who received a 4 or 5 on the AP Computer Science exam do not need to take COMP 131 and should start the major by taking COMP 229. Students who are uncertain of their programming abilities may elect to take COMP 181 (Advanced Programming), which is not required for the major but is designed to refresh/strengthen students’ programming abilities.

Other students who have previously studied programming have the option of taking the CS Self-Placement Exercise.

Sample 4-Year Plan: Focus in Computer Science

For students that are required to take COMP 131 to satisfy the proficiency requirement:

 

Fall

Spring

Year 1

  • Fall FYS course

  • Foreign Language 101

  • Core Requirement (4 units)

  • Core Requirement (4 units) 

  • Spring FYS course

  • COMP 131 (CPLS)

  • Foreign Language 102 (4 or 5 units)

  • Core Requirement (4 units)

Year 2

  • COMP 229 or COMP 239 (CPMS)

  • COMP 101 (2 units)

  • Core Requirement (4 units)

  • General Elective (4 units)

  • General Elective (4 units)

Year 3

  • COMP Elective (300-level, Subfield #1)

  • COMP Elective (300-level)

  • General Elective (4 units)

  • General Elective (4 units)

  • COMP 390

  • COMP Elective (Subfield #2)

  • General Elective (4 units)

  • General Elective (4 units)

Year 4

  • COMP 490

  • COMP Elective (300-level)

  • General Elective (4 units)

  • General Elective (4 units)

  • COMP Elective

  • COMP Elective

  • General Elective (4 units)

  • General Elective (4 units)

Curricular Notes:

  • Three COMP Electives must be at the 300-level

  • Two COMP Electives need to be taken in different subfields

  • Two COMP Electives may be selected from the list of Additional Electives

Sample 4-Year Plan - Focus in Computational Mathematics

For students that are required to take COMP 131 to satisfy the proficiency requirement:

 

Fall

Spring

Year 1

  • Fall FYS course
  • Foreign Language 101
  • Core Requirement (4 units)
  • Core Requirement (4 units)
  • Spring FYS course
  • COMP 131 (CPLS)
  • Foreign Language 102 (LANG)
  • Core Requirement (4 units)

Year 2

Year 3

  • Interdisciplinary Elective
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)
  • COMP 390 (Junior Seminar)
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)

 

Year 4

  • COMP 490 (Senior Seminar)
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)
  • Interdisciplinary Elective
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)

Curricular Notes:

  • Computational Mathematics majors must submit a form declaring their theme and what courses will be part of that theme. Students should do this by the beginning of their Junior Spring semester, so that the department can deliberate on the theme before students register for their Senior Fall semester classes.
  • Three Interdisciplinary Electives must be in Computer Science, and three must be in MATH.
  • A maximum of two courses can be at the 200-level (excluding MATH 210 and MATH 214).
  • A maximum of two courses can be double dipped with another major or minor.
  • Interdisciplinary Electives that do not carry the subject codes COMP or MATH must be filed with the Registrar’s Office by submitting a Transfer Credit & Course Substitution Form.

Sample 4-Year Plan - Focus in CS+X

For students that are required to take COMP 131 to satisfy the proficiency requirement:

 

Fall

Spring

Year 1

  • Fall FYS course
  • Core Requirement (4 units)
  • Core Requirement (4 units)
  • Foreign Language 101 (4 or 5 units)

 

  • Spring FYS course
  • COMP 131 (CPLS)
  • Core Requirement (4 units)
  • Foreign Language 102 (4 or 5 units)

 

Year 2

  • COMP 229 or COMP 239 (CPMS)
  • COMP 101 (2 units)
  • Core Requirement (4 units)
  • General Elective (2 units)
  • General Elective (4 units)

 

 

Year 3

  • COMP Elective (Subfield #1)
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)

 

  • COMP 390 (Junior Seminar)
  • COMP Elective (Subfield #2)
  • General Elective (4 units)
  • General Elective (4 units)

 

Year 4

  • COMP 490 (Senior Seminar)
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)

 

  • Interdisciplinary Elective
  • Interdisciplinary Elective
  • General Elective (4 units)
  • General Elective (4 units)

 

Curricular Notes:

  • CS+X majors must submit a form declaring their theme and what courses will be part of that theme. Students should do this by the beginning of their Junior Spring semester, so that the department can deliberate on the theme before students register for their Senior Fall semester classes.
  • Three Electives need to be at the 300-level
  • A maximum of two courses can be double dipped with another major or minor
  • Interdisciplinary Electives must be filed with the Registrar’s Office by submitting a Transfer Credit & Course Substitution Form

Transfer Credit Policies

Students who earned a score of 4 or 5 on the AP Statistics examination will earn four units of credit and will be considered to have completed the equivalent of COMP 146

The Computer Science Department allows online and hybrid courses for transfer credit. A score of 4 or 5 on the AP Computer Science examination is equivalent to COMP 131, and places a student into COMP 229 (Data Structures). 

For students who have taken the AP Computer Science Principles examination, who have taken IB or A-Level examinations in Computer Science, who have transfer credit, or are in similar situations, the department will evaluate each student’s situation individually. To aid in the evaluation, students should complete the guided placement programming assignment found at www.oxy.edu/academics/areas-study/computer-science/self-guided-assessment-quiz. A typical student should be able to complete the assignment in under two hours. In general, to place out of COMP 131, a student should be proficient in variables, branches (if, else), loops (for, while), functions (parameters, scope, return versus print), and object-oriented programming (classes versus instances, constructors, passing familiarity with inheritance). All other students should begin with COMP 131 as soon as possible. 

Students receiving a 4 or 5 on the AP Statistics Examination are exempt from COMP 146; MATH 150 is recommended for these students wanting to take further statistics courses.

Courses

Computer Science Courses

Faculty

Appointed Faculty

Justin Li, chair

Associate Professor

B.S., Northwestern University; Ph.D., University of Michigan

Kathryn Leonard

Professor; Associate Dean for Curricular Affairs

B.S., University of New Mexico; M.S., Ph.D., Brown University

Teddy Pozo

Assistant Professor
B.A., Swarthmore College; M.A., Ph.D., University of California, Santa Barbara

Irina Rabkina
Assistant Professor
B.A., Scripps College; M.S., Loyola University of Chicago; Ph.D., Northwestern University

On Special Appointment

Hsing-Hau Chen

Resident Assistant Professor

BA., B.S., M.S., National Taiwan University; M.S., Ph.D., University of Southern California

Eugenio Grippo

Visiting Assistant Professor
M.S., Ph.D., University of Southern California

SAlan Knoerr

Associate Professor, Emeritus
B.A., Oberlin College; Sc.M., Ph.D., Brown University

Tuyetdong Phan-Yamada

Visiting Instructor
B.S., University of California, Irvine; M.S., California State University, Los Angeles

Sheldon Schiffer
Visiting Assistant Professor
B.A., University of California, Santa Cruz; M.F.A., University of California, Los Angeles; Ph.D., Georgia State University

Anh Vo

Visiting Assistant Professor
B.S., Creighton University; Ph.D., University of Nebraska-Lincoln

Other faculty associated with the Computer Science department can be viewed here.