Software Platforms of Infocommunications

Major: Telecommunications and Radio Engineering
Code of subject: 6.172.00.M.072
Credits: 6.00
Department: Telecommunication
Lecturer: DSc. in engineering, Associate Professor Demydov I.V.
Semester: 7 семестр
Mode of study: денна
Learning outcomes: As a result of studying a discipline, a specialist should know: • features of object-oriented and functional programming of telecommunication system platforms (infocommunication systems); • basic approaches to the creation of distributed service architecture; • Principles of Load Balancing - parallelization of the load being processed by the infocommunication service architecture; • The basics of developing, debugging and maintaining effective information communication software solutions based on the use of parallel programming languages ??in complex distributed infocommunication system platforms; • languages ??and programming algorithms; operating systems and network technologies; computer methods for collecting, processing, analyzing, transmitting and storing information; methods and means of distributed systems and parallel computing; • methods and means of information technologies; technologies and tools for the development of information systems in various sectors of the economy; • mathematical methods, computer models, modeling languages ??and software tools for practical tasks in this specialty; • Information technologies for solving tasks of classification, development, deployment and operation of various information systems and their components. A trained specialist should be able to: • choose the most effective software platform for implementing the necessary information communication solution based on efficiency / reliability criteria; • apply the parallel programming skills of distributed infocommunication platforms (Erlang); • create distributed client-server solutions for infocommunication purposes; • Integrate heterogeneous technologies of system programming in a single infocommunication software platform using DBMS; • formulate new tasks and ideas in the field of intellectual information technologies, choose the appropriate directions and appropriate methods for their solution; • to apply methods and means of modern information technologies for design, development and deployment of application information systems in various fields; • apply methods and means of modern information technology for modeling, designing and developing communication systems, Web-oriented systems, smart systems, sensor systems, embedded systems, micro / nano-systems and their analogues; • deploy, administer and accompany information systems based on network technologies and the ability to develop technical documentation; • Develop functional environments using open systems, application programming interfaces, applications and applications with properties: expandability, scalability, interoperability, integrity and reliability.
Required prior and related subjects: Previous academic disciplines: Informatics (in professional direction); Object-Oriented Programming. Associate and the following academic disciplines: Operating Systems.
Summary of the subject: System programming in the context of the programming of infocommunication systems and platforms is a type of programming that consists in developing programs that interact with system software (operating system, network platform, and especially with a software platform deployed on them), or hardware network service systems. In general, this course is devoted to the technological problems of developing large-scale software systems and methods for solving these problems. It describes modern ways of organizing the development of such systems on the basis of component technologies, for example, Web applications using Java and .NET technologies, as well as introducing them into these technologies. Students will get an idea of ??how to develop sophisticated software, use of modern approaches to industrial development of programs, and how to build quality and flexible programs under strict conditions for design projects. Readers will also get acquainted with the elements of technologies for creating distributed applications on the J2EE and .NET software platforms. The main difference between the system programming of distributed infrared platforms, in comparison with application programming, is that application software is intended for end users (for example, word processors, graphic editors), while the result of system programming are programs that serve the hardware of scalable network platforms or operating system (for example, client-server interfaces). It should be noted that "ordinary" applications can use in their work code snippets, typical for system programs, and vice versa; so there is no clear boundary between application and system programming. Modern distributed infocommunication networks are a set of independent software-based computers based on some software platforms that are presented to their users by a single unified system. There are two points in this definition. The first refers to equipment: all machines are autonomous, but combined by some through-the-network - a network (infocommunication) platform. The second concerns the software: users think that they are dealing with a single system (a service network system based on a certain software platform or a set of them). Each particular paradigm of system programming characterizes the presence of its programming methods and the relationship with the model lifecycle of software provisioning. Common for different paradigms and programming technology are the general principles of designing a software product - software engineering. You can choose one or another programming paradigm from the point of view of ease of use for tasks and the development of a specific software product in the field of distributed information communication systems and networks. The modern functional paradigm (lack of assignment) allows the typical representative of the languages ??of system programming in infocommunications - Erlang to avoid such traditional for imperative languages ??problems of distributed applications, such as the need for synchronization, the danger of the occurrence of deadlocks and races, the complexity of solving asynchronous messaging tasks, parallel computing, creation convenient low-level constructions (such as IP packet decoding), etc. One of the strengths of the Erlang language is the combination of multithreading and distributed programming. It is possible to send messages to the process on a local or remote virtual machine using the same semantics ("location independence" or "location transparency"). In addition, the creation of processes and their linking / monitoring works flawlessly among all nodes. This avoids the difficulty of constructing a distributed and fail-safe application. Erlang, as the basis of the laboratory practice of this course, is chosen not by chance: unlike many academic languages, it is a vibrant industrial language, applications that work in the most complex commercial systems. Although the scope of Erlang's application is limited mainly to infocommunication products and real-time systems, the official website of the project is about it as a universal programming language suitable for solving various applications.
Assessment methods and criteria: During the study, students conduct a laboratory workshop containing dozens of various practical-oriented tasks, the solution of which requires substantial theoretical training in accordance with this program. Evaluation of the results of laboratory work is provided as the main form of ongoing control. Blitz testing at lecture and laboratory classes is also foreseen. Evaluating the results of an individual research task by means of their protection allows students to be motivated in order to improve their quality and receive additional marks. Semester examinations are conducted in written form on the basis of the developed set of exam papers, which is approved at the corresponding meeting of the department.
Recommended books: 1. Лабораторний практикум. Методичні вказівки до лабораторних робіт № 1-12 з курсу “ Системне програмування інфокомунікацій ” для студентів спеціальності 8.05090301 “Інформаційні мережі зв’язку”. - Львів, 2015. - 85 с. 2. Томпсон С., Чезарини Ф. Программирование в Erlang / Пер. с англ. Холомьёва А. О. - М.: ДМК Пресс, 2012. - 488 с.: ил. (Серия "Функциональное программирование"). 3. Armstrong J. Programming Erlang. Software for a Concurrent World. Dallas, TX: The Pragmatic Bookshelf, 2007. – 519 pp.: illustrated. 4. Фримен А. Pro .NET 4 Parallel Programming in C#. М.: Apress, 2010. – 328 c.: ил. 5. Neward T. Server-Based Java Programming. Grinwich: Manning, 2013. – 556 pp. 6. В.В. Кулямин. Технологии программирования. Компонентный подход. М.: Бином, 2014. – 464 с. 7. И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002. 8. Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. Второе издание. М.: Бином, СПб.: Невский диалект, 2000. 9. У. Ройс. Управление проектами по созданию программного обеспечения. М.: Лори, 2002. 10. А. Якобсон, Г. Буч, Дж. Рамбо. Унифицированный процесс разработки программного обеспечения. СПб.: Питер, 2002. 11. К. Бек. Экстремальное программирование. СПб.: Питер, 2002.