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]
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]
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.
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]
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.
A study of digital logic, computer components, internal and external memory, instruction sets, interrupts, micro- and macroprogramming. Lecture/laboratory.
The analysis, design, implementation, and maintenance strategies appropriate for large software projects. Lecture/laboratory. Permission of department head required.
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.
An introduction to the theoretical foundations of computer science and formal models of computation. Topics will include formal languages, finite automata, computability, and undecidability.
The implementation and use of computer networks. Topics include the ISO reference model, communication protocols, local-area and wide-area networks, and satellite communications.
This course examines the organization, design, and implementation of database management systems.
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.
An in-depth study of operating systems, covering such topics as concurrent processes, memory management, input/output and file systems, and resource allocation.
This course considers recent advances and/or subjects of current interest in computer science.
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.
An introduction to the study of intelligence as computation. Topics include problem-solving techniques, heuristic searches and knowledge representation.
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.
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.
In this course, students work in teams on the analysis, design, and implementation of a large-scale software project.
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]