20602 - COMPUTER SCIENCE (ALGORITHMS)
Course taught in English
Go to class group/s: 31
To feel comfortable in this course you should have a good knowledge of calculus, linear algebra, probability theory and programming.
The course will teach the students the fundamentals of designing and analysing algorithms. The students will learn to apply design paradigm when designing their own algorithms and will be able to estimate the computational complexity and the resource requirements of algorithms they encounter. They will be familiarized with important algorithms and be able to use them as building blocks in their own work. In particular, they will see combinatorial and graph algorithms, optimization algorithms, approximation algorithms and the fundamentals of NP-completeness.
Basic Notions and Theoretical Background
Introduction to the course
Class P and NP
Combinatorial and Graph Algorithms
Greedy Algorithms and Spanning trees
Shortest Path and Network Flows
Matchings and Generalizations
- Linear Programming and Integer Progamming
- Simplex algorithm
- Branch and Bound algorithm
- Stochastic Optimization
- Algorithms for large scale optimization
NP-Completeness and Approximation Algorithms
- NP-Completeness reduction
- Approximation algorithms
- Understand the basic notions of algorithmic complexity and various design paradigms
- Develop an intuition about which problems are amenable to which kind of programming paradigm and relate this to common computational tasks
- Analyze the structure of advanced algorithmic schemes
- Understand combinatorial structures
- Understand graph and optimization algorithms
- Understand implications of NP-completeness
- Design algorithms using common paradigms and predict their scaling in terms of memory and computational resources
- Describe algorithms (possibliy developed by the students themselves) in pseudocode
- Read literature on algorithm design
- Develop algorithms for large scale difficult optimization problems
- Show which problems cannot admit effiicient solutions
- Face-to-face lectures
|Continuous assessment||Partial exams||General exam|
There will be a written exam and two homework assignments. The homework assignments are not mandatory. The final grade will be calculated by taking for each student the best outcome out of the following two ones:
(a) Final written test contributes 70% of the final grade, and homework assignments contribute 30%.
(b) Final written test contributes 100% of the final grade.
The exam will test the students' ability to explain algorithms using the concepts learned in class and connect these concepts to specific problem instances. It will further test if the student can formulate optimization problems with linear/integer programming models, and apply the most suitable algorithm to solve them.
- T.H. CORMEN, C.E. LEISERSON, R.L. RIVEST, et al., Introduction to Algorithms, MIT, 3rd edition.
- R. SEDGEWICK., and K. WAYNE. Algorithms. Addison-wesley professional, 4th Edition.
- Bertsimas, Dimitris, and John N. Tsitsiklis. Introduction to linear optimization. Vol. 6. Belmont, MA: Athena Scientific, 1997.
- Garey, Michael R., and David S. Johnson. Computers and intractability. Vol. 174. San Francisco: freeman, 1979.
- W. Cook, W. Cunningham, W. Pulleyblank and A. Schrijver. Combinatorial Optimization. Wiley-Interscience, 1997.
- Lecture notes and slides by the instructor.