- Nazwa przedmiotu:
- Metody translacji
- Koordynator przedmiotu:
- Dr inż. Jan Bródka
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Informatyka i Systemy Informacyjne
- Grupa przedmiotów:
- Wspólne
- Kod przedmiotu:
- 1120-IN000-ISP-0363
- Semestr nominalny:
- 6 / rok ak. 2023/2024
- Liczba punktów ECTS:
- 5
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1. godziny kontaktowe – 50 h; w tym
a) obecność na wykładach – 30 h
b) obecność na ćwiczeniach – 15 h
c) konsultacje – 5 h
2. praca własna studenta – 75 h; w tym
a) przygotowanie do ćwiczeń i kolokwium końcowego – 50 h
b) zadania domowe – 25 h
Razem 125 h, co odpowiada 5 pkt. ECTS
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 1. obecność na wykładach – 30 h
2. obecność na ćwiczeniach – 15 h
3. konsultacje – 5 h
Razem 50 h, co odpowiada 2 pkt. ECTS
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 1. obecność na ćwiczeniach – 15 h
2. zadania domowe – 25 h
Razem 40 h, co odpowiada 2 pkt. ECTS
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia15h
- Laboratorium0h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Biegła znajomość więcej niż jednego języka programowania wysokiego poziomu, znajomość wyrażeń regularnych i gramatyk bezkontekstowych, znajomość podstawowych struktur danych. Przydatna znajomość języka zorientowanego maszynowo (asemblera)
Przedmioty poprzedzające: Teoria automatów i języków formalnych, Programowanie 2 – obiektowe, Programowanie 3 – zaawansowane, Algorytmy i struktury danych 1
- Limit liczby studentów:
- Ćwiczenia – 30 os/grupa
- Cel przedmiotu:
- Celem przedmiotu jest zdobycie wiedzy na temat przebiegu procesu kompilacji, zrozumienie wpływu cech języka źródłowego (wysokiego poziomu) na wydajność generowanego kodu maszynowego oraz nabycie umiejętności przetwarzania tekstów o sformalizowanej strukturze metodami stosowanymi w kompilatorach z wykorzystaniem popularnych narzędzi. Po ukończeniu kursu studenci powinni:
- znać podstawowe fazy procesu kompilacji (analiza leksykalna, składniowa i semantyczna, generowanie kodu pośredniego i docelowego, optymalizacja) i rozumieć ich znaczenie
- znać podstawy teoretyczne procesu analizy kodu źródłowego
- rozumieć wpływ różnorodnych konstrukcji języków wysokiego poziomu na wydajność generowanego na ich podstawie kodu wynikowego
- rozumieć znaczenie kodu pośredniego i znać podstawowe metody jego optymalizacji
- posiadać podstawową wiedzę na temat kodu CIL i LLVM
- umieć stosować wybrane narzędzia wspomagające analizę leksykalną i składniową
- Treści kształcenia:
- Wykład:
Ogólne pojęcia i fazy procesu kompilacji. Przegląd własności języków programowania. Modele środowiska wykonawczego. Analiza leksykalna. Analiza składniowa i gramatyki bezkontekstowe, w tym metoda zejść rekurencyjnych, analizatory LL(1), analizatory LR(1). Analiza semantyczna i gramatyki atrybutywne. Diagnostyka i obsługa błędów. Generowanie kodu pośredniego i wynikowego, na przykładzie kodu CIL i LLVM. Optymalizacja.
Ćwiczenia:
Ilustracja materiału z wykładu, przykłady użycia generatorów i narzędzi wspomagających tworzenie kompilatorów, w tym FLEX, Bison, Gardens Point, LLVM.
- Metody oceny:
- Zaliczenie odbywa się łącznie dla wykładu i ćwiczeń. Podstawą zaliczenia jest pisemne kolokwium końcowe. Dodatkowo na ocenę pozytywny wpływ mają nieobowiązkowe zadania domowe i aktywność na ćwiczeniach, a negatywny nieobecności (obecność bez aktywności jest neutralna). Studenci wykazujący się zdecydowanie ponadprzeciętną wiedzą i zaangażowaniem (aktywnością na ćwiczeniach) mogą być zwolnieni z kolokwium końcowego (każdorazowa indywidualna decyzja wykładowcy).
- Egzamin:
- nie
- Literatura:
- 1. A.V. Aho, R. Sethi, J.D. Ullman, Kompilatory: Reguły, metody, narzędzia, WNT 2002.
2. K.C. Louden, Compiler Construction: Principles and Practice, PWS 1997.
3. Dostępna w internecie dokumentacja projektów FLEX, Bison, Gardens Point, LLVM i innych.
4. Materiały z wykładów na stronie internetowej http://www.mini.pw.edu.pl/~brodka.
- Witryna www przedmiotu:
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka W01
- Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie języków i paradygmatów programowania
Weryfikacja: kolokwium końcowe
Powiązane charakterystyki kierunkowe:
K_W06
Powiązane charakterystyki obszarowe:
- Charakterystyka W02
- Zna podstawowe metody, techniki i narzędzia stosowane przy implementacji języków programowania
Weryfikacja: kolokwium końcowe
Powiązane charakterystyki kierunkowe:
K_W10
Powiązane charakterystyki obszarowe:
Profil ogólnoakademicki - umiejętności
- Charakterystyka U01
- Ma umiejętność formułowania algorytmów i ich programowania z użyciem popularnych narzędzi
Weryfikacja: kolokwium końcowe, zadania domowe
Powiązane charakterystyki kierunkowe:
K_U14
Powiązane charakterystyki obszarowe: