# Online courses directory (108)

Data structures play a central role in modern computer science. You interact with data structures even more often than with algorithms (think Google, your mail server, and even your network routers). In addition, data structures are essential building blocks in obtaining efficient algorithms. This course covers major results and current directions of research in data structure.

## Acknowledgments

Thanks to videographers Martin Demaine and Justin Zhang.

This course is a graduate introduction to natural language processing - the study of human language from a computational perspective. It covers syntactic, semantic and discourse processing models, emphasizing machine learning or corpus-based methods and algorithms. It also covers applications of these methods and models in syntactic parsing, information extraction, statistical machine translation, dialogue systems, and summarization. The subject qualifies as an Artificial Intelligence and Applications concentration subject.

Explores a variety of models and optimization techniques for the solution of airline schedule planning and operations problems. Schedule design, fleet assignment, aircraft maintenance routing, crew scheduling, passenger mix, and other topics are covered. Recent models and algorithms addressing issues of model integration, robustness, and operations recovery are introduced. Modeling and solution techniques designed specifically for large-scale problems, and state-of-the-art applications of these techniques to airline problems are detailed.

This course is organized around algorithmic issues that arise in machine learning. Modern machine learning systems are often built on top of algorithms that do not have provable guarantees, and it is the subject of debate when and why they work. In this class, we focus on designing algorithms whose performance we can rigorously analyze for fundamental machine learning problems.

Algorithms power the biggest web companies and the most promising startups. Interviews at tech companies start with questions that probe for good algorithm thinking.

In this computer science course, you will learn how to think about algorithms and create them using sorting techniques such as quick sort and merge sort, and searching algorithms, median finding, and order statistics.

The course progresses with Numerical, String, and Geometric algorithms like Polynomial Multiplication, Matrix Operations, GCD, Pattern Matching, Subsequences, Sweep, and Convex Hull. It concludes with graph algorithms like shortest path and spanning tree.

Topics covered:

- Sorting and Searching
- Numerical Algorithms
- String Algorithms
- Geometric Algorithms
- Graph Algorithms

This course is part of the Fundamentals of Computer Science XSeries Program:

Animation is a compelling and effective form of expression; it engages viewers and makes difficult concepts easier to grasp. Today's animation industry creates films, special effects, and games with stunning visual detail and quality. This graduate class will investigate the algorithms that make these animations possible: keyframing, inverse kinematics, physical simulation, optimization, optimal control, motion capture, and data-driven methods. Our study will also reveal the shortcomings of these sophisticated tools. The students will propose improvements and explore new methods for computer animation in semester-long research projects. The course should appeal to both students with general interest in computer graphics and students interested in new applications of machine learning, robotics, biomechanics, physics, applied mathematics and scientific computing.

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 is a comprehensive introduction to control system synthesis in which the digital computer plays a major role, reinforced with hands-on laboratory experience. The course covers elements of real-time computer architecture; input-output interfaces and data converters; analysis and synthesis of sampled-data control systems using classical and modern (state-space) methods; analysis of trade-offs in control algorithms for computation speed and quantization effects. Laboratory projects emphasize practical digital servo interfacing and implementation problems with timing, noise, and nonlinear devices.

This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. In addition, this course covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.

This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. Part I covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.

