Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Języki i paradygmaty programowania

Informacje ogólne

Kod przedmiotu: 1000-216bJPP
Kod Erasmus / ISCED: 11.303 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (0612) Database and network design and administration Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Języki i paradygmaty programowania
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla III roku informatyki
Przedmioty obowiązkowe dla III roku JSIM - wariant 3I+4M
Przedmioty obowiązkowe dla IV roku JSIM - wariant 3M+4I
Punkty ECTS i inne: 8.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: polski
Rodzaj przedmiotu:

obowiązkowe

Wymagania (lista przedmiotów):

Języki, automaty i obliczenia 1000-214bJAO
Programowanie obiektowe 1000-212bPO
Wstęp do programowania 1000-211bWPI

Skrócony opis:

Najistotniejsze paradygmaty pojawiające się we współczesnym programowaniu: programowanie funkcyjne,

imperatywne, obiektowe, programowanie w logice. Kurs pozwala spojrzeć szerzej na programowanie, a w

szczególności pogłębić znajomość języków programowania i zrozumieć podstawowe zagadnienia implementacyjne.

Pełny opis:

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

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

Efekty uczenia się:

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]

Metody i 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.

Zajęcia w cyklu "Semestr letni 2023/24" (w trakcie)

Okres: 2024-02-19 - 2024-06-16
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 60 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Benke
Prowadzący grup: Marcin Benke, Jacek Chrząszcz, Tomasz Gogacz, Mirosława Miłkowska, Michał Skrzypczak, Daria Walukiewicz-Chrząszcz, Artur Zaroda
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
ul. Banacha 2
02-097 Warszawa
tel: +48 22 55 44 214 https://www.mimuw.edu.pl/
kontakt deklaracja dostępności USOSweb 7.0.2.0-80474ed05 (2024-03-12)