FI:PB173 Domain specific development - Course Information
PB173 Domain specific development
Faculty of InformaticsAutumn 2024
- Extent and Intensity
- 0/2/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)
Miroslav Jaroš (seminar tutor)
Ing. Pavel Tišnovský, Ph.D. (seminar tutor)
Bc. 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)
Izabela Bakollari (seminar tutor)
Carlos Eduardo Maiolino (seminar tutor) - Guaranteed by
- doc. RNDr. Petr Švenda, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Contact Person: RNDr. Martin Ukrop, Ph.D.
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics - Timetable of Seminar Groups
- PB173/Go: Thu 26. 9. to Thu 19. 12. Thu 10:00–11:50 S505, P. Tišnovský, S. Zeman
PB173/KDLP: Mon 23. 9. to Mon 16. 12. Mon 14:00–15:50 S505, I. Bakollari, V. Bendel, C. Maiolino, R. Vrbovský
PB173/QT: Fri 27. 9. to Fri 20. 12. Fri 14:00–15:50 S505, M. Jaroš - 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 exemption given by the lecturer based on student response to motivational questions specific to given seminar group (details and process is described in Archived messages).
• 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, knowledge of the C language, basic knowledge about operating systems in general, practical skills in Linux operating system (e.g. Fedora, Debian, Slackware), basics of git
• PB173/QT (Multiplatform programming with C++ a QT framework): student shall by the student should be proficient in programming fundamentals of C and C++ language. - 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: 39/110, only registered: 10/110, only registered with preference (fields directly associated with the programme): 6/110 - fields of study / plans the course is directly associated with
- there are 36 fields of study the course is directly associated with, display
- 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)
• Introduce students to the Linux Kernel development workflow, show them how to create and send kernel modifications to mailing lists.
• Excite students about the wonderful world of Linux kernel community.
• Expose students to major kernel subsystems. - 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)
• By the end of the course, students should have an understanding of how Linux kernel is architectured.
• Understand the role of each of the major subsystems and how those interact with each other.
• Students will also be able to have a basic understanding on how to write code for the Linux kernel, for its core and for modules, and how to use Linux’s provided generic interfaces (memory allocation, synchronization, generic data structures, etc) in their own kernel code.
• Students will understand how to send patches to specific subsystems and how to review patches. - 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)
• Introduction and development environment setup
• General overview of core kernel concepts
• PC and x86 architecture
• Process management
• Synchronization primitives
• Memory management
• Storage and filesystems
• Networking stack
• Device drivers
• Kernel Debugging methods
• GPG signing party
- 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)
In-person lectures and homework assignments - 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 thematic 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)
Each assignment is assigned a specific number of points based on its difficulty or importance. These points add up to a maximum of 100. To pass the course, students need to accumulate at least 65 points across all assignments. - Language of instruction
- Czech
- Further comments (probably available only in Czech)
- Study Materials
The course is taught each semester. - 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)
The course aims to show students the specifics of developing the Linux kernel. For more information, see fall2024-muni.kdlp.underground.software/. - 3. PB173/Qt Multiplatform programming using C++ and the Qt framework (Miroslav Jaroš; in Czech)
- 1. PB173/Go Coding in Go (Red Hat – Pavel Tišnovský, Stanislav Zeman; in Czech)
- Enrolment Statistics (Autumn 2024, recent)
- Permalink: https://is.muni.cz/course/fi/autumn2024/PB173