PB173 Domain specific development

Faculty of Informatics
Autumn 2024
Extent and Intensity
0/2/0. 2 credit(s) (plus extra credits for completion). Type of Completion: k (colloquium).
Teacher(s)
doc. RNDr. Petr Švenda, Ph.D. (lecturer)
Miroslav Jaroš (seminar tutor)
Ing. Pavel Tišnovský, Ph.D. (seminar tutor)
Stanislav Zeman (seminar tutor)
RNDr. Martin Ukrop, Ph.D. (lecturer), doc. RNDr. Petr Švenda, Ph.D. (deputy)
Radomír Vrbovský (seminar tutor)
Bc. Vratislav Bendel (seminar tutor)
Guaranteed by
doc. RNDr. Petr Švenda, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites
PB111 Principles of low-level prog. || PB071 Principles of low-level prog. || SOUHLAS
We expect you to have knowledge of appropriate programming language and operating system based on requirements your desired seminar group. A mandatory prerequisite is passing the PB071 course or exemption given by the lecturer.
• 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/KDLP (Kernel Learning Development Pipeline): the class will be delivered in English, other prerequisites will be added soon
Course Enrolment Limitations
The course is offered to students of any study field.
The capacity limit for the course is 110 student(s).
Current registration and enrolment status: enrolled: 0/110, only registered: 142/110, only registered with preference (fields directly associated with the programme): 0/110
Course objectives
Enhance your programming capabilities in the language appropriate for the particular selected application domain.
1. 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.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
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 gloals.
1. 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.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Syllabus
  • The concrete content of the course depends on the individual thematic groups which are listed in Teacher's information areas.
  • 1. 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
  • 2. PB173/KDLP (Kernel Development Learning Pipeline)
    Will be added soon.
Literature
  • Literatura dle tematické skupiny
Teaching methods
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.
1. PB173/Go (Coding in Go)
In-person lectures with hands-on exercises, reviewed homework assignments, project.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Assessment methods
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 tematic group.
1. 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.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
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

The groups/topics for a given semester will be announced via email before the start of seminar group enrolment and they will be filled to this page.

At the moment, the following groups are open for Autumn 2024:

  • 1. 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
  • 2. PB173/KDLP Kernel Development Learning Pipeline (Red Hat – Radomír Vrbovský, Carlos Maiolino, Izabela Bakollari, Vratislav Bendel; in English)
    More information will be added soon.
  • 3. PB173/Qt Multiplatform programming using C++ and the Qt framework (Red Hat – Miroslav Jaroš; in Czech)

Example topics from past years: Programming in the presence of side-channel leakages, Image processing, Applied cryptography and secure programming, Systems programming in Linux, Implementing an interpreter in C++, Efficient programming, Implementing a small OS kernel, Binary analysis and disassembly.

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, Spring 2025.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2024/PB173