How have humans protected their secret messages through history? What has changed today?. What is Cryptography?. Probability Space. The Caesar Cipher. Caesar Cipher Exploration. Frequency Fingerprint Exploration . Polyalphabetic Cipher. Polyalphabetic Exploration. The One-Time Pad. Perfect Secrecy Exploration. Frequency Stability. Coin flip sequences. Frequency Stability Exploration. The Enigma Encryption Machine (case study). Perfect Secrecy. Pseudorandom Number Generators. Random Walk Exploration. Ciphers vs. Codes. Shift Cipher. Caesar cipher encryption. Caesar Cipher Decryption. Caesar cipher frequency analysis. Vigenere cipher encryption. XOR Bitwise Operation. XOR & the One-Time Pad. XOR Exploration. Bitwise Operators. What's Next?. The Fundamental Theorem of Arithmetic. Public Key Cryptography: what is it?. The Discrete Logarithm Problem. Diffie-Hellman Key Exchange. RSA Encryption: step 1. RSA Encryption: step 2. RSA Encryption: step 3. Time Complexity (Exploration). Euler's Totient Function. Euler Totient Exploration. RSA Encryption: step 4. What should we learn next?. What is Modular Arithmetic?. Modulo Operator. Congruence Modulo. Congruence Relation. Equivalence Relations. The Quotient Remainder Theorem. Modular Addition & Subtraction. Modular Addition. Modular Multiplication. Modular Multiplication. Modular Exponentiation. Fast Modular Exponentiation. Fast Modular Exponentiation. Modular Inverses. Introduction. Primality Test Challenge. Trial Division. Level 1: Primality Test. Running Time. Level 2: measuring running time. Computer Memory (space). Binary Memory Exploration. Algorithmic Efficiency. Level 3: Challenge. Sieve of Eratosthenes. Level 4: Sieve of Eratosthenes. Primality Test with Sieve. Level 5: Trial division using sieve. The Prime Number Theorem. Prime density spiral. Prime Gaps. Time Space Tradeoff. Summary (what's next?). Randomized Algorithms (intro). Conditional Probability (Bayes Theorem) Visualized. Guess the coin. Random Primality Test (warm up). Level 9: Trial Divison vs Random Division. Fermat's Little Theorem. Fermat Primality Test. Level 10: Fermat Primality Test. What's Next?. What is Cryptography?. Probability Space. The Caesar Cipher. Caesar Cipher Exploration. Frequency Fingerprint Exploration . Polyalphabetic Cipher. Polyalphabetic Exploration. The One-Time Pad. Perfect Secrecy Exploration. Frequency Stability. Coin flip sequences. Frequency Stability Exploration. The Enigma Encryption Machine (case study). Perfect Secrecy. Pseudorandom Number Generators. Random Walk Exploration. Ciphers vs. Codes. Shift Cipher. Caesar cipher encryption. Caesar Cipher Decryption. Caesar cipher frequency analysis. Vigenere cipher encryption. XOR Bitwise Operation. XOR & the One-Time Pad. XOR Exploration. Bitwise Operators. What's Next?. The Fundamental Theorem of Arithmetic. Public Key Cryptography: what is it?. The Discrete Logarithm Problem. Diffie-Hellman Key Exchange. RSA Encryption: step 1. RSA Encryption: step 2. RSA Encryption: step 3. Time Complexity (Exploration). Euler's Totient Function. Euler Totient Exploration. RSA Encryption: step 4. What should we learn next?. What is Modular Arithmetic?. Modulo Operator. Congruence Modulo. Congruence Relation. Equivalence Relations. The Quotient Remainder Theorem. Modular Addition & Subtraction. Modular Addition. Modular Multiplication. Modular Multiplication. Modular Exponentiation. Fast Modular Exponentiation. Fast Modular Exponentiation. Modular Inverses. Introduction. Primality Test Challenge. Trial Division. Level 1: Primality Test. Running Time. Level 2: measuring running time. Computer Memory (space). Binary Memory Exploration. Algorithmic Efficiency. Level 3: Challenge. Sieve of Eratosthenes. Level 4: Sieve of Eratosthenes. Primality Test with Sieve. Level 5: Trial division using sieve. The Prime Number Theorem. Prime density spiral. Prime Gaps. Time Space Tradeoff. Summary (what's next?). Randomized Algorithms (intro). Conditional Probability (Bayes Theorem) Visualized. Guess the coin. Random Primality Test (warm up). Level 9: Trial Divison vs Random Division. Fermat's Little Theorem. Fermat Primality Test. Level 10: Fermat Primality Test. What's Next?.

This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.

6.345 introduces students to the rapidly developing field of automatic speech recognition. Its content is divided into three parts. Part I deals with background material in the acoustic theory of speech production, acoustic-phonetics, and signal representation. Part II describes algorithmic aspects of speech recognition systems including pattern classification, search algorithms, stochastic modelling, and language modelling techniques. Part III compares and contrasts the various approaches to speech recognition, and describes advanced techniques used for acoustic-phonetic modelling, robust speech recognition, speaker adaptation, processing paralinguistic information, speech understanding, and multimodal processing.