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

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

CodeSubjectCreditsWinterSummer
NTIN090Introduction to Complexity and Computability 42/1 C+Ex
NTIN066Data Structures 1 62/2 C+Ex
NSZZ023Diploma Thesis I 60/4 C
NSZZ024Diploma Thesis II 90/6 C
NSZZ025Diploma Thesis III 150/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).

CodeSubjectCreditsWinterSummer
NPRG069Software Project 120/8 C0/8 C
NPRG070Research Project 90/6 C0/6 C
NPRG071Company Project 60/4 C0/4 C
NPRG072Increased project scope 30/2 C0/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:

CodeSubjectCreditsWinterSummer
NPRG014Concepts of Modern Programming Languages 40/3 C
NPRG043Recommended Programming Practices 52/2 MC
NPRG024Design Patterns 30/2 MC
NSWI126Advanced Tools for Software Development and Monitoring 20/2 C
NPRG059Advanced Programming Praxis 20/1 C
NPRG058Advanced Programming in Parallel Environment 62/2 C+Ex
NSWI150Virtualization and Cloud Computing 32/0 Ex
NSWI153Advanced Programming of Web Applications 52/2 C+Ex
NSWI145Web Services 52/2 C+Ex
NSWI144Data on the Web 52/1 C+Ex
NSWI130Software System Architectures 52/2 C+Ex
NSWI026Advanced aspects of software engineering 52/2 C+Ex
NTIN043Formal Foundations of Software Engineering 52/2 C+Ex
NDBI034Multimedia Retrieval 42/1 C+Ex
NDBI040Modern Database Systems 52/2 C+Ex
NDBI042Data Visualization Techniques 42/1 C+Ex
NPFL114Deep Learning 73/2 C+Ex
NDBI023Data Mining 52/2 C+Ex
NDBI016Transactions 32/0 Ex
NDBI001Query Languages 1 52/2 C+Ex
NDBI006Query Languages 2 52/2 C+Ex
NDBI021User preferences 42/1 C+Ex
NSWI072Data Compression Algorithms 32/0 Ex

3.4 Elective Courses - Set 3

The student needs to obtain at least 15 credits for the courses from the following set:

CodeSubjectCreditsWinterSummer
NMAI060Probabilistic Methods 32/0 Ex
NPRG042Programming in Parallel Environment 62/2 C+Ex
NPRG054High Performance Software Development 62/2 C+Ex
NSWI035Principles of Distributed Systems 32/0 Ex
NSWI080Middleware 42/1 MC
NSWI101System Behaviour Models and Verification 52/2 C+Ex
NSWI131Performance Evaluation of Computer Systems 42/1 C+Ex
NSWI149Software Engineering in Practice 32/0 C
NSWI152Cloud Application Development 20/2 C
NTIN067Data Structures 2 32/0 Ex
NSWI166Introduction to recommender systems and user preferences 42/1 C+Ex
NPFL104Machine Learning Methods 41/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)

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

CodeSubjectCreditsWinterSummer
NSWI130Software System Architectures 52/2 C+Ex
NSWI026Advanced aspects of software engineering 52/2 C+Ex
NTIN043Formal Foundations of Software Engineering 52/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

CodeSubjectCreditsWinterSummer
NPRG014Concepts of Modern Programming Languages 40/3 C
NPRG024Design Patterns 30/2 MC
NPRG043Recommended Programming Practices 52/2 MC
NPRG042Programming in Parallel Environment 62/2 C+Ex
NPRG059Advanced Programming Praxis 20/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

CodeSubjectCreditsWinterSummer
NSWI126Advanced Tools for Software Development and Monitoring 20/2 C
NSWI153Advanced Programming of Web Applications 52/2 C+Ex
NSWI150Virtualization and Cloud Computing 32/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

CodeSubjectCreditsWinterSummer
NSWI130Software System Architectures 52/2 C+Ex
NSWI153Advanced Programming of Web Applications 52/2 C+Ex
NSWI145Web Services 52/2 C+Ex
NDBI034Multimedia Retrieval 42/1 C+Ex
NPRG043Recommended Programming Practices 52/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

CodeSubjectCreditsWinterSummer
NDBI040Modern Database Systems 52/2 C+Ex
NDBI034Multimedia Retrieval 42/1 C+Ex
NDBI001Query Languages 1 52/2 C+Ex
NDBI006Query Languages 2 52/2 C+Ex
NDBI021User preferences 42/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

CodeSubjectCreditsWinterSummer
NDBI016Transactions 32/0 Ex
NSWI072Data Compression Algorithms 32/0 Ex
NSWI144Data on the Web 52/1 C+Ex
NDBI040Modern Database Systems 52/2 C+Ex
NTIN066Data Structures 1 62/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

CodeSubjectCreditsWinterSummer
NDBI040Modern Database Systems 52/2 C+Ex
NDBI034Multimedia Retrieval 42/1 C+Ex
NDBI042Data Visualization Techniques 42/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

CodeSubjectCreditsWinterSummer
NDBI023Data Mining 52/2 C+Ex
NAIL029Machine Learning 32/0 Ex
NDBI042Data Visualization Techniques 42/1 C+Ex