Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie funkcjonalne w języku Scala
Tok studiów:
2018/2019
Kod:
JIS-1-007-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Krótka charakterystyka modułu

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.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Student poznaje wariant podejścia obiektowego dostępny w j. skala. IS1A_W03 Wykonanie ćwiczeń laboratoryjnych
M_W002 Student rozumie różnicę w podejściu funkcjonalnym i imperatywnym w programowaniu. IS1A_W03 Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U001 Student potrafi zaproponować rozwiązanie problemu programistycznego w podejściu funkcjonalnym. IS1A_U03, IS1A_U04, IS1A_U06 Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Student potrafi przygotować się do wykonania zadań laboratoryjnych samodzielnie bądź z niewielkim wsparciem od prowadzącego. IS1A_U03 Wykonanie ćwiczeń laboratoryjnych
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
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. + - + - - - - - - - -
Umiejętności
M_U001 Student potrafi zaproponować rozwiązanie problemu programistycznego w podejściu funkcjonalnym. - - + - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi przygotować się do wykonania zadań laboratoryjnych samodzielnie bądź z niewielkim wsparciem od prowadzącego. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  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.

Ćwiczenia laboratoryjne:
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.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 90 godz
Punkty ECTS za moduł 3 ECTS
Udział w ćwiczeniach laboratoryjnych 30 godz
Dodatkowe godziny kontaktowe z nauczycielem 2 godz
Udział w wykładach 30 godz
Przygotowanie do zajęć 30 godz
Samodzielne studiowanie tematyki zajęć -2 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

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ł.

Wymagania wstępne i dodatkowe:

Nie podano wymagań wstępnych lub dodatkowych.

Zalecana literatura i pomoce naukowe:

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.

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak