Software Engineering

Effective Programming with Effects (Praktikum)

The goal of this prac­ti­cal is to learn pro­gram­ming with al­ge­braic ef­fects and han­dlers. In this course, stu­dents ex­plore how ef­fect sys­tems sup­port the de­vel­op­ment of cor­rect soft­ware, and how ef­fect han­dling en­ables a mean­ing­ful struc­tur­ing of com­plex con­trol flow. Dur­ing the prac­ti­cal, stu­dents pro­gram in the Ef­fekt re­search lan­guage de­vel­oped at the chair. The con­cepts learned are uni­ver­sally ap­plic­a­ble and can be used to struc­ture pro­grams re­gard­less of the pro­gram­ming lan­guage used and thus serve, for ex­am­ple, as a men­tal model for com­monly used li­braries such as React or Pyro.

The first part of the se­mes­ter fo­cuses on un­der­stand­ing the var­i­ous as­pects of al­ge­braic ef­fects and han­dlers through lec­tures in Eng­lish and hands-on pro­gram­ming tasks. Stu­dents then choose a topic in con­sul­ta­tion with the course or­ga­nizer and in­de­pen­dently de­velop a soft­ware pro­ject in the sec­ond part of the se­mes­ter, ap­ply­ing their ac­quired knowl­edge in re­al­is­tic sce­nar­ios.

En­rolling

To par­tic­i­pate in this course, please send an email with [EPE] in the email sub­ject con­tain­ing your name, GitHub nick­name, stu­dent ID (Ma­trikel­num­mer), de­gree of study (Stu­di­en­gang), and field of study (Stu­di­en­fach) to Jiří Beneš
Re­searcher
Jiří Beneš
until Sun­day 27.10.2024 23:59:59.

Sched­ule

  • Dur­ing the first part of the se­mes­ter, the prac­ti­cal will take place weekly on Tues­day 12:00 c.t. in room A302 on the Sand cam­pus.
    • Bring a lap­top if pos­si­ble.
  • The first meet­ing will be sched­uled for the sec­ond week of lec­tures.
  • For more in­for­ma­tion, please refer to the course de­tails in Alma.

Pre­req­ui­sites

  • basic pro­gram­ming knowl­edge equiv­a­lent to the con­tents of “Prak­tis­che In­for­matik 1 & 2”
  • basic soft­ware en­gi­neer­ing and git knowl­edge equiv­a­lent to the con­tents of “Prak­tis­che In­for­matik 3: Soft­ware En­gi­neer­ing”

The pre­req­ui­sites men­tioned are only of a rec­om­menda­tory na­ture, though note that there is no time to learn how to work with, i.e. git and GitHub, dur­ing the prac­ti­cal.

Peo­ple