Języki i paradygmaty programowania 1000-216bJPP
1. Modele obliczeń i paradygmaty programowania.
2. Programowanie funkcyjne.
- podstawy paradygmatu funkcyjnego, rachunek lambda
- język programowania Haskell
- funkcje, typy, klasy typów
- funkcje polimorficzne i wyższego rzędu
- funktory
3. Programowanie imperatywne.
- I/O i inne rodzaje efektów
- funktory aplikatywne
- monady
- transformatory monad
4. Typy, kontrola typów.
5. Semantyka języków programowania, interpretery i kompilatory.
6. Programowanie w logice.
- logika pierwszego rzędu: teorie i modele
- klauzule Horna i rezolucja
- język programowania Prolog
7. Programowanie obiektowe.
- język programowania Smalltalk i jego biblioteka standardowa
8. Programowanie współbieżne i Erlang
Rodzaj przedmiotu
Wymagania (lista przedmiotów)
Koordynatorzy przedmiotu
Efekty kształcenia
Wiedza: absolwent zna i rozumie
* ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie programowania, algorytmów i złożoności,
architektury systemów komputerowych, systemów operacyjnych, technologii sieciowych, języków i paradygmatów
programowania, baz danych, inżynierii oprogramowania [K_W02],
* ogólną wiedzę na temat różnych paradygmatów programowania i języków programowania (imperatywny, obiektowy,
funkcyjny, logiczny, skryptowy, maszyna wirtualna, podstawy translacji, deklaracje i typy, odśmiecanie, mechanizmy
abstrakcji); szczegółowo zna metody projektowania i programowania obiektowego (kapsułkowanie i ukrywanie
informacji, klasy i podklasy, dziedziczenie, polimorfizm, hierarchie klas) [K_W09].
Umiejętności: absolwent 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],
* pisać, uruchamiać i testować programy w wybranym środowisku programistycznym [K_U05],
* samodzielnie planować i realizować własne uczenie się przez całe życie [K_U09],
* oceniać przydatność różnych paradygmatów i związanych z nimi środowisk programistycznych do rozwiązywania
różnego typu problemów [K_U16],
* umie stworzyć interpreter prostego języka programowania [K_U28],
* planować i organizować pracę indywidualnie i w zespole, także o charakterze interdyscyplinarnym; zarządzać swoim
czasem oraz podejmować zobowiązania i dotrzymywać terminów [K_U29].
Kompetencje społeczne: absolwent jest gotów do
* pracy z zachowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki
zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka [K_K02],
* uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania
informacji w literaturze oraz zasięgania opinii ekspertów [K_K03]
Kryteria oceniania
Ocena końcowa na podstawie punktów z egzaminu pisemnego i programów zaliczeniowych.
Dla zaliczenia laboratorium trzeba oddać wszystkie programy w terminie i uzyskać z nich min 60% punktów.
Zaliczenie jest wymagane do przystapienia do egzaminu w pierwszym terminie. Zaliczenie nie jest wymagane do przystapienia do egzaminu w drugim terminie, tym niemniej punkty uzyskane za laboratorium są wliczane do oceny końcowej.
Literatura
1. R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall, 1988
2. A. Goldberg, D. Robson. Smalltalk-80 : the language and its implementation, Addison-Wesley, 1983.
3. U. Nilsson, J. Małuszyński, Logic, Programming and Prolog, John Wiley & Sons, 1995
4. B. C. Pierce, Types and Programming Languages, The MIT Press 2002
5. J. Reynolds, Theories of Programming Languages, Cambridge University Press, 1998
6. R. Sebesta, Concepts of Programming Languages, Addison Wesley, 2005
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: