This Course at MIT pages are part of the OCW Educator initiative, which seeks to enhance the value of OCW for educators.
Course Overview
This page focuses on the course 6.046 Design and Analysis of Algorithms as taught by Professors Erik Demaine, Srini Devadas, and Nancy Lynch in Spring 2015.
This course is an intermediate class covering the design of computer algorithms and the analysis of sophisticated algorithms. Students learn how to analyze the asymptotic performance of algorithms, and gain familiarity with major algorithms and data structures. They also apply important algorithmic design paradigms and methods of analysis, in addition to synthesizing efficient algorithms in common engineering design situations. Course materials are designed to help students understand the difference between tractable and intractable problems and to become familiar with strategies to deal with intractability. Students attend lectures and recitation sessions, and complete 10 problem sets throughout the semester.
Curriculum Information
Prerequisites
- 6.006 Introduction to Algorithms
- Either 6.042J Mathematics for Computer Science or 18.310 Principles of Discrete Applied Mathematics
Requirements Satisfied
6.046 can be applied toward a Bachelor of Science in Computer Science and Engineering.
Offered
Every fall and spring semester
Course Outcomes
Course Goals for Students
Students who complete this course will have demonstrated the ability to do the following:
- Argue the correctness of algorithms using inductive proofs and loop invariants.
- Analyze worst-case running times of algorithms using asymptotic analysis. Compare the asymptotic behaviors of functions obtained by elementary compositions of polynomials, exponentials, and logarithmic functions. Describe the relative merits of worst-, average-, and best-case analysis.
- Analyze average-case running times of algorithms whose running time is probabilistic. Employ indicator random variables and linearity of expectation to perform the analyses. Recite analyses of algorithms that employ this method of analysis.
› Read More
Meet the Educator
Erik Demaine, Professor in the Department of Electrical Engineering & Computer Science
In the following video, Erik Domaine discusses his role in the course, his interest in algorithms, and how teaching 6.046 Design and Analysis of Algorithms helps him understand algorithms at a deeper level.
This is me living the dream, teaching the topic I love.
—Erik Demaine
In the following videos, Professor Erik Demaine describes various aspects of how he teaches 6.046 Design and Analysis of Algorithms.
- On Teaching Complex Content
- On the Challenge of Assessing Students’ Abilities to Apply Algorithms in New and Creative Ways
- Engaging Learners
- Co-Teaching the Course
Assessment
The students' grades were based on the following activities:
Instructor Insights on Assessment
Professor Erik Demaine shares his insights about assessment in his video, “On the Challenge of Assessing Students’ Abilities to Apply Algorithms in New and Creative Ways.”
Student Information
Breakdown by Year
Mostly juniors and seniors
Breakdown by Major
Mostly computer science majors
Typical Student Background
Students tends to be interested in exploring algorithms at a more sophisticated level than what is typically offered in introductory level courses.