Computer Science Courses
CS 130 Fundamentals of Web Programming
2 or 4 hours
CS 139, 239, 339, 439 Special Topics
CS 140 Data Modeling and Querying
The course focuses on constructing relational models of data, the relational algebra, querying relational databases using SQL. Students will become familiar with a popular open source data management system such as MySQL or Postgresql. No prerequisite.
CS 150 Introduction to Computer Science
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 160 Algorithms and Data Structures
A continuation of the ideas presented in CS 150 with particular emphasis on data structures, algorithms, and analysis. Implementation of abstract data types such as stacks, queues, trees, and graphs as well as important recursive and non-recursive algorithms. Analysis of sorting and searching algorithms. Prerequisite: CS 150.
CS 165 Software Development Tools
Students are introduced to tools for automation including shell programming, use of the Linux operating system including redirection of input and output, piping, file management, and system security. No prerequisite.
CS 185 First-Year Seminar
A variety of seminars for first-year students offered each January Term.
CS 252 Object-Oriented Programming with Java
Introduction to Java and development in an object-oriented programming language. Topics include project setup and organization, packages, classes, object creation, inheritance, interfaces, polymorphism and the use of build-in types and the Java class library. Considerable time is dedicated to learning incremental programming, debugging strategies, testing strategies, interface documentation, preconditions, postconditions, boundary case testing, unit testing of individual functions, test stubs and test harnesses. Prerequisites: CS 150, 165.
CS 253 Object-Oriented Programming with C++
Introduction to C and C++ and development in an object-oriented programming language. Topics include C++ organization of classes and function prototypes, header files, class declaration and implementation. Other topics include inheritance, polymorphism, the use of copy constructors, destructors, streams, and operator overloading. Considerable time is dedicated to learning incremental programming, debugging strategies, testing strategies, interface documentation, preconditions, postconditions, boundary case testing, unit testing of individual functions, test stubs and test harnesses. Prerequisites: CS 150, 165.
CS 260 Computational Models
In this course we examine mathematical structures that are relevant to understanding both theoretical as well as practical ideas in computer science. Topics include: logic, sets, graph theory, regular languages, deterministic and nondeterministic finite automata, regular grammars, regular expressions, induction and recursion, pushdown automata, turing machines, and computability. Prerequisites: CS 160, 165.
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 320, 330, 352, 353, 360, 370, 420, 430, 440, or CS 450. 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 320 Data Analysis and Visualization
A tool based approach to data manipulation, modeling, machine learning, and visualization using one or more packages such as matplotlib, pandas, d3.js, scikit-learn. Topics include data extraction, discovery, cleaning, machine learning algorithms, training procedures, prediction, and visualization. Specific application to real data sets in native formats from actual data sources. Prerequisites: CS 150, MATH 115 or equivalent.
CS 330 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. HCI is addressed. Prerequisites: CS 130, 140, 160.
CS 352 Embedded Android Programming
Study Android development with attention to HCI. Offered alternating years. Prerequisite: CS 253.
CS 353 Embedded iOS Programming
Study iOS development with attention to HCI. Taught alternating years. Prerequisite: CS 253.
CS 360 Advanced Algorithms and Data Structures
Development of advanced data structures, parallel algorithms, and advanced analysis of algorithms. Included topics are B-trees, Tries, B+ and B* trees, hashing algorithms and other structures for dealing with large data sets. Algorithms for data set manipulation including parallel algorithms for processing data sets. Prerequisite: CS 260.
CS 370 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. Prerequisites: CS 252 or 253, CS 260.
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 420 Machine Learning
This course looks at the implementation of many of the algorithms and techniques introduced in the CS 320 course, including simple neural networks, support vector machines, and clustering techniques. Taught alternating years. Prerequisites: CS 260, 320.
CS 430 Computer Networks
Concepts, principles, protocols, and applications of computer networks with a focus on the Internet, including 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; and issues in network privacy and security. Prerequisites: CS 252 or 253, CS 260.
CS 440 Database Management Systems
This course takes a bottom-up approach to understanding a complex software system. The course examines the implementation of a database management system. Topics include disk and file management, transaction processing, meta-data management, query planning and implementation, parsing queries, indexing, query optimization, and B-trees. Prerequisites: CS 140, CS 252 or 253, CS 260.
CS 450 Operating Systems and Architecture
A study of computer architecture and operating system structures and algorithms emphasizing multiple-user systems. Topics include binary number systems, digital logic circuits, machine architecture and assembly language, process management, CPU scheduling, concurrency and multi-tasking computing concepts including communication and synchronization issues, storage management, and protection and security. Prerequisites: CS 252 or 253, CS 260.
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
CS 493 Senior Honors Project
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)