Wydział Informatyki - Informatyka (S1)
specjalność: Inżynieria systemów informacyjnych
Sylabus przedmiotu Kompilatory:
Informacje podstawowe
Kierunek studiów | Informatyka | ||
---|---|---|---|
Forma studiów | studia stacjonarne | Poziom | pierwszego stopnia |
Tytuł zawodowy absolwenta | inżynier | ||
Obszary studiów | charakterystyki PRK, kompetencje inżynierskie PRK | ||
Profil | ogólnoakademicki | ||
Moduł | — | ||
Przedmiot | Kompilatory | ||
Specjalność | Inżynieria oprogramowania | ||
Jednostka prowadząca | Katedra Inżynierii Oprogramowania | ||
Nauczyciel odpowiedzialny | Włodzimierz Bielecki <Wlodzimierz.Bielecki@zut.edu.pl> | ||
Inni nauczyciele | Piotr Błaszyński <Piotr.Blaszynski@zut.edu.pl> | ||
ECTS (planowane) | 4,0 | ECTS (formy) | 4,0 |
Forma zaliczenia | zaliczenie | Język | polski |
Blok obieralny | 5 | Grupa obieralna | 1 |
Formy dydaktyczne
Wymagania wstępne
KOD | Wymaganie wstępne |
---|---|
W-1 | Programowanie 2 |
W-2 | Algorytmy 2 |
W-3 | Architektura systemów komputerowych |
Cele przedmiotu
KOD | Cel modułu/przedmiotu |
---|---|
C-1 | Ukształtowanie wiedzy i umiejętności niezbędnych do opracowania kompilatora dla komputera sekwencyjnego o prostej architekturze |
C-2 | Ukształtowanie świadomego rozumowania dokształcania się i odpowiedzialności za wspólne realizowanie projektów w zakresie tworzenia kompilatorów |
Treści programowe z podziałem na formy zajęć
KOD | Treść programowa | Godziny |
---|---|---|
laboratoria | ||
T-L-1 | Definiowanie języka | 3 |
T-L-2 | Implementacja analizatora leksykalnego przy pomocy narzędzia FLEX | 4 |
T-L-3 | Implementacja analizatora składniowego przy pomocy narzędzia BISON | 4 |
T-L-4 | Proste akcje semantyczne | 2 |
T-L-5 | Implementacja generatora kodu dla wyrażeń arytmetycznych (z wykorzystaniem ONP) | 3 |
T-L-6 | Generacja kodu dla instrukcji warunkowych i pętli | 4 |
T-L-7 | Metody implementacji korzystania z tablic jedno- i wielowymiarowych | 3 |
T-L-8 | Implementacja generatora kodu dla różnych typów danych | 3 |
T-L-9 | Implementacja wywołań funkcji (na lepsze oceny) | 2 |
T-L-10 | Implementacja struktur (na lepsze oceny) | 2 |
30 | ||
wykłady | ||
T-W-1 | Definicja translatora, kompilatora, interpretera Fazy kompilacji Struktura przodu kompilatora Struktura tylnej części kompilatora Definicja produkcji Definicja epsilon-produkcji | 2 |
T-W-2 | Łączność operatorów Definicja gramatyki Gramatyki bezkontekstowe Gramatyki niejednocznaczne Definicja języka Drzewa wyprowadzeń Priorytety operatorów a odpowiednia gramatyka | 2 |
T-W-3 | Translacja sterowana składnią Definicja sterowana składnią Atrybuty syntezowane Przechodzenie drzewa w głąb Schemat translacji Składnia abstrakcyjna i składnia konkretna Translator dla prostych wyrażeń | 2 |
T-W-4 | Proste metody analizy leksykalnej: usuwanie znaków odstępu I komentarzy, rozpoznanie identyfikatorów i słów kluczowych Prosty analizator leksykalny Implementacja tablicy symboli L-wartości i R-wartości Translacja wyrażeń z zastosowaniem stosu | 2 |
T-W-5 | Symbole leksykalne, wzorce, leksemy Leksemy i tokeny Atrybuty symboli leksykalnych Błędy leksykalne Buforowanie w analizie leksykalnej Napisy i języki Operacje na językach | 2 |
T-W-6 | Wyrażenia regularne Definicje regularne Skróty notacyjne w wyrażeniach regularnych Rozpoznanie symboli leksykalnych Diagramy przejść Tworzenie analizatora leksykalnego przy użyciu Leksa Specyfikacja dla Leksa Automaty skończone: deterministyczne i niedeterministyczne | 2 |
T-W-7 | Parsowanie zstępujące Zastosowanie ε-produkcji w parsowaniu zstępującym Parsowanie przewidujące Definicja zbioru FIRST i jego zastosowanie w parsowaniu przewidującym Rekurencja lewostronna Wyeliminowanie rekurencji lewostronnej Pseudokod parsowania przewidującego Projektowanie parsera przewidującego | 2 |
T-W-8 | Miejsce analizatora składniowego w kompilatorze Wyprowadzenie, typy wyprowadzeń Drzewo wyprowadzeń Budowa tablic przewidujących Obliczenie zbiór FIRST Obliczenie zbioru FOLLOW Gramatyką LL(1) | 2 |
T-W-9 | Analiza wstępująca Redukcja Parsowanie shift-reduce Zastosowanie stosu Klasyfikacja gramatyk | 2 |
T-W-10 | Gramatyka LR(1) Gramatyka LR(k) Konflikty w parserach LR(k) Akcje parsera LR(1) Architektura parsera LL(1) i sposób jego działania | 2 |
T-W-11 | Narzędzie YACC Tworzenie pliku specyfikacji Akcje semantyczne Rozwiązywanie konfliktów reduce/reduce Rozwiązywanie konfliktów shift/reduce | 2 |
T-W-12 | Analiza semantyczna Cele analizy semantycznej Rodzaje kontroli Przykłady błędów na etapie analizy semantycznej Zakresy zmiennych, zasięgi nazw | 2 |
T-W-13 | Składnia abstrakcyjna i konkretna Drzewa konkretne i abstrakcyjne Zasady tworzenia prostego translatora: kolejność czynności niezbędnych do utworzenia prostego translatora. Dostosowanie schematu translacji na notację polską Pseudokod translacji na notację polską Translator w języku Java Translator W języku C Translator w oparciu o Lex i Yacc | 2 |
T-W-14 | Generacja kodu maszynowego MIPS 1, symulator SPIM Język Asembler Rejestry MIPS i ich zastosowanie Operatory porównania Instrukcje skoków | 2 |
T-W-15 | Generacja kodu maszynowego MIPS 2, symulator SPIM Generowanie kodu dla deklaracji Generowanie kodu dla wyrażeń Generowanie kodu dla instrukcji sterujących Wywołanie procedur Tablice Wejście/wyjście | 2 |
30 |
Obciążenie pracą studenta - formy aktywności
KOD | Forma aktywności | Godziny |
---|---|---|
laboratoria | ||
A-L-1 | uczestnictwo w zajęciach | 30 |
A-L-2 | przygotowanie do laboratoriów | 20 |
50 | ||
wykłady | ||
A-W-1 | uczestnictwo w zajęciach | 30 |
A-W-2 | Przygotowanie do zaliczenia | 18 |
A-W-3 | Konsultacje | 2 |
50 |
Metody nauczania / narzędzia dydaktyczne
KOD | Metoda nauczania / narzędzie dydaktyczne |
---|---|
M-1 | Wykład informacyjny/konwersatoryjny |
M-2 | Ćwiczenia laboratoryjne |
Sposoby oceny
KOD | Sposób oceny |
---|---|
S-1 | Ocena formująca: Ocena stopnia wykonywania zadań praktycznych pod koniec każdych laboratoriów |
S-2 | Ocena podsumowująca: Zaliczenie końcowe poprzez sprawdzenie efektów kształcenia: przedstawienie pytań i ocena odpowiedzi |
Zamierzone efekty uczenia się - wiedza
Zamierzone efekty uczenia się | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_D02.07.1_W01 ma wiedzę w zakresie algorytmów projektowania kompilatorów | I_1A_W02 | — | — | C-2, C-1 | T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-W-5, T-W-1, T-W-2, T-W-3, T-W-4, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10, T-W-11, T-W-12, T-W-13, T-W-14, T-W-15 | M-1, M-2 | S-1, S-2 |
I_1A_D02.07.1_W02 zna narzędzia do tworzenia kompilatorów | I_1A_W02 | — | — | C-2, C-1 | T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-W-5, T-W-1, T-W-2, T-W-3, T-W-4, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10, T-W-11, T-W-12, T-W-13, T-W-14, T-W-15 | M-1, M-2 | S-1 |
Zamierzone efekty uczenia się - umiejętności
Zamierzone efekty uczenia się | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_D02.07.1_U01 potrafi w zakresie podstawowym projektować, implementować i testować kompilatory i translatory | I_1A_U06, I_1A_U09 | — | — | C-2, C-1 | T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-W-14, T-W-15 | M-1, M-2 | S-1, S-2 |
I_1A_D02.07.1_U02 Potrafi aktywnie uczestniczyć w pracach projektowych zespołowych i indywidualnych dotyczących wytwarzania kompilatorów i translatorów | I_1A_U06, I_1A_U09 | — | — | C-2, C-1 | T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-W-14, T-W-15 | M-2 | S-1 |
Zamierzone efekty uczenia się - inne kompetencje społeczne i personalne
Zamierzone efekty uczenia się | Odniesienie do efektów kształcenia dla kierunku studiów | Odniesienie do efektów zdefiniowanych dla obszaru kształcenia | Odniesienie do efektów uczenia się prowadzących do uzyskania tytułu zawodowego inżyniera | Cel przedmiotu | Treści programowe | Metody nauczania | Sposób oceny |
---|---|---|---|---|---|---|---|
I_1A_D02.07.1_K01 świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | I_1A_K02 | — | — | C-2, C-1 | T-L-1, T-L-2, T-L-3, T-L-4, T-L-5, T-L-6, T-L-7, T-L-8, T-L-9, T-L-10, T-W-5, T-W-1, T-W-2, T-W-3, T-W-4, T-W-6, T-W-7, T-W-8, T-W-9, T-W-10, T-W-11, T-W-12, T-W-13, T-W-14, T-W-15 | M-1, M-2 | S-1 |
Kryterium oceny - wiedza
Efekt uczenia się | Ocena | Kryterium oceny |
---|---|---|
I_1A_D02.07.1_W01 ma wiedzę w zakresie algorytmów projektowania kompilatorów | 2,0 | nie zna podstawowych metod projektowania kompilatorów |
3,0 | zna podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
3,5 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz rozumie potrzebę projektowania kompilatorów na ogólnym poziomie | |
4,0 | zna szczegółowo podstawowe metody projektowania kompilatorów oraz wie jak zastosować je do projektowania prostych kompilatorów | |
4,5 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów | |
5,0 | zna szczegółowo zaawansowane metody projektowania kompilatorów oraz wie jak zastosować je do projektowania kompilatorów, oraz potrafi udowodnić i uzasadnić swoją wypowiedż | |
I_1A_D02.07.1_W02 zna narzędzia do tworzenia kompilatorów | 2,0 | nie ma więdzy o narzędziach do analizy leksykalnej i syntaktycznej |
3,0 | ma podstawową więdzę o narzędziach do analizy leksykalnej i syntaktycznej | |
3,5 | ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych | |
4,0 | ma wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych | |
4,5 | ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych | |
5,0 | ma szczegółową wiedzę o narzedziu LEX do projektowania analizatorów leksykalnych oraz narzędziu YACC do projektowania analizatorów składniowych oraz wie jak zastosować wiedze do projektowania analizatorów leksykalnych i składniowych |
Kryterium oceny - umiejętności
Efekt uczenia się | Ocena | Kryterium oceny |
---|---|---|
I_1A_D02.07.1_U01 potrafi w zakresie podstawowym projektować, implementować i testować kompilatory i translatory | 2,0 | nie potrafi zaimplementować prostego kompilatora przekładającego podstawowe wyrażenia arytmetyczne na kod maszynowy. |
3,0 | potrafi zaimplementować bardzo prosty kompilator przekładający podstawowe wyrażenia arytmetyczne operujące na podstawowych typach danych (całkowite i zmiennoprzecinkowe) na kod maszynowy, jest w stanie zaimplementować obsługę instrukcji warunkowych bez zagnieżdżeń. | |
3,5 | potrafi wszystko to co na ocenę 3,0 oraz potrafi zastosować zasady dotyczące implementacji instrukcji warunkowych dla zagnieżdżonych konstrukcji. | |
4,0 | potrafi wszystko to co na ocenę 3,5 oraz potrafi przeanalizować powstały kod maszynowy w celu minimalizacji liczby skoków przy złożonych instrukcjach warunkowych. Potrafi również zaimplementować kompilację konstrukcji pętli i tablic jednowymiarowych. | |
4,5 | potrafi syntezować pozyskane umiejętności w kompletny kompilator generujący kod z wykorzystaniem konstrukcji wymaganych na niższe oceny oraz dodatkowo tablic wielowymiarowych. | |
5,0 | potrafi ocenić kompilator generujący kod z wykorzystaniem konstrukcji wymaganych na niższe oceny oraz zaproponować i wykonać dodatkowe funkcjonalności (np. obsługę funkcji, generowanie kodu dla architektury 64-bitowej) | |
I_1A_D02.07.1_U02 Potrafi aktywnie uczestniczyć w pracach projektowych zespołowych i indywidualnych dotyczących wytwarzania kompilatorów i translatorów | 2,0 | nie jest w stanie uczestniczyć w pracach zespołu przygotowującym projekt języka i kompilatora |
3,0 | potrafi uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
3,5 | potrafi aktywnie uczestniczyć w zespole przygotowującym projekt języka i kompilatora | |
4,0 | potrafi aktywnie uczestniczyć w zespole przygotowującym projekt języka i kompilatora oraz analizować proponowane rozwiązania | |
4,5 | wymagania na ocene 4.0 oraz potrafi dodawać istotne propozycje w realizowanym projekcie | |
5,0 | wymagania na ocene 4.5 oraz potrafi wyjaśnić innym studentom w zespole zagadnienia dotyczące budowy kompilatora |
Kryterium oceny - inne kompetencje społeczne i personalne
Efekt uczenia się | Ocena | Kryterium oceny |
---|---|---|
I_1A_D02.07.1_K01 świadomie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | 2,0 | nie rozumie potrzeby dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów |
3,0 | rozumie potrzebę dokształcania i dzielenia się wiedzą w zakresie metod i narzędzi do tworzenia kompilatorów | |
3,5 | jest w stanie zaprezentować w pełni zaimplementowane rozwiązanie | |
4,0 | jest w stanie zaprezentować w pełni i przedyskutować z prowadzącym zaimplementowane rozwiązanie | |
4,5 | na bazie kompetencji wymaganych na niższe oceny jest w stanie podzielić się wiedzą w usystematyzowany sposób z grupą | |
5,0 | na bazie kompetencji wymaganych na niższe oceny jest w stanie przygotować i zaprezentować własne propozycje w zakresie metod i narzędzi do tworzenia kompilatorów |
Literatura podstawowa
- Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Kompilatory, Reguły, Metody i Narzędzia, WNT, Warszawa, 2002
- Aho and al., Compilers: Principles, Techniques, and Tools, Addison Wesley, Boston, 2007
Literatura dodatkowa
- R. Wilhelm, D. Maurer, Compiler Design, Addison-Wesley, Boston, 1995