Programowanie funkcyjne 1000-2M10PF
1. Wstęp do programowania funkcyjnego: jego zalety i wady.
2. Podstawowe konstrukcje programistyczne: wyrażenia, definicje, dopasowywanie wzorców itp.
3. Funkcje: deklarowanie i wykorzystywanie funkcji; typy funkcyjne; funkcje wyższego rzędu; dowodzenie własności funkcji.
4. Typy: ich deklaracje; typy algebraiczne; rekurencyjne definicje typów; wzorce dla typów algebraicznych; indukcja strukturalna.
5. Polimorfizm: typy polimorficzne, system typów.
6. Wyjątki: mechanizmy ich deklaracji i wykorzystywania.
7. Konstrukcje imperatywne w funkcyjnym języku programowania; łączenie programowania imperatywnego i funkcyjnego.
8. Strategie ewaluacji wyrażeń; leniwa ewaluacja i jej implementacja.
9. Zastosowania leniwej ewaluacji wyrażeń: wartości odroczone, spamiętywanie, strumienie.
10. Strumieniowy paradygmat programowania.
11. Modularyzacja: struktury, sygnatury, funktory.
Wymagania Podstawy matematyki Wstęp do programowania (1000-211bWPF lub 1000-211bWPI)
Założenia dla tego przedmiotu:
Podstawy logiki i teorii mnogości.
Podstawowe konstrukcje i techniki programistyczne.
Przedmiot ten dobrze współgra z " Semantyką i weryfikacją programów", można je studiować równolegle.
Rodzaj przedmiotu
Wymagania (lista przedmiotów)
Efekty kształcenia
Wiedza:
- Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie programowania funkcyjnego i funkcyjnego paradygmatu programowania (K_W02).
- Zna podstawowe konstrukcje programistyczne oraz pojęcia składni i semantyki funkcyjnego języka programowania (K_W03).
- Ma ogólną wiedzę na temat funkcyjnego paradygmatu programowania (K_W09), w tym na temat:
- funkcji wyższych rzędów,
- niemodyfikowalnych struktur danych i odśmiecania,
- mechanizmów abstrakcji stosowanych w programowaniu funkcyjnym.
- Zna sposób obliczania programów funkcyjnych oraz wynikającej z tego złożoności czasowej i pamięciowej programów funkcyjnych (analiza ilościowa).
- Zna niezbędne funkcyjne środki wyrazu do definiowania semantyk języków programowania.
Umiejętności:
- Potrafi tworzyć średniej wielkości programy w wybranym języku funkcyjnym.
- Potrafi pisać, uruchamiać i testować średniej wielkości programy w wybranym środowisku programistycznym (K_U05).
- Umie czytać ze zrozumieniem programy zapisane w funkcyjnym języku programowania.
- Potrafi się posługiwać standardowymi funkcjami wyższego rzędu.
- Posługuje się przyjętymi formatami reprezentacji różnego rodzaju danych stosownie do sytuacji (liczby, tablice, tekst) pamiętając o ich ograniczeniach (K_U09), ze szczególnym uwzględnieniem niemodyfikowalnych struktur danych.
- Ocenia przydatność paradygmatu funkcyjnego i potrafi dobrać właściwy paradygmat programowania do różnego rodzaju problemów. (K_U20).
- Potrafi ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych oraz wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych (K_U22).
- Potrafi -- zgodnie z zadaną specyfikacją -- zaprojektować oraz zrealizować prosty system informatyczny, używając właściwych metod, technik i narzędzi (K_U23).
- Potrafi pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02).
Kompetencje:
- Zna ograniczenia własnej wiedzy i rozumie potrzebę dalszego kształcenia (K_K01).
- Rozumie konieczność systematycznej pracy nad wszelkimi projektami, które mają długofalowy charakter (K_K02).
- Potrafi samodzielnie wyszukiwać informacje w literaturze, także w językach obcych (K_K04).
- Potrafi pracować indywidualnie, w tym także potrafi zarządzać swoim czasem oraz podejmować zobowiązania i dotrzymywać terminów (K_K05).
- Umie abstrakcyjnie i twórczo myśleć, oraz wychwytywać abstrakcje powtarzających się wzorców i schematów.
Kryteria oceniania
Pierwszym warunkiem zaliczenia zajęć jest napisanie programu zaliczeniowego (na laboratorium).
Jeżeli program zostanie zaliczony przed feriami świątecznymi na ocenę >= 4,0, to możliwe jest zaliczenie przedmiotu poprzez prezentację swojego programu.
Prezentacje odbywają się na wykładach po Nowym Roku.
W przypadku później zaliczonego programu, braku prezentacji lub niesatysfakcjonującego jej wyniku, konieczne jest przystąpienie do egzaminu, na podstawie którego jest wystawiana ocena.
Literatura
H. Abelson, G. J. Sussman, Struktura i interpretacja programów komputerowych, WNT 2002.
Ch. Reade, Elements of Functional Programming, Addison-Wesley, 1993.
X. Leroy, The Objective Caml system, http://caml.inria.fr/pub/docs/manual-ocaml/index.html.
Więcej informacji
Więcej informacji o poziomie przedmiotu, roku studiów (i/lub semestrze) w którym się odbywa, o rodzaju i liczbie godzin zajęć - szukaj w planach studiów odpowiednich programów. Ten przedmiot jest związany z programami:
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: