Performance Evaluation

Computer systems are complex structures of multiple hardware and software components, with each component affecting the performance of every computation. To measure and improve performance requires a full understanding of how a system's components interact and the unexpected ways that changes in one component may affect others. In this course we will develop methods for measuring computational performance that account for these complex interactions.

Parallel and Distributed

Modern computers are becoming increasingly parallel, with many cores or processors working concurrently to perform a single task. In order to utilize the full power of modern computers, it is essential to write programs that exploit parallelism. This course introduces students to the art and science of writing parallel programs. We consider two computing paradigms: shared memory and message passing.

Data Mining

This course is an introduction to data mining, the area of computer science that deals with the development of efficient and accurate algorithms for extracting information from data. Topics may include: mining data streams and time series, the MapReduce/Spark model and large scale data analysis, significant patterns extraction, web and social networks analysis, recommendation systems, sampling and hypothesis testing, and dimensionality reduction. We will use interactive data analysis notebooks and large-scale data processing systems to implement and test data mining algorithms.

Probability & Computing

Probability is everywhere in computer science. In networks and systems, it is a key tool that allows us to predict performance, to understand how delay changes with the system parameters, and more. In algorithms, randomization is used to design faster and simpler algorithms than their deterministic counterparts. In machine learning, probability is central to the underlying theory. This course provides an introduction to probability with a focus on computer science applications.

Data Structures

A fundamental problem in computer science is that of organizing data so that it can be used effectively. This course introduces basic data structures and their applications. Major themes are the importance of abstraction in program design and the separation of specification and implementation. Program correctness and algorithm complexity are also considered. Data structures for lists, stacks, queues, dictionaries, sets, and graphs are discussed. This course will provide advanced programming experience.

Data Structures

A fundamental problem in computer science is that of organizing data so that it can be used effectively. This course introduces basic data structures and their applications. Major themes are the importance of abstraction in program design and the separation of specification and implementation. Program correctness and algorithm complexity are also considered. Data structures for lists, stacks, queues, dictionaries, sets, and graphs are discussed. This course will provide advanced programming experience.

Subscribe to