Syllabus

Advanced Programming

Avancerad Programmering

Course
DIT118
First cycle
7.5 credits (ECTS)

About the Syllabus

Registration number (Format: GU 20XX/XXXX)
GU 2024/2323
Date of entry into force
2025-09-15
Decision date
2024-11-19
Valid from semester
Spring term 2026
Decision maker
Department of Computer Science and Engineering

Grading scale

Four-grade scale, digits

Course modules

Written hall examination, 4.5 credits
Assignments, 3 credits

Position

The course is compulsory within the Software Engineering and Management, bachelors programme (N1SOF).

Main field of study with advanced study

ITSOF Software Engineering - G1F First cycle, has less than 60 credits in first-cycle course/s as entry requirements

Entry requirements

To be eligible for this course, students must have successfully completed: DIT009 Fundamentals of Programming, 7.5 credits, DIT349 Fundamentals of Software Architecture, 7.5 credits, and DIT357 Distributed Systems, 7.5 credits, or equivalent.

Applicants must prove knowledge of English: English 6/English B or the equivalent level of an internationally recognized test, for example TOEFL, IELTS.

Content

The course introduces students to advanced programming paradigms, beginning with the basics of functional programming. Students will explore core concepts such as streams, immutability, and the fundamentals of parallelism and concurrency. The second part of the course transitions to the principles of reactive programming, including an understanding of the Reactive Manifesto, reactive systems, and architecture. Students will learn about the handling of reactive data structures (e.g., Observables and Singles), managing subscription flows, and error handling. Students will apply the theory learned in class through hands-on exercises and assignments that utilize ReactiveX APIs for building asynchronous programming solutions. These practical components reinforce concepts such as stream management, error handling, and backpressure by enabling students to implement responsive, real-time applications in a controlled environment.

Objectives

On successful completion of the course the student will be able to:

Knowledge and understanding

  • Describe the fundamentals of functional programming, including streams, immutability, essential operators (filter, map), and concepts of parallelism and concurrency.
  • Understand and explain the theoretical background of reactive programming, including concepts like asynchronous data streams, observables, and subscribers
  • Describe and apply different reactive time operators to effectively test components, ensuring accurate simulation of time-based behaviors and delays.

Competence and skills

  • Articulate the importance of reactive programming in the context of modern software architecture and distributed systems.
  • Compare and contrast reactive programming with other common programming paradigms (procedural or object-oriented programming), using any high-level language that supports reactive programming.
  • Design, implement, and evaluate programs that integrate multiple data streams using various operators to ensure correct program flow and behavior.
  • Develop basic services that apply key principles of reactive programming, such as asynchronous event handling, backpressure management, and non-blocking data processing.
  • Create and evaluate testing strategies to verify and validate reactive systems to ensure system reliability and responsiveness (e.g., by simulating different types of client interactions)

Judgement and approach

  • Identify and analyze whether reactive code is executed synchronously or asynchronously, and specify the process, thread, or thread pool responsible for execution.
  • Analyse and evaluate the trade-off in using different channels used by reactive components, including their potential flows and the resulting states within a reactive system.

Sustainability labelling

No sustainability labelling.

Form of teaching

The teaching consists of lectures, group work, exercises, as well as supervision in connection to the exercises.

Language of instruction: English

Examination formats

The course is examined by an individual written exam carried out in an examination hall at the end of the course and implementation assignments normally carried out in groups of students.

The assignments are examined based on solutions to compulsory problems handed in during the course and based on individual contribution to the group work. Retake examinations of the assignments part consist of individual assignments.


If a student who has been failed twice for the same examination element wishes to change examiner before the next examination session, such a request is to be granted unless there are specific reasons to the contrary (Chapter 6 Section 22 HF).

If a student has received a certificate of disability study support from the University of Gothenburg with a recommendation of adapted examination and/or adapted forms of assessment, an examiner may decide, if this is consistent with the course’s intended learning outcomes and provided that no unreasonable resources would be needed, to grant the student adapted examination and/or adapted forms of assessment.

If a course has been discontinued or undergone major changes, the student must be offered at least two examination sessions in addition to ordinary examination sessions. These sessions are to be spread over a period of at least one year but no more than two years after the course has been discontinued/changed. The same applies to placement and internship (VFU) except that this is restricted to only one further examination session.

If a student has been notified that they fulfil the requirements for being a student at Riksidrottsuniversitetet (RIU student), to combine elite sports activities with studies, the examiner is entitled to decide on adaptation of examinations if this is done in accordance with the Local rules regarding RIU students at the University of Gothenburg.

Grades

Sub-courses

  1. Written hall examination, 4.5 credits
    Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U)
  2. Assignments, 3 credits
    Grading scale: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U)

The grading scale for the whole course comprises: Pass with distinction (5), Pass with credit (4), Pass (3) and Fail (U).

To pass the course, all mandatory modules must be passed. To earn a higher grade than 3, a higher weighted average from the grades of the mandatory modules is required.

Course evaluation

The course is evaluated through meetings both during and after the course between teachers and student representatives. Further, an anonymous questionnaire is used to ensure written information. The outcome of the evaluations serves to improve the course by indication which parts could be added, improved, changed or removed.