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**

## Courses

#### 131 - Fundamentals of Computer Science

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

Laboratory for Fundamentals of Computer Science

#### 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