Software and Data Engineering
Coordinated by: Department of Software Engineering
Study branch coordinator: Prof. RNDr. Tomáš Skopal, Ph.D.
Specializations:
- – Software engineering
- – Software development
- – Web engineering
- – Database systems
- – Big data processing
- – Software development
The study program Software and data engineering aims at expertise in analysis, design and development of complex software solutions, and systems focused on big data processing. The portfolio of courses provided in the study covers a number of technological platforms, from classic, web-based, to modern cloud and distributed solutions. A required part of the study is a work on team project where students apply not only the theoretical knowledge and technological skills but also team work abilities.
The graduate gains a deep knowledge of software and data engineering based on her/his specialization. With the specialization Software engineering the graduate is able to analyse requirements for software solutions, to design architectures, and to lead the development process. The specialization Software development prepares the graduate for leading a team of SW developers, including parallel and cloud environments. The development of internet applications is covered by the specialization Web engineering, including web, cloud and other internet technologies with an emphasize on scalability, robustness and security. The graduate of Database systems is able to design and integrate schemas of various databases and to develop complex database applications. With the Big data processing specialization the graduate is prepared for the role of data scientist with abilities in data mining and related data analytics knowledge.
3.1 Obligatory Courses
Code | Subject | Credits | Winter | Summer | |
NTIN090 | Introduction to Complexity and Computability | 4 | 2/1 C+Ex | — | |
NTIN066 | Data Structures 1 | 6 | — | 2/2 C+Ex | |
NSZZ023 | Diploma Thesis I | 6 | — | 0/4 C | |
NSZZ024 | Diploma Thesis II | 9 | 0/6 C | — | |
NSZZ025 | Diploma Thesis III | 15 | — | 0/10 C |
3.2 Elective Courses - Set 1 - Team Project Courses
The student choses one project course from three offered (Software Project, Research Project, Company Project).
Code | Subject | Credits | Winter | Summer | |
NPRG069 | Software Project | 12 | 0/8 C | 0/8 C | |
NPRG070 | Research Project | 9 | 0/6 C | 0/6 C | |
NPRG071 | Company Project | 6 | 0/4 C | 0/4 C | |
NPRG072 | Increased project scope | 3 | 0/2 C | 0/2 C |
3.3 Elective Courses - Set 2 - Profiling Courses
The student needs to obtain at least 41 credits for the profiling courses from the following set:
Code | Subject | Credits | Winter | Summer | |
NPRG014 | Concepts of Modern Programming Languages | 4 | 0/3 C | — | |
NPRG043 | Recommended Programming Practices | 5 | — | 2/2 MC | |
NPRG024 | Design Patterns | 3 | — | 0/2 MC | |
NSWI126 | Advanced Tools for Software Development and Monitoring | 2 | — | 0/2 C | |
NPRG059 | Advanced Programming Praxis | 2 | 0/1 C | — | |
NPRG058 | Advanced Programming in Parallel Environment | 6 | 2/2 C+Ex | — | |
NSWI150 | Virtualization and Cloud Computing | 3 | 2/0 Ex | — | |
NSWI153 | Advanced Programming of Web Applications | 5 | — | 2/2 C+Ex | |
NSWI145 | Web Services | 5 | — | 2/2 C+Ex | |
NSWI144 | Data on the Web | 5 | 2/1 C+Ex | — | |
NSWI130 | Software System Architectures | 5 | 2/2 C+Ex | — | |
NSWI026 | Advanced aspects of software engineering | 5 | — | 2/2 C+Ex | |
NTIN043 | Formal Foundations of Software Engineering | 5 | 2/2 C+Ex | — | |
NDBI034 | Multimedia Retrieval | 4 | 2/1 C+Ex | — | |
NDBI040 | Modern Database Systems | 5 | — | 2/2 C+Ex | |
NDBI042 | Data Visualization Techniques | 4 | — | 2/1 C+Ex | |
NPFL114 | Deep Learning | 7 | — | 3/2 C+Ex | |
NDBI023 | Data Mining | 5 | — | 2/2 C+Ex | |
NDBI016 | Transactions | 3 | — | 2/0 Ex | |
NDBI001 | Query Languages 1 | 5 | 2/2 C+Ex | — | |
NDBI006 | Query Languages 2 | 5 | — | 2/2 C+Ex | |
NDBI021 | User preferences | 4 | — | 2/1 C+Ex | |
NSWI072 | Data Compression Algorithms | 3 | 2/0 Ex | — |
3.4 Elective Courses - Set 3
The student needs to obtain at least 15 credits for the courses from the following set:
Code | Subject | Credits | Winter | Summer | |
NMAI060 | Probabilistic Methods | 3 | 2/0 Ex | — | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NPRG054 | High Performance Software Development | 6 | — | 2/2 C+Ex | |
NSWI035 | Principles of Distributed Systems | 3 | 2/0 Ex | — | |
NSWI080 | Middleware | 4 | — | 2/1 MC | |
NSWI101 | System Behaviour Models and Verification | 5 | 2/2 C+Ex | — | |
NSWI131 | Performance Evaluation of Computer Systems | 4 | — | 2/1 C+Ex | |
NSWI149 | Software Engineering in Practice | 3 | — | 2/0 C | |
NSWI152 | Cloud Application Development | 2 | — | 0/2 C | |
NTIN067 | Data Structures 2 | 3 | — | 2/0 Ex | |
NSWI166 | Introduction to recommender systems and user preferences | 4 | 2/1 C+Ex | — | |
NPFL104 | Machine Learning Methods | 4 | — | 1/2 C+Ex |
3.5 State Final Exam
The student will select three examination areas from the following list. Two of the examination areas are obligatory for the chosen specialization, the last area is chosen voluntarily.
Examination areas
- 1. Software analysis and architectures (obligatory for the specialization Software engineering)
- 2. Advanced programming (obligatory for the specializations Software engineering and Software development)
- 3. Software technologies (obligatory for the specialization Software development)
- 4. Web technologies (obligatory for the specialization Web engineering)
- 5. Databases - formal foundations and query languages (obligatory for the specializations Web engineering and Database systems)
- 6. Databases - implementation and administration (obligatory for the specialization Database systems)
- 7. Big and unstructured data processing (obligatory for the specialization Big data processing)
- 8. Data mining (obligatory for the specialization Big data processing)
- 2. Advanced programming (obligatory for the specializations Software engineering and Software development)
Knowledge requirements
1. Software analysis and architectures
SW development processes, development phases. Business processes and their modeling using BPMN. UML and its use for analysis and design of structure and behavior of SW. Design patterns. SW testing, impact and change analysis. SW project planning, cost estimation, levels of project management. Legal aspects of SW, principal legal environment for IT projects. Types of SW architecture. Modeling and documentation of SW architecture. Classification of SW architecture quality attributes, their description using scenarios and tactics. Service oriented architectures. Algebraic methods, many sorted algebras, initial models. Temporal logic. Formal principles of the UML language. OCL as a specification language, formal base of specification.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NSWI130 | Software System Architectures | 5 | 2/2 C+Ex | — | |
NSWI026 | Advanced aspects of software engineering | 5 | — | 2/2 C+Ex | |
NTIN043 | Formal Foundations of Software Engineering | 5 | 2/2 C+Ex | — |
2. Advanced programming
Object concepts of modern programming languages. Generic programming and metaprogramming, generics and templates, policies, traits, type inference, reflection. Exceptions, exception-safe programming. Implementation of object properties, runtime support, calling conventions, garbage collection. Modern language constructs and code performance. Parallel programming, Amdahl law, synchronization primitives, task stealing. Design patterns. Scripting languages, prototype-based languages. Domain-specific languages. Functional programming. Principles of code quality, best practices. Refactoring. Testing, debugging, monitoring.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NPRG014 | Concepts of Modern Programming Languages | 4 | 0/3 C | — | |
NPRG024 | Design Patterns | 3 | — | 0/2 MC | |
NPRG043 | Recommended Programming Practices | 5 | — | 2/2 MC | |
NPRG042 | Programming in Parallel Environment | 6 | — | 2/2 C+Ex | |
NPRG059 | Advanced Programming Praxis | 2 | 0/1 C | — |
3. Software technologies
Operating system architectures, process management, memory management, communication and synchronization, parallelism, virtualization, paging. File systems, access rights and security. Portability, multiplatform applications. Testing and monitoring of performance and functionality. Architectures of web applications, server-side and client-side scripting, cooperation with database systems. Architecture of data servers, transactions, performance optimization. Cluster, Grid, and Cloud. IaaS, PaaS, and SaaS. Virtualization, containerization, orchestration, edge computing, IoT. MapReduce. Load balancing, high availability.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NSWI126 | Advanced Tools for Software Development and Monitoring | 2 | — | 0/2 C | |
NSWI153 | Advanced Programming of Web Applications | 5 | — | 2/2 C+Ex | |
NSWI150 | Virtualization and Cloud Computing | 3 | 2/0 Ex | — |
4. Web technologies
Overview of basic web technologies. Network services for web technologies. Web services. Architecture of client-server applications, server-side and client-side scripting, web frameworks. Database systems in web applications, NoSQL databases, multimedia databases. Indexing and document searching, principles of web search engines. Linked Data, integration of semantic data to web pages. Security of information systems in the Internet environment, authentication, authorization, security models, cryptography basics, data security.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NSWI130 | Software System Architectures | 5 | 2/2 C+Ex | — | |
NSWI153 | Advanced Programming of Web Applications | 5 | — | 2/2 C+Ex | |
NSWI145 | Web Services | 5 | — | 2/2 C+Ex | |
NDBI034 | Multimedia Retrieval | 4 | 2/1 C+Ex | — | |
NPRG043 | Recommended Programming Practices | 5 | — | 2/2 MC |
5. Databases - formal foundations and query languages
Relational calculi, relational algebras. Relational completeness. Safe expressions, equivalences of relational query languages. Transitive closure of relation. Semantics of SQL. SQL standards. Object extension of relational data model. Text databases – Boolean and vector models, searching and indexing, query result ranking, top-k operator. Datalog. Recursion in SQL. XML data model. RDF data model, SPARQL query language. Similarity search in multimedia databases, metric indexes for similarity search. Preference modeling and querying.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NDBI040 | Modern Database Systems | 5 | — | 2/2 C+Ex | |
NDBI034 | Multimedia Retrieval | 4 | 2/1 C+Ex | — | |
NDBI001 | Query Languages 1 | 5 | 2/2 C+Ex | — | |
NDBI006 | Query Languages 2 | 5 | — | 2/2 C+Ex | |
NDBI021 | User preferences | 4 | — | 2/1 C+Ex |
6. Databases - implementation and administration
Architectures of database systems. Models and properties of transactions: locking protocols, time stamps. Transaction isolation, resource allocation. Distributed transactions. Error/failure recovery, journals. Distribution with horizontal fragmentation, implementation of NoSQL databases, CAP theorem. Indexing relational data. Spatial access methods. Algorithms for implementation of relational operations and aggregation functions. Query evaluation and optimization. Data compression: Huffman coding, arithmetic coding, LZ algorithms, Burrows-Wheeler transformation.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NDBI016 | Transactions | 3 | — | 2/0 Ex | |
NSWI072 | Data Compression Algorithms | 3 | 2/0 Ex | — | |
NSWI144 | Data on the Web | 5 | 2/1 C+Ex | — | |
NDBI040 | Modern Database Systems | 5 | — | 2/2 C+Ex | |
NTIN066 | Data Structures 1 | 6 | — | 2/2 C+Ex |
7. Big and unstructured data processing
Distribution with horizontal fragmentation, implementation of NoSQL databases, CAP theorem. Big Data management - distribution, scalability, replication, transactions. MapReduce. Key-value storages. Column storages. Document storages. Models for fulltext querying - vector, Boolean, probabilistic models, query result ranking, top-operator. Similarity search in multimedia databases, metric indexes for similarity search. Data visualization techniques.
Recommended coursesy
Code | Subject | Credits | Winter | Summer | |
NDBI040 | Modern Database Systems | 5 | — | 2/2 C+Ex | |
NDBI034 | Multimedia Retrieval | 4 | 2/1 C+Ex | — | |
NDBI042 | Data Visualization Techniques | 4 | — | 2/1 C+Ex |
8. Data mining
Basic principles of database systems, data warehouses and OLAP technology. Data mining – data preprocessing, concept description techniques, methods for mining association rules, methods for data classification and prediction, cluster analysis methods, data mining in database systems. Statistical methods for data mining. Discovery of different types of dependencies. Bayesian analysis, bayesian networks. Probabilistic models of information retrieval. Methods of learning for classification and regression. Support Vector Machines and kernel functions. Experiment evaluation. Data visualization techniques.
Recommended courses
Code | Subject | Credits | Winter | Summer | |
NDBI023 | Data Mining | 5 | — | 2/2 C+Ex | |
NAIL029 | Machine Learning | 3 | — | 2/0 Ex | |
NDBI042 | Data Visualization Techniques | 4 | — | 2/1 C+Ex |