Review of key concepts in Software Engineering. Analysis of processes and problems in the software development industry. Open source and closed source software. Agile development methods, the Scrum technique, the DevOps methodology, software version management. Architectural techniques on the basis of the CAP theorem. Design and implementation of graphical user interfaces. Modern techniques and tools for complex software projects development. Project management, cost calculation, quality assurance, formation management, development environments, standards. Modern models of programming and prototypes development. Software development for specialized applications, for high availability systems, for smart mobile devices, etc..
The main goal of the course is to acquaint students with the theoretical and empirical dimensions of Software Engineering. They will be presented with the basic principles and concepts and the relevant software development methods and tools, and they will be shown ways of applying these towards solving practical problems in Software Engineering. Important issues will also be addressed relating to the development of large software engineering projects, such as project management, cost estimation and participation in open source software projects.
Final exams, projects.