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).
- 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.
- 1. PB173/Go Coding in Go (Red Hat – Pavel Tišnovský, Stanislav Zeman; in Czech)
- Enrolment Statistics (recent)
- Permalink: https://is.muni.cz/course/fi/autumn2024/PB173