- Nazwa przedmiotu:
- Paradygmaty programowania
- Koordynator przedmiotu:
- Rajmund Kożuszek
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne
- Kod przedmiotu:
- PARP
- Semestr nominalny:
- 6 / rok ak. 2021/2022
- Liczba punktów ECTS:
- 3
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1. liczba godzin kontaktowych – 46 godz., w tym
obecność na wykładach: 15 godz.,
obecność na zajęciach laboratoryjnych: 30 godz.,
udział w konsultacjach związanych z realizacją przedmiotu: 1 godz.
2. praca własna studenta – 42 godz., w tym
analiza literatury i materiałów wykładowych związana z przygotowaniem do kolejnych wykładów: 8 godz.
wykonanie ćwiczeń przygotowawczych do laboratorium: 10 godz.
wykonanie zadania projektowego: 16 godz.
przygotowanie do kolokwium: 8 godz.
Łączny nakład pracy studenta wynosi 88 godz., co odpowiada 3 pkt. ECTS.
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 1.75 pkt. ECTS, co odpowiada 46 godz. kontaktowym
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 2 pkt. ECTS, co odpowiada 40 + 16 = 56 godz. realizacji ćwiczeń
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład15h
- Ćwiczenia0h
- Laboratorium30h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Programowanie aplikacyjne (PAP), Wprowadzenie do sztucznej inteligencji (WSI), Sztuka wytwarzania oprogramowania (SWO)
- Limit liczby studentów:
- 120
- Cel przedmiotu:
- Celem przedmiotu jest przedstawienie podstawowych paradygmatów programowania oraz pokazanie w jaki sposób mogą być one wykorzystane przy tworzeniu oprogramowania. Wskazane zostaną kluczowe różnice pomiędzy paradygmatami, obszary ich zastosowań oraz wspierające je języki programowania. Szczególna uwaga poświęcona zostanie programowaniu funkcyjnemu jako tematowi nie poruszanemu na wcześniejszym etapie studiów. Wiedza uzyskana podczas przedmiotu pozwoli studentom na dobór paradygmatu do rozwiązywanego problemu programistycznego oraz ułatwi efektywne posługiwanie się współczesnymi językami programowania. Wybrane zagadnienia będą na wykładzie prezentowane w sposób interaktywny.
- Treści kształcenia:
- WYKŁADY:
1. Wprowadzenie (2 godz.)
Informacje o przedmiocie. Regulamin przedmiotu. Ogólna klasyfikacja paradygmatów i języków programowania. Programowanie imperatywne a programowanie deklaratywne.
2. Programowanie obiektowe (2 godz.)
Programowanie obiektowe na przykładzie języka Smalltalk: klasy i obiekty, klasy jako obiekty, przekazywanie komunikatów, dziedziczenie i polimorfizm, bloki kodu, refleksja, wzorzec MVC, obrazy i maszyna wirtualna.
3. Programowanie funkcyjne (6 godz.)
Programowanie funkcyjne na przykładzie języka Haskell: funkcje czyste, funkcje rekurencyjne, funkcje wyższego rzędu, dopasowanie wzorca, funkcje anonimowe, klasy typów, funktory i monady, proste programy interaktywne, leniwe wartościowanie, wnioskowanie na temat programów.
4. Programowanie w logice (2 godz.)
Programowanie w logice na przykładzie języka Prolog: fakty i reguły, zmienne i ich ukonkretnianie, wykonywanie zapytań, listy, proste programy interaktywne.
5. Pozostałe paradygmaty (2 godz.)
Programowanie zdarzeniowe, programowanie reaktywne, programowanie aspektowe, programowanie agentowe, model aktorów.
LABORATORIA:
W trakcie zajęć laboratoryjnych studenci nabywają praktycznych umiejętności rozwiązywania problemów przy użyciu omawianych na wykładzie paradygmatów programowania. Realizują kilka mniejszych zadań w językach Smalltalk, Haskell i Prolog oraz jedno większe zadanie projektowe, w ramach którego implementują rozwiązanie korzystając z kilku paradygmatów i poznając w praktyce ich zalety i wady.
- Metody oceny:
- Realizacja przedmiotu obejmuje następujące formy zajęć:
- wykład prowadzony w wymiarze 2 godz. tygodniowo przez pierwszą część semestru; na wykładzie, oprócz użycia statycznych slajdów, przewidziane jest prezentowanie na żywo efektów działania omawianego kodu oraz aktywizacja studentów poprzez wspólne rozwiązywanie krótkich zadań,
- zajęcia laboratoryjne w wymiarze 2 godz. tygodniowo; w ramach tych zajęć student, korzystając z oprogramowania i sprzętu komputerowego, będzie realizował pod opieką prowadzącego wskazane zadania.
Sprawdzanie założonych efektów kształcenia realizowane jest przez:
ocenę wiedzy i umiejętności związanych z realizacją zadań laboratoryjnych – ocena z wybranych zadań laboratoryjnych oraz zadania projektowego;
ocenę wiedzy wykazanej na kolokwium pisemnym.
- Egzamin:
- nie
- Literatura:
- • M. Gabrielli, S. Martini, Programming Languages: Principles and Paradigms, Springer-Verlag (2010)
• M. L. Scott, Programming Language Pragmatics (fourth edition), Morgan Kaufmann (2015)
• G. Hutton, Programming in Haskell (second edition), Cambridge University Press (2016)
- Witryna www przedmiotu:
- https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INxxx-ISP-PARP
- Uwagi:
- (-)
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka W01
- zna koncepcję programowania obiektowego oraz posiada wiedzę na temat programowania w języku Smalltalk
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
W08
Powiązane charakterystyki obszarowe:
I.P6S_WG.o, III.P6S_WG, P6U_W
- Charakterystyka W02
- zna koncepcję programowania funkcyjnego oraz posiada wiedzę na temat programowania w języku Haskell
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
W08
Powiązane charakterystyki obszarowe:
P6U_W, I.P6S_WG.o, III.P6S_WG
- Charakterystyka W03
- zna koncepcję programowania w logice oraz posiada wiedzę na temat programowania w języku Prolog
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
W08
Powiązane charakterystyki obszarowe:
P6U_W, I.P6S_WG.o, III.P6S_WG
- Charakterystyka W04
- zna podstawowe różnice pomiędzy różnymi paradygmatami programowania
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
W08
Powiązane charakterystyki obszarowe:
P6U_W, I.P6S_WG.o, III.P6S_WG
Profil ogólnoakademicki - umiejętności
- Charakterystyka U01
- potrafi tworzyć proste programy w języku Smalltalk
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
U01, U04
Powiązane charakterystyki obszarowe:
P6U_U, I.P6S_UW.o, III.P6S_UW.o
- Charakterystyka U02
- potrafi tworzyć proste programy w języku Haskell
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
U01, U04
Powiązane charakterystyki obszarowe:
P6U_U, I.P6S_UW.o, III.P6S_UW.o
- Charakterystyka U03
- potrafi tworzyć proste programy w języku Prolog
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
U04, U01
Powiązane charakterystyki obszarowe:
III.P6S_UW.o, P6U_U, I.P6S_UW.o
Profil ogólnoakademicki - kompetencje społeczne
- Charakterystyka K01
- jest gotów do stałego aktualizowania i poszerzania posiadanej wiedzy
Weryfikacja: kolokwium, laboratorium
Powiązane charakterystyki kierunkowe:
K03
Powiązane charakterystyki obszarowe:
P6U_K, I.P6S_KK, I.P6S_KR