Computer Science Courses

CS 125 Survey of Computer Science

4 hours

This course is intended as a broad introduction to computer science for students who wish to study a single course in computing. It also provides an overview to students who are considering further work in computer science, but do not choose to begin with CS 150. Topics included are the bit-level, with hardware and computer architecture; operating systems and computer networks; high-level languages and their compilers; databases; computer graphics; software engineering; scientific computing; artificial intelligence; algorithm analysis and complexity; social and legal issues. Students learn a high-level programming language as a major part of the course. Particular attention is paid to the Internet and the World Wide Web. Credit is not available for students who have already received credit for CS 150 or above. (Quant)

CS 139, 239, 339, 439 Special Topics

Credit arr.

CS 150 Introduction to Computer Science I

4 hours

An introduction to computer science emphasizing problem solving. Problems are selected from a variety of interesting areas such as graphics, image processing, cryptography, data analysis, astronomy, video games, and environmental simulation. Topics include algorithm design and object oriented programming. (Quant)

CS 151 Introduction to Computer Science II

4 hours

A continuation of the ideas presented in 150 with particular emphasis on data structures. Implementation of abstract data types such as stack, queue, tree, and graph as well as important algorithms. Analysis of sorting and searching algorithms. Recursion. Prerequisite: CS 150.

CS 185 First-year Seminar

4 hours

A variety of seminars for first-year students offered each January term.

CS 200 Software Design and Development

4 hours

This course builds upon the foundation of CS 150 and CS 151. It emphasizes modern programming practices and introduces students to complex ideas such as graphical user interfaces, model/view/controller architecture, threading, XML, Linux programming environments, programming tools, and program documentation. Prerequisite: CS 151. (W, S, R)

CS 220 Discrete Structures

4 hours

Propositional and predicate logic, methods of proof, induction, recursion and recurrence relations, sets and combinations, binary relations (including equivalence relations and partial orderings), functions, Boolean algebra and computer logic, and finite state machines. Prerequisites: MATH 152 or above; or CS 150, 151, or 200; or consent of instructor. (Same as MATH 220.)

CS 241 Computer Architecture

4 hours

An introduction to fundamental ideas of computer architecture and operating systems: digital logic, data representations, CPU, architecture, machine and assembly language, memory design, bus organization, input/output processing, interrupts. Prerequisite: CS 200.

CS 243 Database Management Systems

4 hours

Principles of database management systems and database design. This course takes a top-down, bottom-up approach to database management systems. In the first part of the course, key topics include data modeling, query planning, and query writing. In the second part of the course, we take a bottom-up look at the implementation of a database management system. Topics in the second part of the course include disk and file management, transaction and processing, meta-data management, query planning and implementation, parsing queries, indexing, and query optimization. Prerequisite: CS 200.

CS 251 Programming Languages

4 hours

A comparison of the structure, design, and applications of various programming languages. Topics include history, language definition, formal models of syntax and semantics, data types and structures, data abstraction, control structures, data flow, and runtime considerations. Languages will be discussed in a logical organization based upon the major paradigms including imperative, logic, functional, and object oriented. Examples from classic and contemporary languages. Prerequisite: CS 200.

CS 285 Directed Study

2, 4 hours

An opportunity to pursue individualized or experiential learning with a faculty member in the January term, at the sophomore level, either within or outside the major.

CS 341 Computer Networks

4 hours

Concepts, principles, protocols, and applications of computer networks with a focus on the Internet. Application layer protocols such as http, smtp. Socket programming and peer-to-peer networks. Transport-layer protocols such as TCP, UDP and congestion control. Network layer algorithms for routing and broadcast, and multicast. Link-level protocols for local area networks such as Ethernet and WiFi. Issues in network privacy and security. Prerequisite: CS 200.

CS 351 Advanced Data Structures and Algorithms

4 hours

Balanced tree structures, including B-trees. Hashing techniques, including expandable hash files. External sorting algorithms. Memory management algorithms. File design and file processing. Emphasis on algorithm analysis and design; algorithms drawn from a variety of applications. Prerequisites: CS 200, MATH/CS 220.

CS 361 Artificial Intelligence

4 hours

Artificial intelligence problems and solution techniques. Problem spaces, graph and tree traversals, heuristic search. Knowledge representation methodologies, knowledge engineering, and expert systems. Philosophical and social issues. Offered alternate years. Prerequisite: CS 200.

CS 363 Computer Graphics

4 hours

An introduction to computer graphics, with an emphasis on applications programming. A commonly used application programming interface (API) is used to study geometric transformations, parallel and perspective projections, hidden surface removal, light sources, shading, and reflection. Students will write programs using the API and a high level programming-language. Offered alternate years. Prerequisite: CS 200.

CS 365 Internet Programming

4 hours

In this course we examine three-tier Internet application architectures. Applications developed for the Internet typically have a database back end, an application server in the middle, and a web server on the front end. We will examine application programming frameworks from CGI to Servlets, and other modern application programming frameworks such as Ruby on Rails. Other topics include XML-based architectures such as RSS and web services, data transformation using XSL and XSLT. The course is largely project-driven; students will implement a complete web-based application. Prerequisite: CS 200. Offered alternate years.

CS 380 Internship

Credit arr.

On-the-job learning experience. The plan must be presented for departmental approval before the experience begins.

CS 385 Understanding Entrepreneurship in Silicon Valley

4 hours

Internet technology has fundamentally changed marketing, communications and the operations of every business in our society. Silicon Valley is home to the people, places and power sources that drive this machine. Students in this J-Term trip will gain both theoretical and tactical understanding of business strategies utilized in the Valley and also have the opportunity to speak with industry leaders and the companies they represent. We will visit companies and key people including entrepreneurs, venture capitalists, engineers and marketing professionals. Prerequisite: junior or senior standing. (Same as management 385).

CS 395 Independent Study

1, 2, or 4 hours

CS 441 Operating Systems

4 hours

A study of operating system structures and algorithms emphasizing multiple user systems, CPU scheduling in a multi-tasking environment, concurrency and parallel computing concepts including communication and synchronization issues, storage management, and protection and security. Prerequisite: CS 200.

CS 451 Formal Languages and Automata

4 hours

Theory and practice of automata, formal languages, and computability. Chomsky hierarchy. Introduction to computational complexity. Students write a compiler for a simple programming language. Prerequisites: CS 200, MATH/CS 220.

CS 462 Numerical Analysis

4 hours

Roots of equations and solutions of systems of linear equations, interpolation and approximation, differences and numerical integration, and numerical solutions of ordinary differential equations. Offered alternate years. Prerequisites: CS 150, MATH 240. (Same as MATH 462.)

CS 485 Seminar

Credit arr.

CS 490 Senior Project

2 hours

Senior computer science majors participate in a substantial, yearlong software development project; CS 490 in the fall, CS 491 in the spring. Students work from conceptualization and design through to implementation and delivery of a real software application. (W, S, R)

CS 491 Senior Project

2 hours

A continuation of CS 490. Prerequisite: CS 490. (W, S, R)

CS 493 Senior Honors Project

4 hours

A yearlong independent research project. Applications are completed on the "Honors Program" form available at the registrar's office, requiring the signatures of a faculty supervisor, the department head, the honors program director, and the registrar. Interdisciplinary projects require the signatures of two faculty supervisors. The project must be completed by the due date for senior projects. The completed project is evaluated by a review committee consisting of the faculty supervisor, another faculty member from the major department, and a faculty member from outside the major department. All projects must be presented publicly. Only projects awarded an "A-" or "A" qualify for "department honors" designation. The honors project fulfills the all-college senior project requirement. (W, S, R)