PB173 Domain Specific Development

Faculty of Informatics
Autumn 2026
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
In-person direct teaching
Teacher(s)
doc. RNDr. Petr Švenda, Ph.D. (lecturer)
Ing. Pavel Tišnovský, Ph.D. (seminar tutor)
Bc. Stanislav Zeman (seminar tutor)
Lukasz Michal Chmielewski, PhD (seminar tutor)
RNDr. Milan Šorf (seminar tutor)
Mgr. Kamila Varadzínová (seminar tutor), doc. RNDr. Petr Švenda, Ph.D. (deputy)
RNDr. Martin Ukrop, Ph.D. (assistant)
Matej Matuška (seminar tutor)
Ing. Jan Koscielniak (seminar tutor)
Vojtěch Trefný (seminar tutor)
Bc. Alexander Zgabur (seminar tutor)
Ing. Martin Pokorný (seminar tutor)
Guaranteed by
doc. RNDr. Petr Švenda, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Contact Person: doc. RNDr. Petr Švenda, Ph.D.
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites
PB111 Principles of Low-level Prog. || PB071 Principles of low-level prog.

Důležité: Uvedená seminární skupina bude otevřena pouze v případě, že do ní bude do 7.9.2026 (týden před začátkem výuky) zaregistrováno alespoň 10 studentů. V opačném případě si student musí vybrat jinou z nabízených skupin.


PB173/Go (Coding in Go)


the student should be proficient in programming fundamentals, comfortable with SQL and have a basic understanding of networking and virtualization (it is sufficient on the level of passing courses IB111, PB154, PB156 and PB152)

PB173/UX (User Experience)


Students acquire the individual principles primarily through smaller activities, such as identifying UX problems, designing interfaces, creating personas, or testing accessibility. These activities are designed to be manageable even without prior experience with UX.

PB173/SCR (Source Code Review)


the class will be delivered in English, knowledge of the C/C++, python, and another language (e.g., Java), basic knowledge about embedded and operating systems in general, basics of git, basic knowledge of security concepts.

PB173/git (Advanced usage of Git versioning system)


PB173/AiDev (AI-Assisted Software Development)
The class will be delivered in English, basic experience with software development.




Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
The capacity limit for the course is 110 student(s).
Current registration and enrolment status: enrolled: 0/110, only registered: 223/110, only registered with preference (fields directly associated with the programme): 183/110
fields of study / plans the course is directly associated with
there are 36 fields of study the course is directly associated with, display
Abstract

Enhance your programming capabilities in the language appropriate for the particular selected application domain.

PB173/Go (Coding in Go)

  • Students will understand the fundamentals of the Go programming language and its common use cases in practice.
  • Students will acquire the required knowledge for entry-level Go developer positions while writing idiomatic Go code.
  • Students will be capable of applying the acquired knowledge to real-life projects.

PB173/UX (User Experience)


The course provides developers with an introduction to the principles of user experience (UX) and their practical application, from the basics of a user-centered approach through cognitive principles, visual design such as colors and typography, and consistency, to the design process and user research. Special attention is given to working with design patterns. The emphasis is on connecting UX and development, practical activities, and solving real-world problems.

PB173/SCR (Source Code Review)

  • Provide an introduction to the principles and practices of source code review, with a focus on improving software quality, maintainability, and security.
  • Attendees will learn about common types of vulnerabilities, how to systematically analyze source code for vulnerabilities, design flaws, and inefficiencies.
  • Real-world hands-on group exercises, concentrated on embedded devices source code review, will help participants develop the skills necessary to identify issues early in the development lifecycle.

PB173/git (Advanced usage of Git versioning system)


During this course, you will learn unique benefits and concepts of Git as well as its core features via extensive examples, hands-on exercises and mandatory homework. The emphasis of the course is to prepare you for working on group community upstream projects in enterprise. In-person lectures will only take place in the first 8 weeks of the semester, which is followed by project work.


PB173/AiDev (AI-Assisted Software Development)



Learning outcomes

The general goal of this course is extension of programming knowledge in a particular area of expertise based on the particular seminar group. Each seminar group will define its own specific learning goals.

PB173/Go (Coding in Go)

  • Write idiomatic Go code.
  • Understand the Go concurrency model.
  • Profile and optimize Go applications.
  • Develop REST API services in Go.
  • Containerize and deploy one's applications.
  • Implement persistence leveraging SQL databases.
  • Instrument applications with various types of telemetry.

PB173/UX (User Experience)

  • Understand what UX is and is not, and why it is important for software development.
  • Understand the impact of design decisions on user experience.
  • Gain an overview of the basic UX process: research, design, and testing.
  • Understand the cognitive principles that influence user behavior.
  • Understand where and how a developer affects UX in everyday practice.
  • Identify common UX problems in user interfaces.
  • Think about functionality from the user’s perspective.
  • Recognize problematic points in user flows.
  • Propose small UX improvements in everyday development decisions.
  • Apply the basic design process: personas, user journey, prototype, and testing.
  • Collaborate more effectively with designers.

