CS - Computer Science

CS 104 - Introduction to Game Programming

This course provides hands-on experience developing computer games. The course covers the basic techniques of game programming, including graphics, events, controls, animations, and intelligent behaviors. Students learn the concepts and skills of object oriented programming by designing and implementing a sequence of computer games. No prior knowledge in programming and computer games if required. A good understanding of algebra and geometry is strongly recommended. [NS, lecture/lab]

Corequisite
MATH 141 or MATH 161

CS 105 - Digital Media Computing

Digital media processing forms a basic block in technologies underlying today's successful media, social and publishing companies. This course covers various techniques for the creation and manipulation of multimedia, including pictures, sounds, texts, and movies. Students learn the concepts and skills of object-oriented programming by designing and implementing a series of digital effects. No prior background or experience in programming is required. [NS, lecture/lab]

Corequisite
MATH 141 or MATH 161

CS 150 - Data Structures and Algorithms

This course continues the development of object oriented approaches to the design and implementation of software systems. Students will learn to analyze problems, algorithms and develop object-oriented solutions to problems. Students will also learn to use multiple data structures and the accompanying algorithms to store, index and retrieve data.

Prerequisite
CS 104 or CS 105

CS 200 - Computers and Society

This course examines the computer's cultural context: the managerial, political, legal, ethical, psychological, and philosophical implications of computing. The laboratory focuses on the World Wide Web. [W, V]

CS 202 - Analysis of Algorithms

The design and analysis of algorithms and their complexity. This course studies techniques for measuring algorithm complexity, fundamental algorithms and data structures, intractable problems, and algorithm-design techniques.

Prerequisite
CS 150 and MATH 182

CS 203 - Computer Organization

A study of digital logic, computer components, internal and external memory, instruction sets, interrupts, micro- and macroprogramming. Lecture/laboratory.

Prerequisite
CS 150

CS 205 - Software Engineering

The analysis, design, implementation, and maintenance strategies appropriate for large software projects. Lecture/laboratory. Permission of department head required.

Prerequisite
CS 150

CS 301 - Principles of Programming Languages

An introduction to the theory of the design and implementation of contemporary programming languages. Topics include the study of programming language syntax and semantics, translators, and imperative, functional, logic and object-oriented language paradigms.

Prerequisite
CS 202, CS 203

CS 303 - Theory of Computation

An introduction to the theoretical foundations of computer science and formal models of computation. Topics will include formal languages, finite automata, computability, and undecidability.

Prerequisite
CS 202

CS 305 - Computer Networks

The implementation and use of computer networks. Topics include the ISO reference model, communication protocols, local-area and wide-area networks, and satellite communications.

Prerequisite
CS 203 or ECE 313
Corequisite
CS 205

CS 320 - Database Management Systems

This course examines the organization, design, and implementation of database management systems.

Prerequisite
CS 205
Corequisite
CS 202

CS 390-394 - Independent Study and Research

Independent study projects for juniors and seniors. Hours arranged. Permission of department head required. Applicability of Independent Study/Research as a 300-level CS major elective is only by approval of the department.

CS 406 - Operating Systems

An in-depth study of operating systems, covering such topics as concurrent processes, memory management, input/output and file systems, and resource allocation.

Prerequisite
CS 203 or ECE 313
Corequisite
CS 205

CS 410-415 - Special Topics

This course considers recent advances and/or subjects of current interest in computer science.

Prerequisite
Prerequisites vary according to the topic.

CS 416 - Knowledge and Strategy

This course is an introduction of interactive epistemology and game theory, a mathematical theory of conflict and cooperation between rational agents, with emphasis on knowledge and multi-agent systems. The course also provides an overview of other topics at the intersection of theoretical computer science and economics, such as agreement, common knowledge, mechanism design and auctions.

Prerequisite
CS 150 and MATH 186/PSYC 120/MATH 335; or CS 104/CS 105 and MATH 335

CS 420 - Artificial Intelligence

An introduction to the study of intelligence as computation. Topics include problem-solving techniques, heuristic searches and knowledge representation.

Prerequisite
CS 202, CS 205

CS 424 - Introduction to Machine Learning

This course is an introduction to the theoretical and practical aspects of the design and implementation of Machine Learning (ML) algorithms. It will provide students with an in-depth introduction to the areas of Supervised ML algorithms. The course will cover core ML algorithms for classification and regression, such as Linear and Logistic Regression, Neural Network and Deep Learning.

Prerequisite
CS 202
Corequisite
MATH 272 or MATH 300

CS 425 - Human-Computer Interaction

This course covers topics in Human-Computer Interaction (HCI), including identifying users’ needs, rapid prototyping, visual design, and the evaluation of existing systems. Students learn principles and methods that will help them recognize and create usable interfaces. Students apply these methods to evaluate real-world systems, measuring how they impact productivity, and more broadly experience.

Prerequisite
CS 205 or permission of the instructor

CS 470 - Senior Project

In this course, students work in teams on the analysis, design, and implementation of a large-scale software project.

Prerequisite
Senior standing and either CS 320 or CS 305

CS 495-496 - Senior Thesis

A two-semester, independent research project on a topic selected by the student and approved by the department. A student must undertake such a program for two semesters to graduate with honors. [One W credit only upon completion of both 495 and 496]