Programowanie funkcyjne: Różnice pomiędzy wersjami
Linia 66: | Linia 66: | ||
* [[Programowanie funkcyjne/Podstawy | Podstawy języka programowania Ocaml]] ([[Programowanie funkcyjne/Podstawy/Ćwiczenia |Ćwiczenia]]) | * [[Programowanie funkcyjne/Podstawy | Podstawy języka programowania Ocaml]] ([[Programowanie funkcyjne/Podstawy/Ćwiczenia |Ćwiczenia]]) | ||
* [[Programowanie funkcyjne/Struktury danych | Podstawowe typy danych]] ([[Programowanie funkcyjne/Struktury danych/Ćwiczenia |Ćwiczenia]]) | * [[Programowanie funkcyjne/Struktury danych | Podstawowe typy danych]] ([[Programowanie funkcyjne/Struktury danych/Ćwiczenia |Ćwiczenia]]) | ||
* [[Programowanie funkcyjne/Procedury wyższych rzędów | Procedury wyższych rzędów]] ([[Programowanie funkcyjne/Procedury wyższych rzędów/Ćwiczenia |Ćwiczenia]]) | |||
* [[Programowanie funkcyjne/Model obliczeń | Model obliczeń]] ([[Programowanie funkcyjne/Model obliczeń/Ćwiczenia |Ćwiczenia]]) | * [[Programowanie funkcyjne/Model obliczeń | Model obliczeń]] ([[Programowanie funkcyjne/Model obliczeń/Ćwiczenia |Ćwiczenia]]) | ||
Wprowadzone z LaTeXa: | Wprowadzone z LaTeXa: | ||
* [[Programowanie funkcyjne/Procedury wyższych rzędów i listy | Procedury wyższych rzędów i listy]] ([[Programowanie funkcyjne/Procedury wyższych rzędów i listy/Ćwiczenia |Ćwiczenia]]) | * [[Programowanie funkcyjne/Procedury wyższych rzędów i listy | Procedury wyższych rzędów i listy]] ([[Programowanie funkcyjne/Procedury wyższych rzędów i listy/Ćwiczenia |Ćwiczenia]]) | ||
* [[Programowanie funkcyjne/Procedury jeszcze wyższych rzędów | Procedury jeszcze wyższych rzędów]] ([[Programowanie funkcyjne/Procedury jeszcze wyższych rzędów/Ćwiczenia |Ćwiczenia]]) | * [[Programowanie funkcyjne/Procedury jeszcze wyższych rzędów | Procedury jeszcze wyższych rzędów]] ([[Programowanie funkcyjne/Procedury jeszcze wyższych rzędów/Ćwiczenia |Ćwiczenia]]) |
Wersja z 18:30, 27 sie 2006
Forma zajęć
wykład (30 godz.) + laboratorium (30 godz.)
Opis
Celem przedmiotu jest przedstawienie programowania funkcyjnego – paradygmatu i stylu programowania, oraz towarzyszących mu technik programistycznych. Wykłady obejmują wprowadzenie do wybranego języka funkcyjnego (Ocaml) oraz podstawowe pojęcia i techniki programowania funkcyjnego. Laboratoria obejmują praktyczną naukę programowania funkcyjnego, zwieńczoną realizacją średniej wielkości programu.
Sylabus
Autor
- Marcin Kubica
Wymagania wstępne
- Wstęp do programowania
- Logika i teoria mnogości
Zawartość
- Podstawowe konstrukcje wybranego funkcyjnego języka programowania
- Typy danych
- Proceudry wyższych rzędów
- Model obliczeń programów funkcyjnych (uproszczona semantyka operacyjna)
- System typów dla fragmentu języka
- Moduły i funktory
- Konstrukcje imperatywne
- Uleniwianie i spamiętywanie
- Strumienie
Wytyczne dotyczące sposobu prowadzenia ćwiczeń
Kolejnym wykładom towarzyszą strony z materiałami do ćwiczeń. Na stronach tych znajdują się zadania podzielone na "prace domowe" i "ćwiczenia". W przypadku studiów internetowych, prace domowe stanowią propozycje zadań, jakie studenci mają rozwiązywać regularnie, a rozwiązania przesyłać do oceny prowadzącemu zajęcia. Zadania umieszczone jako "ćwiczenia" mają charakter uzupełniający.
W przypadku studiów stacjonarnych zarówno prace domowe jak i ćwiczenia stanowią propozycje zadań do wykorzystania w trakcie zajęć laboratoryjnych. Zadań tych jest więcej, niż można rozwiązać w trakcie standardowych 90 minut. Wybór zadań pozostawiamy w rękach prowadzących zajęcia.
Proponujemy, aby mniej więcej w połowie wykładów, gdy studenci poznają już podstawy Ocamla oraz podstawowe techniki programowania funkcyjnego, aby zaprzestać robienia prac domowych lub zadań na rzecz większego programu zaliczeniowego. Najlepiej, aby program zaliczeniowy wykorzystywał któryś z mechanizmów charakterystyczny dla programowania funkcyjnego, np. procedury wyższych rzędów, funktory czy strumienie.
Propozycje zadań egzaminacyjnych
Literatura
- H. Abelson, G. J. Sussman, Struktura i interpretacja programów komputerowych, WNT 2002.
- X. Leroy, The Objective Caml system, [1]
- E. Chailloux, P. Manoury, B. Pagano, Developing Applications with Objective Caml, [2]
- D. Rémy, Using, Understanding and Unraveling the Ocaml Language, [3]
Moduły
Tekst gotowy:
- Wstęp – porównanie programowania funkcyjnego i imperatywnego
- Podstawy języka programowania Ocaml (Ćwiczenia)
- Podstawowe typy danych (Ćwiczenia)
- Procedury wyższych rzędów (Ćwiczenia)
- Model obliczeń (Ćwiczenia)
Wprowadzone z LaTeXa:
- Procedury wyższych rzędów i listy (Ćwiczenia)
- Procedury jeszcze wyższych rzędów (Ćwiczenia)
- Moduły (Ćwiczenia)
- Funktory (Ćwiczenia)
- Programowanie imperatywne (Ćwiczenia)
- System typów (Ćwiczenia)
- Techniki uleniwiania i spamiętywania (Ćwiczenia)
- Strumienie (Ćwiczenia)
Do testów
Strony przeznaczone do tesowania: