The course covers the basics: representing games and strategies, the extensive form (which computer scientists call game trees), repeated and stochastic games, coalitional games, and Bayesian games (modeling things like auctions).
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers basic iterable data types, sorting, and searching algorithms.
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations.
Learn the concepts and methods of linear algebra, and how to use them to think about computational problems arising in computer science. Coursework includes building on the concepts to write small programs and run them on real data.
In this course you will learn several fundamental principles of algorithm design: divide-and-conquer methods, graph algorithms, practical data structures (heaps, hash tables, search trees), randomized algorithms, and more.
In this course you will learn several fundamental principles of advanced algorithm design: greedy algorithms and applications; dynamic programming and applications; NP-completeness and what it means for the algorithm designer; the design and analysis of heuristics; and more.
The course is an introduction to linear and discrete optimization - an important part of computational mathematics with a wide range of applications in many areas of everyday life.
This is an introduction to quantum computation, a cutting edge field that tries to exploit the exponential power of computers based on quantum mechanics. The course does not assume any prior background in quantum mechanics, and can be viewed as a very simple and conceptual introduction to that field.
In this course, you will learn how to formalize information and reason systematically to produce logical conclusions. We will also examine logic technology and its applications - in mathematics, science, engineering, business, law, and so forth.
This course was the first in a two-part series covering some of the algorithms underlying bioinformatics. It has now been split into three smaller courses.
This cross-disciplinary course deals with the undetermined, the unpredictable- or what appears to be such. Learn about the usefulness of randomness in communication and computation, the intrinsic randomness of quantum phenomena, the unpredictability of the weather, and the implications of the neural activity of the brain on our "free will".
Learn how to model social and economic networks and their impact on human behavior. How do networks form, why do they exhibit certain patterns, and how does their structure impact diffusion, learning, and other behaviors? We will bring together models and techniques from economics, sociology, math, physics, statistics and computer science to answer these questions.
Modéliser un problème, concevoir un algorithme de résolution et en proposer une implémentation correcte. Du problème à sa solution, ce cours combine approches pragmatique, pratique et théorique de l'informatique.