Postgraduate Studies in Software Engineering and Business Tools Study program (from the academic year 2017/2018)

The study program covers the following topics:

  • Windows and Linux operating systems (15 hours of lecture + 15 hours of seminar),
  • Linux Administration or Windows Administration (15 hours of lecture + 15 hours of seminar),
  • Software engineering (15 hours of lecture + 15 hours of seminar),
  • Relational databases (15 hours of lecture + 30 hours of seminar),
  • Object-oriented programming in Java (30 hours of lecture + 30 hours of seminar),
  • Modern IT majors:
    1. Computability of algorithms (6 hours of lecture),
    2. The complexity of algorithms (6 hours of lecture),
    3. Cryptography (6 hours of lecture),
    4. Distributed systems (6 hours of lecture),
    5. Artificial intelligence systems (6 hours of lecture),
  • Selected topics of computer science (one subject to choose, 30 hours of seminar):
    1. Web application development,
    2. Computer Networks,
    3. SQL Server,
    4. Java - advanced programming,
    5. Distributed systems,
  • Software design (10 lecture hours + 10 seminar hours).

Courses description

Windows and Linux operating systems

Windows and Linux installation and update methods, basic administration tools, workgroup user management, hardware profiles, network settings configuration, network printer configuration, NTFS file system and disk management, resource rights management, system performance check, tools and methods of ensuring reliability, system registry, WSL (Windows Subsystem for Linux).

Windows administration

Basic concepts of computer networks, Active Directory, Domain administration, distributed file system, DFS tree creation, Terminal Services, virtual private networks (VPN), IIS server administration, advanced administration of Windows 10 desktop systems and Windows Server versions 2008, Windows Server 2016 using the PowerShell scripting language, the use of WSL in the daily work of the Windows administrator.

Linux administration

Selection of the initial method of disk partitioning, disk management, installation of additional software and patches, individual stages of system startup, controlling this process, user authentication, configuring the sources from which information about user accounts is obtained, configuring network interfaces for Internet connectivity, servers of basic network services (DNS, mail, NFS, NIS), tools supporting system tracking, WSL (Windows Subsystem for Linux).

Software engineering

Software engineering tasks, scale problems in software production. Organizational issues - organization of the project and communication. Software development phases: specificity, analysis, architecture design, detailed design, implementation, testing, implementation. Introduction to object modeling - basic techniques of structure and behavior modeling. Patterns in architecture and detailed design. Basic methods of implementing object models. Version control tools and collaboration tools. Fundamentals of systems testing. Introduction to project management.

Relational databases

Database system architectures, relational data model, basics of relational database design, entity relationship model, relationship normalization, SQL language, variants of the SQL language in popular server systems (Oracle, Microsoft SQL Server), transactional processing, transaction isolation levels, physical structure of the database data, indexes, query optimization, the basics of programming stored procedures, functions and triggers, basic administrative tasks on the example of Microsoft SQL Server, elements of SQL databases.

Object-oriented programming in Java

Basics of programming and review of programming languages, the process of interpretation and compilation, programming paradigms and basics of algorithm implementation. Basics of object-oriented programming (classes, objects, inheritance, polymorphism, virtual methods). Java basics: language keywords, data types, instructions and operators, Java objectivity. Java programming: Class compilation, Java virtual machine (JVM), application startup, class search and load, package creation and use, documentation, and web resources. Practical use of Java: data structures in Java, exception handling, input/output, creating a graphical user interface (JavaFX), generic types, multi-threaded programming in Java, new elements of Java 8, IntelliJ development environment.

Contemporary trends in computer science: Computability of algorithms

Basic concepts of computability and decidability theory, Turing machine - computational model, recursive and recursively enumerable sets, recursive functions, undecidable problems, machine "stop" problem, Post's correspondence problem, Rice theorem, philosophical aspects of Rice's theorem.

Contemporary trends in computer science: Algorithm complexity

