logo
Karta przedmiotu
logo

Programowanie funkcjonalne

Podstawowe informacje o zajęciach

Cykl kształcenia: 2024/2025

Nazwa jednostki prowadzącej studia: Wydział Elektrotechniki i Informatyki

Nazwa kierunku studiów: Informatyka

Obszar kształcenia: nauki techniczne

Profil studiów: ogólnoakademicki

Poziom studiów: drugiego stopnia

Forma studiów: stacjonarne

Specjalności na kierunku: H - Cyberbezpieczeństwo i technologie chmurowe, I - Inżynieria inteligentnych systemów informatycznych, S - Systemy i sieci komputerowe

Tytuł otrzymywany po ukończeniu studiów: magister inżynier

Nazwa jednostki prowadzącej zajęcia: Katedra Informatyki i Automatyki

Kod zajęć: 1432

Status zajęć: obowiązkowy dla specjalności I - Inżynieria inteligentnych systemów informatycznych

Układ zajęć w planie studiów: sem: 1 / W30 L15 / 3 ECTS / Z

Język wykładowy: polski

Imię i nazwisko koordynatora: dr inż. Jan Sadolewski

Terminy konsultacji koordynatora: informacja na stronie KIiA: https://office.kia.prz.edu.pl

semestr 1: mgr inż. Dawid Kalandyk

Cel kształcenia i wykaz literatury

Główny cel kształcenia: Poznanie metod programowania funkcjonalnego i języka F#, podstawowe umiejętności w zakresie tworzenia funkcji rekurencyjnych.

Ogólne informacje o zajęciach: Przedstawienie nieimperatywnych metod programowania.

Materiały dydaktyczne: Instrukcje do laboratoriów, pliki z programami z wykładów

Wykaz literatury, wymaganej do zaliczenia zajęć
Literatura wykorzystywana podczas zajęć wykładowych
1 M. Hansen, H. Rischel Functional Programming Using F# Cambridge University Press. 2013
2 D. Syme, A. Granicz, A. Cisternino F# 4.0 dla zaawansowanych Helion. 2017
Literatura wykorzystywana podczas zajęć ćwiczeniowych/laboratoryjnych/innych
1 Trybus L. Podstawy programowania funkcjonalnego i weryfikacji OW PRz., Rzeszów. 2004

Wymagania wstępne w kategorii wiedzy/umiejętności/kompetencji społecznych

Wymagania formalne: Rejestracja na pierwszy semestr studiów drugiego stopnia.

Wymagania wstępne w kategorii Wiedzy: Znajomość języków imperatywnych i obiektowych. Definiowanie funkcji i nowych typów danych.

Wymagania wstępne w kategorii Umiejętności: Umiejętność realizacji algorytmów i prostych programów. Przekształcanie wyrażeń logicznych.

Wymagania wstępne w kategorii Kompetencji społecznych: Świadomość, że rozwiązywanie trudnych i skomplikowanych problemów daje większą szansę na zatrudnienie.

Efekty kształcenia dla zajęć

MEK Student, który zaliczył zajęcia Formy zajęć/metody dydaktyczne prowadzące do osiągnięcia danego efektu kształcenia Metody weryfikacji każdego z wymienionych efektów kształcenia Związki z KEK Związki z PRK
01 opisuje podstawy programowania funkcjonalnego i umie definiować nowe typy danych oraz realizować programy z użyciem funkcji rekurencyjnych, widzi korzyści ze stosowania języków funkcjonalnych wykład, laboratorium egzamin cz. praktyczna K_W01++
K_W02+++
K_W03+
K_K01+++
P7S_KK
P7S_WG
02 realizuje programy w językach funkcjonalnych w tym modeluje i testuje układy mikroprocesorowe wykład, laboratorium egzamin cz. praktyczna, obserwacja wykonania K_U01++
K_U06++
K_U10+
K_U12+
P7S_UW

Uwaga: W zależności od sytuacji epidemicznej, jeżeli nie będzie możliwości weryfikacji osiągniętych efektów uczenia się określonych w programie studiów w sposób stacjonarny w szczególności zaliczenia i egzaminy kończące określone zajęcia będą mogły się odbywać przy użyciu środków komunikacji elektronicznej (w sposób zdalny).

Treści kształcenia dla zajęć

