### Educational courses

**Author: Prof. Vitaly Semenov. Type - Spring Semi-Annual Course.**

The course objective is to acquaint students with fundamental knowledge in the field of visualization and related domains of computer graphics and computational geometry. Particular focus is attended on basic principles of visualization, problem statements arisen in different applied domains as well as important computational methods and algorithms applied for their solution.

**Author: Associate professor Andrey Belevantsev. Type - Autumn semester course for first-year students.**

The course serves as a introductory programming course and is taught for the 1st year students in Moscow State University on the faculty of computational mathematics and cybernetics (CMC). The course has three parts, which are basic introduction to the theory of algorithms, the C programming language, and basic algorithms and data structures.

**Author: Varnovsky Nickolay. Type - Fall Annual Course.**

The main purpose of the course is to provide mathematical background for information security. The emphasis is on provable security as opposed to commonly accepted methodology of explaining smart cryptographic techniques. No initial knowledge in cryptography is required. A prerequisite for the course comprises background knowledge in computation models and computational complexity.

**Foundations of numerical analysis.**

**Author: Shokurov Alexander. Type - Spring Semi-Annual Course.**

The aim of the course is to acquaint students with the mathematical methods of approximation of functions. After studying this course, the students will better understand the capabilities and limitations when programming functions on computers. It assumes knowledge of the foundations of functional analysis.

**Latticies, algorithms, number theory and modern cryptography.**

**Authors: Kuzyurin Nikolay, Shokurov Alexander. Type - Spring Semi-Annual Course.**

Course objective is to acquaint students with the most important modern tools to build cryptosystems using the methods of number theory and algebraic geometry. Special attention is given to the methods that use lattice in Euclidean space. The basis for this approach are the assumptions on the complexity of some problems on lattices.

**Computer architecture and assembly language.**

**Authors: Academician RAS, prof. Ivannikov V.P., associate professor Padaryan V.A. Type - Spring semester course for first-year students.**

The course covers the basic principles of modern computers, quantitative and qualitative analysis of computer components characteristics, and gives analysis of the impact of these characteristics on various types of software. The Intel IA-32 architecture has been chosen as basic for the study. The main approach toward presenting computer architecture features is example-based: through study of C language implementation in modern optimizing compilers. Besides, the course includes practical homework: solving text problems by implementing algorithms in assembly language.

**Author: Prof. Sergey Kuznetsov. Type - Autumn term course for 3rd year undergraduate students.**

**Foundations of Text Processing**

**Author: Denis Turdakov. Type - Autumn term course.**

This course is devoted to different problems of text processing and to approaches for their solution.

**Construction of the Operating System Kernel**

**Author: Khoroshilov Alexey. Type - Fall Semi-Annual Course.**

The aim of the course is to practice the basic principles of designing the operating system kernel and related concepts such as a scheduler, virtual memory, interrupts, synchronization, system calls, file systems and others.

**Special Seminar “The Correctness of the Programs”**

**Authors: Dr. Alexander K. Petrenko, Ph.D. Alexey Khoroshilov, Ph.D. Victor Kulyamin . Type - Fall Semi-Annual Course.**

Special Seminar “The correctness of the Programs” consist of three courses: «Introduction to the logical design of the hardware», «An introduction to formal specifications», «Software technology and free software».

**Author: PhD. Nikolay Pakulin . Type - Spring Semi-Annual Course.**

The course presents an introduction to methods of software verification. The aim of the course is to introduce the software verification, present wide diversity of existing methods and approaches, consider advantages and restrictions of the verification methods.

**Open Systems and Organization of the Session Security**

**Author: PhD. Nikolay Pakulin . Type - Fall Semi-Annual Course.**

The course presents an introduction to the problem of data transfer protection in open networks. The aim of the course is to show the diversity of the aspects of the information security problem, to give an impression of the methods of the designing of the complex systems of the protection system of the data transmissions.

**Author: Kuliamin Victor. Type - Spring Semi-Annual Course.**

The course introduces students to the basic problems of quality checking of complex software systems and modern problem-solving approaches which based on testing. Classic techniques of constructing tests based on the situation partition into equivalence classes, finite state machine or combinatorial scheme and integrated approaches which are more suitable to real complex systems are considered in these course.

**Software Development Technologies. Component-based Approach.**

**Author: Kuliamin Victor. Type - Fall Semi-Annual Course.**

The course introduces students to the technological problems of development of large-scale software systems and how to solve these problems. In addition, course describes the modern methods of organizing the development of such systems which based on component technologies. Web-application with J2EE and .NET technologies are considered as example of such development.

**Formal Specification and Verification of Programs**

**Authors: Kornykhin Evgeni , Petrenko Alexander , Khoroshilov Alexey. Type - Fall Semi-Annual Course.**

The course focuses on the problems of development of mission-critical program system. Special stress is being placed on the formalization of the functional properties of the systems and analytical verification methods. Students will get acquainted with modern approaches and tools for verification of programs in object-oriented and system programming languages.