Module also offered within study programmes:
General information:
Name:
Functional programming in Scala
Course of study:
2018/2019
Code:
JIS-1-007-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Academic teachers:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Module summary

The course introduces students to the functional programming. In the lectures and lab. classes the functional and oo aspects, as well as their coexistence in Scala are presented.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Student potrafi przygotować się do wykonania zadań laboratoryjnych samodzielnie bądź z niewielkim wsparciem od prowadzącego. IS1A_U03 Execution of laboratory classes
Skills
M_U001 Student potrafi zaproponować rozwiązanie problemu programistycznego w podejściu funkcjonalnym. IS1A_U03, IS1A_U04, IS1A_U06 Execution of laboratory classes
Knowledge
M_W001 Student poznaje wariant podejścia obiektowego dostępny w j. skala. IS1A_W03 Execution of laboratory classes
M_W002 Student rozumie różnicę w podejściu funkcjonalnym i imperatywnym w programowaniu. IS1A_W03 Execution of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
M_K001 Student potrafi przygotować się do wykonania zadań laboratoryjnych samodzielnie bądź z niewielkim wsparciem od prowadzącego. - - + - - - - - - - -
Skills
M_U001 Student potrafi zaproponować rozwiązanie problemu programistycznego w podejściu funkcjonalnym. - - + - - - - - - - -
Knowledge
M_W001 Student poznaje wariant podejścia obiektowego dostępny w j. skala. + - + - - - - - - - -
M_W002 Student rozumie różnicę w podejściu funkcjonalnym i imperatywnym w programowaniu. + - + - - - - - - - -
Module content
Lectures:
  1. Programowanie funkcjonalne

    Wstęp. Idiomy programowania funkcjonalnego/funkcyjnego.

  2. Struktury danych i instrukcje sterujące języka

    Eksperymentowanie, REPL, skrypty i kompilacja. Elementarne typy danych, tablice i listy. Instrukcje sterujące.

  3. Funkcje

    Składnia definicji funkcji. Funkcje anonimowe, zagnieżdżone i wyższego rzędu. Nazwane parametry.

  4. Rozszerzanie składni języka

    Dodawanie instrukcji sterujących do języka poprzez funkcje.

  5. Obiektowość w Scali – wstęp

    Klasy. Obiekty/singletony stowarzyszone. Ślady i mieszanie.

  6. Kolekcje

    Typy kolekcji. Kolekcje stałe i modyfikowalne.

  7. Obiektowość w Scali – polimorfizm.

    Metody polimorficzne i ograniczenia typów.

  8. Klasy przypadków, ekstraktory

    Klasy przypadków. Dopasowanie wzorców. Wyrażenia regularne.

  9. Programownie ogólne

    Klasy ogólne. Adnotacje parametrów. Typy abstrakcyjne.

  10. Biblioteka standardowa scali

    Moduły. Przegląd składników biblioteki.

  11. Biblioteka standardowa scali – współpraca z Javą

    Używanie elementów języka Java w programach scali i sytuacja odwrotna.

  12. Programy równoległe

    Problemy występujące przy programowaniu współbieżnym.
    “Współbieżne” kolekcje. Biblioteka aktorów.

  13. Adnotacje, wyjątki.

    Składnia adnotacji. Przetwarzanie adnotacji. Obsługa wyjątków w Scala. Wyniki opcjonalne.

  14. Podsumowanie i powtórzenie

    Podejście funkcjonalne.
    Podejście obiektowe.
    Podejście generyczne.

Laboratory classes:
Tematy laboratoriów zgodne z tematami wykładów.

Na laboratoriach student na wstępie będzie rozwiązywał problem sprawdzające przyswojenie podstawowych informacji z poprzedniego wykładu. Najczęściej będzie to polegać na napisaniu bądź dokończeniu prostego programu. Za poprawne wykonanie tego zadanie student otrzymuje 6 pkt. Mniej jeśli program działa błędnie lub jest rozwiązany niezgodnie z zaleceniami. np. jeśli w założeniu należy użyć danej konstrukcji. W przypadku gdy program się nie kompiluje student otrzymuje 0 pkt. Takie zadanie zajmie ok 30 minut laboratorium. Pozostałą część wypełni próba rozwiązania bardziej złożonego programu. Oceniany będzie stopień zaawansowania na koniec laboratoriów na maksymalnie 4 pkt. Dokończenie zadanie będzie jednocześnie zadaniem domowym (nie podlegające ocenie jednak można się spodziewać jego kontynuacji na laboratoriach).
Obecność na wykładzie jest nieobowiązkowa.
Na laboratorium dozwolone są dwie nieobecności nieusprawiedliwione, ocena z takich laboratoriów to 0 pkt. Dłuższa nieusprawiedliwiona nieobecność skutkuje brakiem zaliczenia. Dłuższe usprawiedliwione nieobecności (jednak nie więcej niż 5) trzeba nadrobić wykonując projekt.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 90 h
Module ECTS credits 3 ECTS
Participation in laboratory classes 30 h
Contact hours 2 h
Participation in lectures 30 h
Preparation for classes 30 h
Realization of independently performed tasks -2 h
Additional information
Method of calculating the final grade:

Ocena z przedmiotu jest w całości oceną z laboratoriów.
Sposób i tryb wyrównania zaległości powstałych wskutek usprawiedliwionych nieobecności
studenta na zajęciach:
- student wykonuje projekt pokrywający zakresem zajęcia, w których nie uczestniczył.

Prerequisites and additional requirements:

Prerequisites and additional requirements not specified

Recommended literature and teaching resources:

Strona internetowa: http://www.scala-lang.org/
Książka dostępna w internecie: https://www.artima.com/pins1ed/
Scala od podszewki : poznaj i wykorzystaj potęgę programowania funkcyjnego! / Joshua Suereth D.

Scientific publications of module course instructors related to the topic of the module:

Additional scientific publications not specified

Additional information:

None