PB173/SCR (Source Code Review)

  • By the end of the course, students should learn the core concepts of source code review and vulnerability identification, including being able to recognize common software vulnerabilities.
  • Students will be able to identify and document software vulnerabilities in a clear, accurate, and responsible manner.
  • Learn about common logical attacks as well as about hardware risks, like side-channel and fault-injection vulnerabilities.
  • Students will also learn learn about use of tools in code review, especially with respect to collaboration, and about code quality and maintainability.
  • Student will learn about reviewing open-source code based on real-world examples (i.e., hands-on practice).
  • Students will also learn about platform-specific code review with respect to embedded systems.

PB173/git (Advanced usage of Git versioning system)


PB173/AiDev (AI-Assisted Software Development)

  • Explain the basic principles, capabilities, and limitations of large language models in software engineering.
  • Apply LLM-based tools to selected software engineering tasks, including implementation, testing, debugging, documentation, and code review.
  • Use prompt and context engineering techniques to improve the quality and reliability of AI-generated software artifacts.
  • Select suitable AI-assisted approaches, such as copilots, agents, and MCP-based tools, for specific software engineering tasks.
  • Critically evaluate AI-generated code and tests with respect to correctness, maintainability, security, hallucination risks, and the need for human oversight.


Key topics
    • The concrete content of the course depends on the individual thematic groups which are listed in Teacher's information areas.

      PB173/Go (Coding in Go)

    • Introduction: introduction to Go, IDEs and editors, installing Go, running Go
    • Fundamentals #1: packages & visibility, variables, data types, control flow, functions, pointers, user-defined data types
    • Fundamentals #2: interfaces, errors, arrays, slices, maps, range
    • Concurrency & parallelism: goroutines, runtime, channels, select, related packages
    • Advanced #1: generics, packages, testing
    • Advanced #2: benchmarks, optimizations, CGo, unsafe & reflect
    • REST APIs: JSON, HTTP, REST API, HTTP package, routers & web frameworks, OpenAPI, templating
    • Containers: containerization, Docker, Kubernetes
    • Databases: SQL, RDBMSs, migrations, SQL, sqlx, sqlc, GORM
    • Infrastructure: CI/CD, infrastructure, Google Cloud Platform
    • Observability: health, logs, metrics, traces, OpenTelemetry

    PB173/UX (User Experience)

    • What is UX
    • Cognitive principles in UX
    • Colors, typography, and reading on screens
    • Consistency and design systems
    • Design process
    • Basics of user research
    • Workshop: heuristic analysis
    • Design patterns for enterprise applications
    • Accessibility
    • Student project presentations

    PB173/SCR (Source Code Review)

    • Introduction to source code review (language level vulnerabilities: buffer overflow, type overflow, strings)
    • Design review
    • Tooling: static and dynamic analysis, reporting
    • Platform-specific aspects: Trusted Execution Environment
    • Reviewing key functionalities #1: Authentication and Authorization, Input Validation, Error Handling, Data Handling,
    • Reviewing key functionalities #2: Memory Management (for languages like C/C++), Code Quality and Maintainability and Concurrency and Thread Safety.
    • Project work: reviewing various open-source implementations (see Teacher Information for examples)

    PB173/git (Advanced usage of Git versioning system)

  • The course will have the following parts (https://red.ht/muni-git):

    • Introduction (Course, Lectors, Students). Version Control. What is version control? Installing Git. The basics of Git Workflow. Cloning Repositories. Index. Art of commits. Configuration and securing repositories with SSH keys.
    • Branching. Tags, Stash, Branching, Merging and Reverting.
    • Fixing Mistakes. Git logs and auditing. Solving Git conflicts. Interactive rebase. Different ways to find and undo changes made to a Git project and when to use them.
    • Teamwork. Upstream and remote. Push, pull, and tracking remote repositories. The golden rule of push.
    • Git Etiquette or Mind your Git manners.
    • Git features and common open-source git workflows.
    • Advanced features of Git.
  • PB173/AiDev (AI-Assisted Software Development)
    • LLM Foundations for Software Engineering
    • Prompt and Context Engineering
    • AI-Assisted Implementation
    • AI-Assisted Testing, Debugging, and Code Review
    • Agentic Software Engineering
    • MCP and Tool Integration
    • Evaluation and Mini-Project

Study resources and literature
  • Literatura dle tematické skupiny
Approaches, practices, and methods used in teaching

In the seminar, students do programming exercises or write small programs in the respective domain. Those are complemented by homework assignments. Finally, seminars include a theoretical introduction, typically taking no more than 30 % of the allocated time.

PB173/Go (Coding in Go)


In-person lectures with hands-on exercises, reviewed homework assignments, project.

PB173/UX (User Experience)


In-person lectures with hands-on exercises, reviewed homework assignments, project.

PB173/SCR (Source Code Review)


In-person lectures and group project assignment.

PB173/git (Advanced usage of Git versioning system)



PB173/AiDev (AI-Assisted Software Development)


The course combines approximately 30–40% in-person lectures with 60–70% seminar-based and practical activities. Teaching methods include:

  • Short lectures introducing fundamental concepts and methods
  • Hands-on exercises using LLM-based software engineering tools
  • Discussion and critical analysis of research papers
  • Reviewed homework assignments
  • Project-based learning


Method of verifying learning outcomes and course completion requirements

During the whole semester, student will undertake several programming homework and/or a project. The amount of homework and final evaluation criteria are specified by each thematic group.

PB173/Go (Coding in Go)


Multiple homework assignments (fifty points) and a final project (fifty points), including its defense. Seventy out of the one hundred points are required to successfully complete the course.

PB173/UX (User Experience)


For successful completion of the course, active participation during lectures and continuous completion of practical assignments are expected. The course also includes a semester project focused on designing the UX of an application: an alarm clock for a tablet. Students will create a prototype covering the basic functions of the application and test it with at least two users. The use of AI tools for generating the design is expected when creating the prototype. The output is a short presentation, 10 minutes long, in which students present their process, key decisions, and the feedback they received. Assessment is based primarily on the quality of the design in terms of usability, logic, and clarity. The emphasis is on the thinking process, the ability to explain one’s decisions and work with feedback, rather than on the visual perfection of the design. To successfully complete the course, students need to obtain at least 70 out of 100 points: practical assignments account for 50 points and the semester project for 50 points.

PB173/SCR (Source Code Review)


The grading will be performed based on the points received from project assignment, presentation, and the activity during the seminar. Total of 60% will be necessary to pass the course.

PB173/git (Advanced usage of Git versioning system)


PB173/AiDev (AI-Assisted Software Development)

  • 15% — A 10–15-minute presentation on recent advances in a topic related to the course
  • 15% — A one-page critical summary of a selected research paper related to the key topics
  • 20% — Homework assignments and practical exercises
  • 50% — Final project, including implementation, evaluation, and presentation
  • To successfully complete the course, students must obtain at least 75 out of 100 points.



Language of instruction
Czech
Further comments (probably available only in Czech)
The course is taught each semester.
The course is taught every week.
Teacher's information

Important: The given seminar will be opened only when at least 10 students are registered for it till 7.9.2026 (one week before the semester starts). Otherwise, another seminar group has to be taken by a student.

The actual capacity of the course is limited by the available number of places in seminar groups. The course can only be completed if you obtain a place in one of the seminar groups.

There are following seminar groups are planned for Autumn 2026 (see note above):

PB173/Go (Coding in Go) (Red Hat – Pavel Tišnovský, Stanislav Zeman; in Czech)

The course aims to introduce the Go programming language and its modern applications (API, virtualization, libraries, ...). As a change from last year, the course was extended to span the full semester. More information at https://github.com/course-go/course

PB173/UX (User Experience) (SAP – Kamila Varadzínová; in Czech)

The course provides developers with an introduction to the principles of user experience (UX) and their practical application, from the basics of a user-centered approach through cognitive principles, visual design (colors, typography), and consistency to the design process and user research. Special attention is given to working with design patterns. The emphasis is on connecting UX and development, practical activities, and solving real-world problems.

PB173/SCR (Source Code Review) (Łukasz Chmielewski; teaching in English)

The seminar will mostly graded based on a project. After four introductory seminars, the participants will create groups and they will review various open-source implementations belonging to a specific class of software, including Smart Home Devices, Printers, Routers, Open-Source Crypto-libraries, Trust Execution Environments code bases, bootloaders or JavaCard applets.

PB173/git (Advanced usage of Git versioning system) (Red Hat; in Czech)

PB173/AiDev (AI-Assisted Software Development) (teaching in English)

The course is also listed under the following terms Autumn 2010, Autumn 2011, Autumn 2012, Autumn 2013, Autumn 2014, Autumn 2015, Spring 2016, Autumn 2016, Spring 2017, Autumn 2017, Spring 2018, Autumn 2018, Spring 2019, Autumn 2019, Spring 2020, Autumn 2020, Spring 2021, Autumn 2021, Spring 2022, Autumn 2022, Spring 2023, Autumn 2023, Spring 2024, Autumn 2024, Spring 2025, Autumn 2025, Spring 2026, Spring 2027.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2026/PB173