Computer science is about the organization of information and the design of processes that use it. This course teaches students to think computationally - how to break processes down into components that can be then fully described - and to acquire other habits necessary for a computer scientist. Students should come out able to write simple but complete programs of their choosing, and should also be able to diagnose problems in unfamiliar programs.

CORE REQUIREMENT MET: **LAB SCIENCE**

# Computer Science

Overview | Requirements | Courses | Faculty

## 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, 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 minor in Computer Science can help prepare students for a variety of opportunities for subsequent employment or graduate work. Moreover, the minor 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

**MINOR:**The requirements for the minor consist of demonstration of proficiency in programming, four fundamental courses, and one elective course, as follows.

*** Proficiency in Programming.**

This requirement may be satisfied by completion of four units of programming courses (listed below). Two of these four units must be in CS 157 or CS 161; and only one of these two courses may be taken for credit. Proficiency in Programming may also be demonstrated by examination.

- CS 155, Web design and programming (2 units; no prerequisite)
- CS 157, Programming in C++ (2 units; no prerequisite)
- CS 161, Programming in Java (2 units; no prerequisite)
- CS 165, Programming in Mathematica (2 units; no prerequisite)
- CS 167, Programming in Matlab (2 units; no prerequisite)

*** Four fundamental courses**

- Math 210: Discrete Mathematics (prerequisite: Calculus 2)
- Math 352: Computability and Complexity (prerequisite: Math 210) or CS 353: Information Theory (prerequisite: Math 210)
- CS 211: Java II and Introduction to Computer Science (prerequisite: CS 161, or equivalent)
- CS 311: Data Structures and Algorithms (prerequisite: CS 211)

*** Elective courses**

- Chemistry 355: Introduction to Bioinformatics (prerequisites: Chem 221 and Bio 130, note that those courses have other prerequisites as well)
- Cognitive Science 210: Introduction to Artificial Intelligence (prerequisite: Cog Sci 242, Math 186 or Math 210, plus some programming experience)
- Cognitive Science 242: Computational Approaches to Cognition (prerequisite: Cog Sci 101, Computer Science 211, Math 210, or Math 352)
- Cognitive Science 343: Probabilistic Models of Cognition (prerequisite: Cog Sci 242)
- Math 186: Network Models (no prerequisite)
- Math 370: Numerical Analysis (prerequisite: Math 212 or Math 214)
- Math 372: Operations Research (prerequisite: Math 210 and 214)
- Geo 355: Paleomagnetism (prerequisite: Geo 105)
- Physics 261: Simulations in Physics (prerequisites: Physics 110 or 115, and pre- or co-requisite of Physics 120 or 125)
- Physics 361: Computational Physics (prerequisite: Physics 340)
- Math 352: Computability and Complexity (prerequisite: Math 210) (if a student takes both Math 352 and CS 353, then one will count as a fundamental course for the CS Minor and the other will count as an elective course for the CS Minor)
- CS 353: Information Theory (prerequisite: Math 210) (if a student takes both Math 352 and CS 353, then one will count as a fundamental course for the CS Minor and the other will count as an elective course for the CS Minor)

**COMPUTER SCIENCE PLACEMENT: **Advanced placement is available to students with qualifying scores on the College Board Advanced Placement Examinations in Computer Science. Those scoring 4 or 5 on the A Examination may enroll in Computer Science 211 without the Computer Science 161 prerequisite.

**RELATED COURSES:** Additional mathematics courses relevant to computer science include Mathematics 150, 320, 322, 350, and 380.

## Courses

#### 131 - Fundamentals of Computer Science

#### 131L - Fundamentals of Computer Science Lab

Laboratory for Fundamentals of Computer Science

#### 151 - Programming in Basic

Introductory computer programming in BASIC, for students with no prior knowledge of programming. Examples and exercises require no mathematics beyond high school algebra.

2 units

#### 155 - Web Design and Programming

