Computer Science Courses
CS 139, 239, 339, 439 Special Topics
CS 150 Introduction to Computer Science I
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
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
A variety of seminars for first-year students offered each January Term.
CS 200 Software Design and Development
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. (S, R)
CS 220 Discrete Structures
The basic topics of discrete mathematics and the theoretical foundation for computer science are covered in this course: 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. Prerequisite: MATH 152 or above; or CS 150, 151, or 200; or consent of instructor. (Same as MATH 220) (W)
CS 241 Computer Architecture
An introduction to fundamental ideas of computer architecture and operating systems: digital logic, data representations, CPU, architecture, machine and assembly language, memory design, and bus organization. Prerequisite: CS 200.
CS 243 Database Management Systems
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
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/295 Directed Study
2, 4 hours
An opportunity to pursue individualized or experiential learning with a faculty member, at the sophomore level or above, either within or outside the major. CS 285 can be taken only during January term, CS 295 can be taken during the fall, spring, or summer terms.
CS 296 Writing in the Major Lab
A companion lab to any of CS 241, CS 243, CS 251, CS 341, CS 361, CS 363, CS 365, CS 441, or CS 451. Students wishing to delve deeper into a subject in one of the companion courses may register for this lab with consent of the instructor. A student taking this lab will be required to write a technical paper in the style typical of a computer science journal or conference proceedings, on a topic agreed to by the companion course instructor. Feedback will be provided on writing style and content with the paper going through multiple revisions. Students receiving a C or better on their paper will fulfill the writing in the major requirement. Students may register for this as a seven week lab anytime prior to the middle of the semester in which the companion course is taught. Prerequisite: consent of instructor. (W)
CS 341 Computer Networks
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
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
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
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
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
On-the-job learning experience. The plan must be presented for departmental approval before the experience begins.
CS 385 Understanding Entrepreneurship in Silicon Valley
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 MGT 385)
CS 395 Independent Study
1, 2, or 4 hours
CS 441 Operating Systems
A study of operating system structures and algorithms emphasizing multiple-user systems, CPU scheduling in a multitasking 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
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
Numerical analysis is a blend of computational methods and mathematical analysis of their convergence, accuracy, and stability. Topics include roots of equations and solutions of systems of linear equations, function interpolation and approximation, numerical differentiation and integration, optimization, and numerical solutions of ordinary and partial differential equations. Offered alternate years. Prerequisites: CS 150, MATH 240. (Same as MATH 462)
CS 485 Seminar
CS 490 Senior Project
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. (S, R)
CS 491 Senior Project