Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Metody realizacji języków programowania

Informacje ogólne

Kod przedmiotu: 1000-217bMRJ
Kod Erasmus / ISCED: 11.304 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: Metody realizacji języków programowania
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obowiązkowe dla I roku studiów 2 stopnia na kierunku informatyka
Punkty ECTS i inne: 9.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.
Język prowadzenia: angielski
Rodzaj przedmiotu:

obowiązkowe

Założenia (opisowo):

Języki i paradygmaty programowania 1000-216bJPP

Języki, automaty i obliczenia 1000-214bJAO

Skrócony opis:

Przegląd podstawowych zagadnień i technik tworzenia interpreterów i kompilatorów dla języków programowania. Najważniejszymi tematami omawianymi na wykładzie są metody analizy semantycznej oraz generacji i optymalizacji kodu dla różnych maszyn docelowych (JVM, LLVM, asembler).

Przydatna będzie wiedza wyniesiona z przedmiotu Języki i Paradygmaty Programowania (lub równoważnego).

Absolwenci kursu powinni umieć stworzyć kompilator dla prostego języka programowania.

Pełny opis:

1. Analiza leksykalna i syntaktyczna (2 wykłady): analiza zstępująca i wstępująca; gramatyki LL(1) i konstrukcja parsera metodą zejść rekurencyjnych; gramatyki LR(k),SLR,LALR i konstrukcja automatów dla nich.

2. Analiza semantyczna (2 wykłady): tablica symboli, wiązanie nazw, kontrola typów.

3. Środowisko czasu wykonania (1-2 wykłady): struktury czasu wykonania, organizacja pamięci, realizacja podprogramów.

4. Generacja kodu: języki pośrednie – kod czwórkowy, maszyna stosowa, generacja kodu maszynowego, alokacja rejestrów.

5. Maszyna wirtualna JVM i generacja kodu dla niej.

6. Static Single Assignment i maszyna wirtualna LLVM.

7. Kod asemblera na przykładzie architektury x86.

8. Optymalizacja (2 wykłady): graf bloków prostych, analiza przepływu; alokacja rejestrów; metody ulepszania kodu: zwijanie stałych, eliminacja wspólnych podwyrażeń, eliminacja martwego kodu, optymalizacja pętli, metoda peephole.

9. Obsługa wyjątków: semantyka wyjątków, odnajdywanie bloku obsługi wyjątku, zwijanie stosu.

10. Zarządzanie pamięcią: alokacja i dealokacja pamięci; odśmiecanie: zliczanie odwołań, kopiowanie, „zaznacz i zamieć”; metody synchroniczne i asynchroniczne; konserwatywność odśmiecania.

11.Kompilacja języków funkcyjnych: specyfika; domknięcia, kombinatory i superkombinatory; redukcja grafów, metoda szablonów, G-maszyna i jej warianty; leniwe obliczenia, lambda-lifting.

Literatura:

K.Cooper, L. Torczon, Engineering a Compiler,

A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques, and Tools, 2/E (w języku polskim dostępne jest tłumaczenie poprzedniego wydania: Kompilatory. Reguły, metody i narzędzia, Wydawnictwa Naukowo-Techniczne, Warszawa 2002).

http://moodle.mimuw.edu.pl

Efekty uczenia się:

Wiedza

Zna problemy, techniki i narzędzia związane z budową kompilatorów (K_W03), w szczególności:

● ma pogłębioną wiedzę w zakresie problemów i metod analizy składniowej,

● ma pogłębioną wiedzę w zakresie problemów i metod analizy semantycznej,

● rozumie strukturę i funkcjonalność środowiska czasu wykonania,

● zna przykłady języków pośrednich i sposoby ich wykorzystania w kompilatorze,

● zna podstawowe problemy i techniki związane z generacją kodu maszynowego,

● zna metody ulepszania kodu,

● ma pogłębioną wiedzę w zakresie zarządzania pamięcią, w tym problemy i techniki odsmiecania.

Umiejętności

Potrafi zbudować kompilator dla języka programowania o średnim stopniu złożoności (K_U03).

Kompetencje

Rozumie konieczność systematycznej pracy nad wszelkimi projektami, które mają długofalowy charakter (K_K03).

Metody i kryteria oceniania:

Uwaga: może być zmienione przez informacje o zasadach w konkretnym cyklu

Egzamin 50%, laboratorium 34%, kolokwium+quizy 16%

Dla zaliczenia trzeba min 50% punktów z laboratorium oraz min. 50% z (kolokwium+quizy).

Zaliczenie jest wymagane do przystąpienia do egzaminu w pierwszym terminie. Zaliczenie nie jest wymagane do przystąpienia do egzaminu w drugim terminie, wymagane jest uzyskanie przynajmniej 33% możliwych do uzyskania punktów z laboratorium; punkty uzyskane za ćwiczenia i projekt zaliczeniowy są wliczane do oceny końcowej także w drugim terminie.

Uzyskanie 60% punktów za lab+kolokwium+quizy uprawnia do uzyskania oceny przed sesją, bez egzaminu, na podstawie tychże punktów pomnożonych przez współczynnik 1.8.

Zajęcia w cyklu "Semestr zimowy 2023/24" (zakończony)

Okres: 2023-10-01 - 2024-01-28
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Benke
Prowadzący grup: Marcin Benke, Jacek Chrząszcz, Konrad Iwanicki, Maciej Matraszek, Łukasz Sznuk, Daria Walukiewicz-Chrząszcz, Artur Zaroda
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr zimowy 2024/25" (w trakcie)

Okres: 2024-10-01 - 2025-01-26

Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Ćwiczenia, 30 godzin więcej informacji
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Marcin Benke
Prowadzący grup: Marcin Benke, Jacek Chrząszcz, Maciej Matraszek, Łukasz Sznuk, 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 mapa serwisu USOSweb 7.1.0.0-895557ea9 (2024-09-26)