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)

* Four fundamental courses

  • Math 210: Discrete Mathematics (prerequisite: Calculus 2)
  • Math 352: Computability and Complexity (prerequisite: Math 210)
  • CS 211: 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)

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 or 4 on the AB Examination may enroll in Computer Science 211 without the Computer Science 161 prerequisite. Students scoring 5 on the AB Examination do not have to take Computer Science 211.

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

Courses

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 open to students who have taken or are taking CS 161.
2 units

161 - Programming in Java

Programming in Java, including classes and objects, applets, simple graphics and animation. 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 - Introduction to Computer Science

Programming with linked data structures, including stacks, queues, trees and linked lists. Object-oriented programming. Programming methodology. Computer systems. Ethics in computing. 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. Uses of object-oriented classes. Structures and techniques for programming applications. Introduction to computational complexity. Weekly lab. Prerequisite: CS 211.
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

Ramin Naimi, chair

Professor, Mathematics

B.S., UCLA; Ph.D., Caltech

Jeffrey Miller

Adjunct Assistant Professor, Mathematics

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