Principles of web design. Tools and techniques of elementary web programming, including HTML, XHTML, CSS, Javascript, HTTP, SSL, XML, SQL. Introduction to network architecture and programming.

2 units

#### 157 - Programming in C++

Programming in C++, including procedures, functions, control structures, files, structs, and elementary uses of pointers, objects, and classes. Does not assume any prior knowledge of C. Given in alternate years. Not offered every year Not open to students who have taken or are taking CS 161.

2 units

#### 161 - Programming in Java I

Introduction to computers and fundamentals of programming in Java. Classes, Objects and Methods; Variables and data types; Decisions and iteration; Arrays and Array Lists; Java API and important classes such as String, Math, Graphics; Simple algorithms and programming techniques. This course serves as either a self-contained introduction to Java Programming, or the first step in the sequence of courses leading to the Computer Science minor. *Not open to students who have taken or are taking CS 157. *

2 units

#### 165 - Mathematica

Introduction to using Mathematica for mathematical calculation and programming. *Prior programming experience in any language, OR any of the following Math courses: 109, 110, 114, 120, 128, 210, 212, OR 214.*

2 units

#### 167 - Matlab

Introduction to Matlab for scientific computation and programming, including scripts and functions, control structures, arrays and cell arrays, logical indexing, and vectorizing algorithms. Introduction to object-oriented programming. Prerequisite: One 100 level science or mathematics course, or permission of instructor. Given in alternate years.

2 units

#### 197 - Independent Study in Computer Science

Directed individual study. *Prerequisite: permission of instructor. *

2 units

#### 211 - Java II and Introduction to Computer Science

Object oriented programming; Inheritance, interfaces, polymormpishm; File I/O; Exception Handling; Searching, sorting, and recursive algorithms; Graphical User Interfaces; Applets; Selected Topics in computer science; Selected applications in mathematics and the sciences.*Weekly lab. Prerequisite: CS 161 or instructor permission.*

CORE REQUIREMENT MET: **MATH/SCI**

#### 311 - Data Structures and Algorithms

Comparative data structures and analysis of algorithms. Abstract data types. “Big O” notation; Run time and memory allocation considerations; Introduction to computational complexity. Selected topics and applications from Graph Theory, Linear Algebra, Numerical Analysis, Data Compression, *Weekly lab. Prerequisite: CS 211.*

CORE REQUIREMENT MET: **MATH/SCI**

#### 353 - Information Theory

An introduction to information theory, which will focus on (1) Data: transmission, storage, lossless data compression (such as ZIP, LZW), lossy data compression (found in JPG or MP3 formats), channel capacity; (2) Coding: optimal codes, error correcting codes, the several coding theorems of Claude Shannon; (3) Measures of information: entropy, relative entropy, relation between entropy and information content; (4) Application topics which vary from year to year which might include: signal processing, image processing, pattern recognition, cryptography and data security, quantum computing, data analysis and more. *Prerequisite: Mathematics 210; Recommended: Math 214 and Math 146 or 150*

CORE REQUIREMENT MET: **MATH/SCI**

#### 397 - Independent Study in Computer Science

Directed individual study of advanced topics. *Prerequisite: permission of instructor.*

2 or 4 units

## Faculty

### Regular Faculty

Eric Sundberg, chair

Associate Professor, Mathematics

A.B., Occidental College; Ph.D., Rutgers University

Full Time Non Tenure Track Assistant Professor

B.S. UC Davis; M.A., Ph.D., UC Santa Barbara

### Advisory Committee

Associate Dean for Research; Professor, Geology

A.B., Brown University; Ph.D., UC Santa Cruz

Assistant Professor, Chemistry

B.A. Occidental College; Ph.D. University of California, Irvine

Associate Professor, Cognitive Science; Advisory Committee, Neuroscience

B.A., Stanford University; Ph.D., UC Berkeley

Associate Professor, Physics

B.S., University of Illinois, Urbana; M.A., M.S., Cornell University; Ph.D., Caltech