Programowanie funkcyjne zima 2020/21

Język wykładowy Polski
Opiekun Zdzisław Spławski
Liczba godzin 30 (wyk.) 30 (prac.)
Rodzaj Informatyczny 1
ECTS 6
Polecany dla I roku Nie
Egzamin Tak

Opis przedmiotu:

_Do r. akad. 2016/17 Programowanie funkcyjne było przedmiotem I2.T (JP Języki programowania i logika - 100%), od r. akad. 2017/18 - I1._ Programowanie funkcyjne jest stylem programowania opartym na obliczaniu wartości wyrażeń, w przeciwieństwie do programowania imperatywnego, wykorzystującego modyfikacje stanu programu przez instrukcje. Studenci znają już ten paradygmat z przedmiotu "Metody programowania", gdzie był wykorzystywany język Scheme, w którym jest stosowana typizacja dynamiczna. Celem tego wykładu jest pogłębiona prezentacja programowania funkcyjnego. Paradygmat ten obecnie staje się bardzo popularny (również w językach imperatywnych), ponieważ wysoki poziom abstrakcji ułatwia składanie komponentów, a bezstanowość jest wykorzystywana w wysokopoziomowych mechanizmach programowania współbieżnego, które pozwalają pisać efektywne programy, wykorzystujące procesory wielordzeniowe. W trakcie wykładu będą przedstawione pojęcia i techniki programowania funkcyjnego z wykorzystaniem dwóch języków z typizacją statyczną. OCaml (język z rodziny ML) wykorzystuje ewaluację gorliwą, najpopularniejszą w implementacjach języków programowania. Pozwala też programować imperatywnie i obiektowo.  Język F# z platformy .Net jest w znacznym stopniu kompatybilny z językiem OCaml. Haskell jest czystym językiem funkcyjnym z ewaluacją leniwą. Będzie omawiany m.in. system typów z polimorfizmem parametrycznym, funkcje wyższych rzędów, rekursja ogonowa, mechanizm dopasowania do wzorca, sygnatury, struktury, funktory i monady, klasy typów, strategie ewaluacji wyrażeń. Na zajęciach w pracowni studenci będą pisali proste programy, których tematyka będzie zsynchronizowana z zagadnieniami, omawianymi na wykładzie.  Wymagania: Metody programowania Nauczanie zdalne W razie konieczności możliwe jest przejście na tryb zdalny. Materiały do wykładów będą umieszczane na SKOSie (jak zawsze), a wykład będzie prowadzony on-line z wykorzystaniem wybranej platformy. Zadania na pracownię też będą umieszczane na SKOSie (jak zwykle), rozwiązania studentów będą dostarczane za pośrednictwem SKOSa, a prowadzący zapewnią informację zwrotną. Tu również przewiduję bezpośrednią interakcję między prowadzącym i studentami.

Wykłady

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Zdzisław Spławski
zdalna
cz 16:00-18:00 (s. ) 48 66 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.

Pracownie

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Małgorzata Biernacka
zdalna
wt 10:00-12:00 (s. ) 15 14 0
Filip Sieczkowski
zdalna
wt 12:00-14:00 (s. ) 15 15 0
Maciej Buszka
zdalna
wt 18:00-20:00 (s. ) 15 14 0
Piotr Polesiuk
zdalna
śr 12:00-14:00 (s. ) 15 14 0
Zdzisław Spławski
cz 10:00-12:00 (s. 108) 12 9 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.


Konsultacje prowadzących:


Imię i nazwisko Pokój Konsultacje
Filip Sieczkowski 308 jesień '20: wtorki 14–16 lub inny umówiony (mailowo) termin
Zdzisław Spławski 340 Czwartki godz.9:00-10:00 (konieczne jest wcześniejsze uzgodnienie). Możliwe są też inne terminy po uzgodnieniu za pośrednictwem poczty elektronicznej: zs@cs.uni.wroc.pl.
Małgorzata Biernacka 348 czw. 12-14; możliwe inne terminy - proszę o kontakt mailowy
Maciej Buszka 340 Zdalne, termin ustalany emailem
Piotr Polesiuk 338 wtorek 14-16