Description of Course Goals and Curriculum
ORF 307 introduces students to mathematical optimization. Optimization is a topic that is common in almost every walk of life: how can a charity maximize its donations, how can you fit the most clothes in a suitcase, or how can an army deliver supplies to its soldiers for the least cost. While in most situations these optimization problems are “solved” using intuition or common sense, ORF 307 focuses on a subset of optimization problems that can be expressed mathematically, and whose goal to optimize and constraints are linear. With this subset of the optimization universe, you can develop rigorous methods to solve these problems in a directed and efficient way. The course is equally focused on the theory and algorithms used in solving these linear problems, which is known as Linear Programming, as well as applications and computations based on the theory. Specifically, ORF 307 focuses on developing methods to optimize (i.e. maximize or minimize) linear functions with linear constraints.
The course follows a steady progression through the term that is common to many engineering and problem set based courses. Weekly problem sets are based on the most recent lectures and help reinforce ideas and concepts seen in lectures. There are two midterms in the course and a final project. The midterms are reasonably similar to the homework assignments. However, while the homeworks focus mostly on computation and application of the theory to working out problems, the midterm examinations will also test your knowledge of the theory and principles through more theoretical questions. In both the homework assignments and the final project, a programming language called AMPL is used to solve more complex optimization problems, similar to how optimization concepts would be applied in practical situations. The course does not explicitly test programming ability, but having some past experience with programming paradigms like syntax, conditionals, and variables will be useful for AMPL programming.
Learning From Classroom Instruction
Prof. Vanderbei gives two 80 minute lectures per week, with each lecture covering roughly one chapter in the textbook. The material presented in lecture mirrors the textbook very closely. The pace of lectures is quite reasonable. Lectures generally are structured with principles and theory at the beginning, and then applications and problem solving examples in the second half of lecture. Because of the strong focus on worked examples, lectures are useful in that they provide intuition and best practices that Prof. Vanderbei expects students to use on both homework assignments and examinations. In particular, because solving linear programs by hand can be quite tedious because of the amount of writing required at each step, Prof. Vanderbei has developed an online tool to teach how to solve linear programs. There are many homework problems that use the tool, so it is helpful to pay close attention when Prof. Vanderbei demonstrates in class how to use his online tool, as the textbook does not have much information about it.
Prof. Vanderbei uses his own textbook, “Linear Programming: Foundations and Extensions,” in the class. Each chapter of the textbook roughly corresponds to one lecture, and there is equal amount of theory as well as worked examples in the textbook. As a result, the textbook is a phenomenal resource. Much of the same intuition for solving problems that Prof. Vanderbei gives in lecture can also be found in the textbook.
Precepts for ORF 307 focus on applications and preparation for solving homework problems. Sometimes, it can be tricky to grasp the intuition for certain applications of optimization found in parts of the course (e.g. network flow problems). Thus, while Prof. Vanderbei’s lectures and textbook provide intuition, precept is a good resource for seeing a slightly different interpretation and intuition about the problem.
Learning For and From Assignments
Homework assignments in ORF 307 are due weekly, and cover the topics seen that week in lecture and precept. The majority of problems in the assignments are computational in nature: the textbook has worked out one problem, and you are asked to work out a problem with different numbers. While these are the straightforward, it is important to always be practicing these mechanics and learning the most time efficient ways to solve the problems, because they will also appear on examinations.
Additionally, there is a component of each homework that includes AMPL problems. As you complete each week’s AMPL component, it is important to make sure that you understand how the language functions and best practices for solving particular types of problems. This is because the final project focuses on a much larger scoped AMPL implementation, and if you are uncomfortable with the language at the end of the semester, then the final project will be difficult to implement.
ORF 307 has two assessments: a midterm before spring break, and a second midterm exam near term-end. The problems seen on the midterms are similar in nature to those seen on the homework. However, time and speed are often the most difficult part of the examinations. Both midterms are held during the 80-minute lecture slot, and they contain many problems. Thus, while most students understand the concepts and how to solve problems found on the homework, it is necessary to become very familiar with the steps used to solve the problems. There are often a couple of more theory based problems on the exams as well, so it is not sufficient to only understand the mechanics of how to solve linear programs.
In short, ORF 307 exams and their content are not meant to surprise or confuse students. But they are challenging and require a firm grasp of the material to complete the examination within the time constraint.