16.410 | Fall 2010 | Undergraduate

Principles of Autonomy and Decision Making

Syllabus

Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

Recitations: 1 session / week, 1 hour / session

Course Description

This course provides a survey of reasoning, learning, and optimal decision making methodologies for creating highly autonomous systems and decision support aids. It focuses on principles, algorithms, and their application, taken from the disciplines of artificial intelligence and operations research.

Reasoning paradigms include uninformed, informed and game search, logic and deduction, constraint modeling, model-based diagnosis, planning and execution, and reasoning under uncertainty. Machine learning paradigms include expectation maximization and reinforcement learning. Optimal decision making paradigms include linear and integer programming, dynamic programming and Markov decision processes.

The graduate subject 16.413 meets with undergraduate subject 16.410, but requires more advanced programming and written assignments, including an advanced tutorial in Java.

Prerequisites

6.01 or 1.00.

Additional Information

Learning Objectives and Assessment

Course Policies

Readings

[AIMA] = Russell, Stuart, and Peter Norvig. Artificial Intelligence: A Modern Approach. 3rd ed. Prentice Hall, 2009. ISBN: 9780136042594.

[IOR] = Hillier, Frederick, and Gerald Lieberman. Introduction to Operations Research. 9th ed. McGraw-Hill, 2009. ISBN: 9780077298340.

[PA] = LaValle, Steven. Planning Algorithms. Cambridge University Press, 2006. ISBN: 9780521862059.

[JINS] = Flanagan, David. Java in a Nutshell. 5th ed. O’Reilly, 2005. ISBN: 9780596007737.

Grades

Your grade in 16.410 or 16.413 will be determined by the following approximate weighting.

16.410

ACTIVITIES PERCENTAGES
Mid-term quiz 25%
Final exam 40%
Problem sets 35%

16.413

ACTIVITIES PERCENTAGES
Mid-term quiz 20%
Final exam 35%
Project 15%
Problem sets 30%

However, you must do all problem sets to pass the course; a passing grade based on the other parts may be converted to a failing grade if you do not turn in all the problem sets, where turning in a problem set means including a serious attempt to complete each problem set.

  1. Homework: You are expected to do all the homework. While performance on exams is an indication of basic competence, performance on homework is your major opportunity to demonstrate outstanding achievement in 16.410-13. Mediocre homework performance will result in a lower grade, even if performance on exams is good. It is virtually impossible to get an A in 16.410-13 unless all homework assignments have been turned in. Missing more than a couple of the homework assignments may result in a failing grade for the semester, regardless of performance on exams, and in class participation. This applies to the weekly problem sets and to the final project.
  2. Participation in class: You are expected to participate actively in lecture discussions, and to read assigned material before class.

The following policies are similar to other programming intensive courses. The following policies are adapted from those posted for 6.001.

Assignments

The programming assignments have been planned on the assumption that you will do the required reading and other preparation before you start programming. It is generally much more efficient to plan the design of a program before implementing, testing, debugging, and running that program, rather than trying to do the planning online. Students who have taken similar subjects in previous terms report that failing to prepare ahead for programming assignments generally ensures that the assignments will take much longer than necessary.

Collaborative Work

Most people learn more effectively when they study in small groups and cooperate in various other ways on homework. This can be particularly true in programming assignments, where working with a partner often helps to avoid careless errors. We are very much in favor of this kind of cooperation, so long as all participants actively involve themselves in all aspects of the work - do not just split up the assignment and have each team member do only a fraction.

We are structuring the work this term into two types: problem sets and, for 16.413 students, the final project. Please abide by the following guidelines with regard to these different types of work. Problem sets are designed to reinforce key concepts. These should be completed by each student individually, though seeking tutoring help from the staff is perfectly appropriate. The 16.413 project is designed to be a larger scale activity, in which group activity is often a key component. For these projects, we encourage you to work with one other person. When you turn in your project, you must identify with whom you worked. We expect, however, that you are involved in all aspects of the project. We will provide further guidelines regarding the 16.413 project later in the semester.

When you hand in any material with your name on it, we assume that you are certifying that this is your work and that you were involved in all aspects of it. You are expected to write your own solutions and your own code. Do not copy any material from another class member.

Here is an example scenario of how a good collaboration might work:

Both (all) of you sit down with pencil and paper and together plan how you’re going to solve things. You go together to a cluster and sit at adjacent machines. When one of you has a problem, the others look over your shoulder. You check after each problem to make sure that the others are all caught up. But in each case you write your own solution, seeking help from the others when you have difficulties. On the write-up, each of you lists the names of all of your collaborators.

Not listing the name of a collaborator will be deemed cheating. Similarly, remember that copying another person’s work and representing it as one’s own work is a serious academic offense and will be treated as such.

To summarize, we strongly encourage you to work as a group. It’s a very effective way of catching conceptual and other errors, and of refining one’s thinking and understanding.

Workload

16.410 and 16.413 are time-consuming, but the assignments are not intended to require excessive amounts of time, and we will carefully track the level of effort required by the class throughout the semester. Note that the focus of this course is on the algorithms underlying autonomous systems. To ground your understanding, it is important that you implement some of these algorithms; nevertheless, as this is not a programming course, it is expected that you come into this course as a competent programmer.

Of course, the level of programming proficiency in the course will vary widely, and many with less proficiency have done well in the course in the past. However, if you do not have a strong proficiency in programming, you should expect to devote significant additional time, particularly at the beginning of the course, developing your proficiency. The time needed to acquire the proficiency is outside the hours the course allocates for assignments.

Spending enormous amounts of time on 16.410-13 is often the result of simply not asking for help when you need it. If you find yourself spending more time on 16.410-13 than you think you should, please ask the staff for help. It is also possible to spend an excessive amount of time programming. This is often the result of failing to prepare properly, such as not developing sufficient competence with the programming language, development and debugging tools, not reading the assigned text and exercises, understanding the distributed code, and developing plans to solve the questions.

Learning Objectives

Be able to: 1) model decision making problems using major modeling formalisms of artificial intelligence and operations research, including propositional logic, constraints, linear programs and Markov processes, 2) evaluate the computational performance of search, satisfaction, optimization and learning algorithms. 3) apply search, satisfaction, optimization and learning algorithms to real world problems.

Measurable Outcomes (Assessment Method)

Upon successful completion of 16.410, students will be able to:

  1. Describe at an intuitive level the process of artificial intelligence and operations research: a real-time cycle of problem understanding, formulation, solution and implementation (homework).
  2. Formulate simple reasoning, learning and optimization problems, in terms of the representations and methods presented (homework, quiz).
  3. Manipulate the basic mathematical structures underlying these methods, such as system state, search trees, plan spaces, model theory, propositional logic, constraint systems, Markov decision processes, decision trees, linear programs and integer programs (homework, quiz).
  4. Demonstrate the hand execution of basic reasoning and optimization algorithms on simple problems (homework, quiz).
  5. Formulate more complex, but still relatively simple problems, and apply implementations of selected algorithms to solve these problems (homework, lab).
  6. Evaluate analytically the limitations of these algorithms, and assess tradeoffs between these algorithms (homework, quiz).

Concepts

Search and Reasoning: uninformed and informed search, game theory, stochastic search, constraint satisfaction, propositional inference, activity and motion planning and model-based diagnosis, Markov decision processes and hidden Markov models (HMM).

Optimization: Linear programming, integer programming, and finite domain constraint optimization,

Learning: reinforcement learning, conflict learning and HMM learning.

Course Info

Learning Resource Types
Problem Sets
Exams
Lecture Notes
Design Assignments
Programming Assignments with Examples