The development of computing. The structure and operation of a computer system. Programming languages. Language processors. The structure of compilers and interpreters. Informal and formal definition of an algorithm. Algorithmically unsolvable problems. The complexity of problems and algorithms, lower and upper estimates NP-problems. Stages in solving tasks on the computer. The elementary components of a programming language. Designing programs. Programs based on iteration. Searching and sorting algorithms. The subroutines i.e. functions. Recursion. Programs based on recursion. Recursive procedures for searching and sorting. Dynamic structures, sorting and searching dynamic structures. The choice of algorithms in Combinatorics, geometry, graph theory, array processing, numeric mathematics. Styles of programming. Structured and modular programming. Use of APIs. Programming paradigms: procedural, functional, logic programming, object-oriented programming and events-driven programming.