Data Structures

This course builds on the basic programming concepts learned in Computer Science 151, shifting the focus to the organization of data in order to improve efficiency and simplicity of programs. Topics include the study of abstract data types and data structures (such as linked lists, stacks, queues, and binary trees). This course is programming-intensive and introduces the Java programming language.

Human-Robot Interaction

Human-Robot Interaction is an interdisciplinary field that examines a broad set of questions about robots that are designed to interact with humans (e.g., educational, assistive, and service robots). How does the behavior and appearance of a robot change how humans perceive and interact with it? How can we design and program robots that are natural, trustworthy, and effective? In this course, students learn the algorithmic foundations of interactive robots, gain experience building and evaluating interactive robots, and read and present scholarly research papers.

Algorithms

How does Google Maps find the best route between two locations? How do computers help to decode the human genome? At the heart of these and other complex computer applications are nontrivial algorithms. While algorithms must be specialized to an application, there are some standard ways of approaching algorithmic problems that tend to be useful in many applications. Among other topics, we explore graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, and network flow.
Subscribe to