Sem. TK Treści kształcenia Realizowane na MEK
1 TK01 Wprowadzenie do programowania funkcjonalnego. Proste typy danych. Funkcje proste, rekurencyjne, wielowariantowe. Leniwe wiązanie wartości. W01 - W02, L1 MEK01
1 TK02 Wzorce, definiowanie własnych operatorów, rekordy. Listy, wzorce list, funkcje operujące na listach. Tablice. W03 - W04, L2 MEK01
1 TK03 Typy opcjonalne, unia dyskryminacyjna, wyjątki. Model procesora ze stosem. Zbiory i mapy, jednostki miary. W05 - W06, L3 MEK01 MEK02
1 TK04 Operacje wejścia - wyjścia, wyrażenia regularne, łańcuchy, przetwarzanie plików. W07 - W08 MEK02
1 TK05 Wyrażenia lambda. W09 - W10, L6 MEK01 MEK02
1 TK06 Konstrukcje imperatywne: zmienne, referencje, pętle, klasy, moduły, integracja z platformą .NET. W11 MEK02
1 TK07 Aplikacje z interfejsem graficznym - Gtk# albo Windows.Forms. W12 MEK02
1 TK08 Sekwencje, dostęp do baz danych, kwerendy. W13 MEK02
1 TK09 Aktywne wzorce, wyrażenia obliczalne, monady, programowanie asynchroniczne. W14 MEK01 MEK02
1 TK10 Dostawcy typów. Inne konstrukcje języka F#. W15 MEK02
1 TK11 Kalkulator liczb dużych z wykorzystaniem list. L4 MEK02
1 TK12 Programowanie obiektowe w językach funkcjonalnych. L5 MEK02
1 TK13 Tworzenie kompilatorów w języku F# z użyciem FsLex i FsYacc. L7 MEK02

Nakład pracy studenta

Forma zajęć Praca przed zajęciami Udział w zajęciach Praca po zajęciach
Wykład (sem. 1) Godziny kontaktowe: 30.00 godz./sem.
Uzupełnienie/studiowanie notatek: 5.00 godz./sem.
Studiowanie zalecanej literatury: 10.00 godz./sem.
Inne: 10.00 godz./sem.
Laboratorium (sem. 1) Godziny kontaktowe: 15.00 godz./sem.
Konsultacje (sem. 1)
Zaliczenie (sem. 1) Przygotowanie do zaliczenia: 10.00 godz./sem.
Zaliczenie pisemne: 2.00 godz./sem.

Sposób wystawiania ocen składowych zajęć i oceny końcowej

Forma zajęć Sposób wystawiania oceny podsumowującej
Wykład Egzamin pisemny z umiejętności interpretacji instrukcji języka F# i pisania własnych programów.
Laboratorium Obecność na zajęciach.
Ocena końcowa Ocena z egzaminu praktycznego 80% oceny końcowej i ocena z laboratorium 20%. W rzadkich i uzasadnionych przypadkach może być podniesiona albo obniżona o maksymalnie jeden stopień.

Przykładowe zadania

Wymagane podczas egzaminu/zaliczenia
PF_egzamin.pdf

Realizowane podczas zajęć ćwiczeniowych/laboratoryjnych/projektowych
PF_laboratorium.pdf

Inne
(-)

Czy podczas egzaminu/zaliczenia student ma możliwość korzystania z materiałów pomocniczych : nie

Treści zajęć powiazane są z prowadzonymi badaniami naukowymi: tak

1 J. Sadolewski; B. Trybus Exception Handling in Programmable Controllers with Denotational Model 2023
2 J. Sadolewski; B. Trybus Compiler and virtual machine of a multiplatform control environment 2022
3 J. Sadolewski; B. Trybus Denotational Model and Implementation of Scalable Virtual Machine in CPDev 2022
4 M. Hubacz; J. Sadolewski; B. Trybus Obsługa typów danych normy PN-EN 61131-3 w architekturze ARM z ograniczeniami dostępu do pamięci 2022
5 M. Hubacz; J. Sadolewski; B. Trybus Wydajność architektury STM32 w zakresie wykonywania kodu pośredniego dla systemów sterowania 2021
6 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Implementacja środowiska inżynierskiego na przykładzie pakietu CPDev 2020
7 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Ship Autopilot Software – A Case Study 2020
8 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Aneks 5 z dnia 25.04.2019 do Umowy nr NE/01/2012 o współpracy nad rozwojem oprogramowania zawartej w dniu 28.02.2012 ( do umowy licencyjnej na CPDev z Praxis) 2019
9 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Agreement no. NR-644-5/2019 on cooperation in software development, concluded on December 3, 2019 2019
10 D. Rzońca; J. Sadolewski; A. Stec; Z. Świder; B. Trybus; L. Trybus Developing a Multiplatform Control Environment 2019