The concept of an algorithm, computational complexity, examples of algorithm design and analysis, the concept of a computationally difficult problem, polynomial transformation as a computational difficulty proving tool, problem classes P, NP, NPC, examples of NP-complete problems, example of NP-completeness proof, methods of solving difficult problems, an example of a polynomial approximation strategy for the traveling salesman problem.

Contemporary trends of computer science: Cryptography

Cryptology, cryptography, cryptanalysis, history and present times, elements of number theory, classical cryptographic systems, public key codes, code breaking and its computational complexity.

Contemporary trends in computer science: Distributed systems

Distributed systems (definition, qualitative and quantitative assessments, distributed application and sequence program, classifications of parallelism and concurrency), computer networks (ISO and TCP / IP, LAN and MAN technologies, Ethernet and FDDI, ATM), internet network (architecture and protocols).

Contemporary trends in computer science: Artificial intelligence systems

Introduction to the issues of artificial intelligence, basic methods of knowledge representation and inference, expert systems and software for their design and implementation, the use of neural networks, genetic algorithms and image recognition methods, applications of artificial intelligence (industrial real-time expert systems, vision systems, robotics, natural language processing).

Web application development

HTML language and HTTP protocol, interactive elements working in the browser: Java applets, ActiveX controls, JavaScript and VBScript scripts, server-side interactivity: CGI programs, Java servlets, SHTML, PHP, ASP pages, network security: cryptographic certificates, access restriction for websites with a password or IP address, the future of WWW: XML, other XML extending languages ​​and standards, examples of applications, "survival course" of perl and PHP for the purpose of exercises, installation and configuration of WWW daemon programs on the example of Apache servers (Linux) and IIS (MS Windows).

Computer Networks

Internet protocols, layered models, software and hardware network components, LAN topologies, basic devices, LAN technologies (Ethernet, Ethernet II frames, IEEE802 project, IEEE802.3, MAC addresses, wireless networks), IPv4 protocol, ICMP - Internet Control Message Protocol , UDP - User Datagram Protocol, TCP - Transmission Control Protocol, DHCP - Dynamic Host Configuration Protocol, IPv6 protocol, basics of routing protocols, DNS, switch operation, STP, VLAN networks, security in computer networks (encryption mechanisms, authentication and integrity checking mechanisms , application and network layer protocols, filters / firewalls).

SQL Server

Microsoft SQL Server architecture, security system, input-output subsystems, physical database structure, transaction log mechanisms, backup strategies, database recovery, scheduling and indexing, Transact-SQL, stored procedures and triggers, implementing data integrity, transaction management and locks, concurrent transaction isolation levels, automation of administrative tasks, data exchange between different systems, system monitoring and tuning, distributed databases, planning and implementing replication.

Java - advanced programming

Extending the basics of Java programming (advanced input / output support; utility classes including collections, unmodifiable collections, thread safe collections; time support; program localization; advanced emergency handling). Developing advanced window applications using JavaFX. Development of web applications (servlets, JSP, Apache Tomcat, JavaBeans, use of ready-made frameworks). Dependency injection. Database support from Java source code. Effective use of the Java language (e.g. what are the possibilities of using Enums). Use of stream mechanisms and functional programming elements introduced in Java 1.8.

Distributed systems

Internet network (routing, multicasting), Frame Relay networks (concept of virtual networks, packet switching, addressing, packet fragmentation), ATM networks as the implementation of B-ISDN networks (architecture, cell structure, virtual paths and channels concept, connection classes), broadband integrated SDH networks (synchronous transport module, mapping digital signals in containers, devices, topologies), optical networks (fiber optic transmission, devices and protocols), radio and satellite networks, data protection in computer networks.

Software design

Purpose of business modeling, basic concepts, cost estimation (Activity-based costing, Activity-based management), business architecture, design patterns, e-business development, C2B, B2B, B2C, C2C, software engineering "best practices", object-oriented technology, model visualization - UML, object-oriented system design in accordance with the selected process, production cycle management (Git, GitHub, Bitbucket, Jira).