CooCoo: Combinatorial and Convex Optimization
This course teaches the optimization tools that computer scientists need. On the practical side, these are:
- Learn to recognize an optimization problem when you see one.
- Learn to determine what type of optimization problem it is.
- Learn to decide which type of algorithm you need to solve it.
- Learn to use the software libraries solving optimization problems.
For really understanding what is going on, to handle more difficult optimization models, and if you're a Theorist, more Theory is necessary:
- Optimality conditions
- Lagrange duality (including LP duality)
- Algorithms based on Linear Programming and Semidefinite Programming; Sums of Squares.
The focus of the course is on practical examples.
What Students Say
What students taking the course in Spring '15 replied to the question, What would you say about the course to future students?
- ``The practical tasks were really interesting.''
- ``Interesting material, interactive teacher, and cool applications.''
- ``Fun one, go for it. ''
- ``The tasks given are fun in the sense of them having a real-world background or twist. ''
- All students attend: Tue 12:00-13:00 lecture, Mon 11:00-14:00 software project
- "Proofs Branch" students attend: Tue 13:00-14:00 lecture, Mon 10:00-11:00 practice
- "No-Proofs Branch" students attend: Tue 13:00-14:00 + Mon 10:00-11:00 labs (getting started with software libraries etc)
- Software projects are solved in groups, groups compete :)
- Software projects are started in the software project session, then continued/finished as homework.
- (No other homework.)
NEW! To better adapt to students' individual backgrounds and tastes, from this year on, the participants of the course can choose one of two branches:
- Proofs Branch
- No-Proofs Branch
The main difference between the branches is, obviously, that the Proofs Branch has proofs, whereas the No-Proofs Branch doesn't. The Proofs Branch also looks at some of the mathematics which is required to understand how the algorithms work, whereas the No-Proofs Branch is focused entirely on implementing the optimization models. On the other side, the No-Proofs branch gets to do some of the more technical stuff (learning the programming language Julia, working with the guts of the software libraries).
- Convex Optimization for Big Data. Cevher, Becker, Schmidt