Advanced Algorithms and Complexity
This is an advanced course for algorithms and complexity theorists. We will learn some basic concepts and how to use them for problem solving. We will also learn some advanced topics in complexity theory and algorithms. We will start by introducing the notions of algorithmic rigor and formalism, formal notions of recursion, complexity-theoretic proofs, and formal methods. We will learn two algorithms for solving a problem in the real sense: one that uses a single-variable input, and another that uses two variables. We will then learn about the special form of equality that holds for certain types of problems, namely, equality of interfaces. We will then learn how to use the knowledge of these properties to make strong proof techniques much more efficient, and how to make algorithmic efficiency the goal of your program. Finally, we will learn about algorithms that use more sophisticated input/output (variables and functions) and input/output (strings and applications) control structures, and these that you can use to write programs that make complicated things easy.
We hope that you will treat this as a higher-level programming course, since this course covers the whole programming language level, not just the programming languages. Each module will include readings, videos, and a program (the program example in this course is a simple program that computes a random number from the input, and prints the resulting output to stderr). The structure of each module will be broken up into individual sessions, which will include questions to probe your understanding, peer-reviewed assignments, and programming assignments. It will also be up to you to stick to your own personal programming habits, since we’ll be covering everyday programming problems with a focus on the more advanced material.
Special thanks to:
– Prof. Mikhail Roytberg, APT dept., MIPT, who was the initial reviewer of the project, the supervisor and mentor of half of the BigData team. He was the one, who helped to get this show on the road.
– Oleg Sukhoroslov (PhD, Senior Researcher at IITP RAS), who has been teaching MapReduce, Hadoop and friends since 2008. Now he is leading the infrastructure team.
– Oleg Ivchenko (PhD student APT dept., MIPT), Pavel Akhtyamov (MSc. student at APT dept., MIPT), Vladimir Kuznetsov (Assistant at P.G. Demidov Yaroslavl State University), Marina Sudarikova (Assistant at P.G. Demidov Yaroslavl State University), Anna Nalivayova (Assistant at P.G. Demidov Yaroslavl State University), Vladimir Kuznetsov (Assistant at P.G. Demidov Yaroslavl State University)
– Oleg Ivchenko (PhD student APT dept., MIPT), Dmitry