Języki formalne i techniki translacji 2020
Czwartek 915 - 1100 MS Teams wykład
Środa 1515 - 1655 TN/TP ćwiczenia (dr inż. A. Lauks-Dutka)
Piątek 1115 - 1300 TN/TP ćwiczenia (dr inż. A. Lauks-Dutka)
Poniedziałek 730 - 900 TN/TP laboratorium (mgr inż. K. Gotfryd)
Środa 1315 - 1500 TN/TP laboratorium (mgr inż. K. Gotfryd)
Czwartek 1315 - 1500 TN/TP laboratorium (mgr inż. K. Gotfryd)
Piątek 915 - 1100 TN/TP laboratorium (mgr inż. K. Gotfryd)
Kolokwium egzaminacyjne: 8 luty 2021, 915-1145, ePortal.
Poprawkowe kolokwium egzaminacyjne: 15 luty 2021, 915-1145, ePortal.
Ranking kompilatorów (miejsce w rankingu i ocena z laboratorium znajduje się na ePortalu)
Literatura
- T.A. Sudkamp, Languages and Machines, Pearson, 2006, (ISBN: 978-81-317-1475-1)
- J.E. Hopcroft, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, WNT, Warszawa 1994 (ISBN 83-01-11298-0)
- J.E. Hopcroft, R. Motwani, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, WNT, Warszawa 2005 (ISBN 83-01-14502-1)
- A.V. Aho, R. Sethi, J.D. Ullman, Kompilatory. Reguły, metody i narzędzia, WNT, Warszawa 2002, (ISBN: 83-204-2656-1)
- T.H. Cormen, Ch.E. Leiserson, R.L. Rivest, Wprowadzenie do algorytmów, WNT, Warszawa 1997 (ISBN 83-204-2144-6)
- Studia Informatyczne - Podstawy kompilatorów (http://wazniak.mimuw.edu.pl/)
Listy zadań na ćwiczenia
Listy zadań na laboratorium
Tematy wykładów (w przybliżeniu)
- Wprowadzenie do wykładu. DFA, NFA i RE. (8-10-2020)
- Równoważność DFA, NFA i RE. Minimalny DFA. (15-10-2020)
- Własności języków regularnych. Analiza leksykalna. (przykład z wykładu) (22-10-2020)
- Gramatyki bezkontekstowe. Postacie normalne Chomsky'ego i Greibach. (29-10-2020)
(kartkówka z listy nr 1: zadanie pojawi się o 915 w MS Teams w zakładce pliki i na ekranie)
- Automat ze stosem (PDA). Równoważność PDA i gramatyk bezkontekstowych. (5-11-2020)
- Własności języków bezkontekstowych. (12-11-2020)
(kartkówka z listy nr 2: zadanie pojawi się o 915 w MS Teams w zakładce pliki i na ekranie)
- Analiza składniowa. Translacja sterowana składnią. (przykłady z wykładu) (19-11-2020)
- Zależności kontekstowe. Synteza kodu i środowisko czasu wykonywania. (26-11-2020)
- Analiza zstępująca. Gramatyki typu LL(k). (3-12-2020)
(kartkówka z listy nr 3: zadanie pojawi się o 915 w MS Teams w zakładce pliki i na ekranie)
- Analiza wstępująca. Gramatyki operatorowe. Gramatyki LR(k). (10-12-2020)
- Gramatyki SLR, LR(1) i LALR. (17-12-2020)
(kartkówka z listy nr 4: zadanie pojawi się o 915 w MS Teams w zakładce pliki i na ekranie)
- Hierarchia Chomsky'ego. (7-01-2021)
- Wybrane zagadnienia języków formalnych. (14-01-2021)
- Podsumowanie wykładu. (21-01-2021)
(kartkówka z listy nr 5: zadanie pojawi się o 915 w MS Teams w zakładce pliki i na ekranie)
- Powtórne omówienie trudnych zagadnień. (28-01-2021)
Zasady zaliczenia grupy kursów
Zaliczenie ćwiczeń
- Zasadniczym celem ćwiczeń jest ułatwienie studentom samodzielnej pracy nad opanowaniem materiału w czasie całego semestru. Ocena z ćwiczeń jest oceną jakości i intensywności pracy studenta w czasie semestru.
- Wykładowca ogłasza z odpowiednim wyprzedzeniem listy zadań do samodzielnego rozwiązania przed zajęciami. Na ćwiczeniach studenci prezentują rozwiązania zadań. W trakcie rozwiązywania wyjaśniane są wątpliwości dotyczące rozwiązania oraz przedstawiane alternatywne rozwiązania.
- Podstawą do wystawienia oceny są wyniki krótkich sprawdzianów. Sprawdziany będą polegały na rozwiązaniu jednego zadania i punktowane od 0 do 5. Materiałem obowiązującym na sprawdzianie są tematy przerobione na trzech poprzednich ćwiczeniach. Sprawdziany przeprowadzane są bez uprzedniej zapowiedzi. Nieobecność na sprawdzianie daje 0.
[Z uwagi na to, że zajęcia są zdalne, kartkówki będą odbywały się na początku wykładu i będą zapowiedziane tydzień wcześniej. Szczegółowe zasady zostaną podane później.]
- Podstawą do obliczenia oceny z kursu jest średnia punktów ze sprawdzianów zaokrąglona w górę do 0.5. Średnia może być podwyższona przez prowadzącego w zależności od aktywności studenta na ćwiczeniach.
- Decyzję odnośnie wyboru zadań do rozwiązania podejmuje prowadzący.
- Dodatkowym warunkiem zaliczenia jest oddanie przez studenta w formie pisemnej (PDF) wyznaczonych zadań. Oddawane zadanie powinno być rozwiązane dokładnie, w sposób formalny i przejrzysty. Zadanie wyznacza prowadzący ćwiczenia. Zadanie oddane w ciągu tygodnia od daty wyznaczenia jest zaliczane jako aktywność studenta na ćwiczeniach. Nie oddanie zadania skutkuje obniżeniem średniej punktów z ćwiczeń o 1.
- Punktacja nie podlega poprawianiu po zakończeniu zajęć. Średnia punktów z ćwiczeń nie może przekroczyć 7.
Zaliczenie laboratorium
- Na laboratoriach studenci powinni oddawać implementacje list przygotowanych do kursu.
- Rozwiązania powinny być oddane najpóźniej na ostatnich zajęciach przed datą podaną na liście.
[Rozwiązania powinny być dostarczone prowadzącemu najpóźniej w dniu podanym na liście.]
- Oddawane rozwiązania powinny być samodzielnie napisane.
- Ostatnie zadanie (projekt kompilatora) podlega wspólnej ocenie dla całego roku według kryterium poprawności i szybkości wynikowego kodu. Oceny są przyznawane w następujący sposób: najlepsze 5 rozwiązań - ocena 5.5, rozwiązania od 6 do 10 - 5.0, od 11 do 20 - 4.5, od 21 do 30 - 4.0, od 31 do 40 - 3.5, pozostałe oddane i poprawne - 3.0.
- Nieusprawiedliwione nie oddanie w terminie listy powoduje obniżenie oceny z projektu kompilatora o 0.5 za każdy tydzień spóźnienia.
- Zaliczenie projektu kompilatora jest warunkiem koniecznym zaliczenia kursu
Zaliczenie wykładu
- Zdanie kolokwium egzaminacyjnego jest warunkiem koniecznym zaliczenia kursu.
- Kolokwium odbędzie się w sesji egzaminacyjnej (stosuje się do niego zasady egzaminu z regulaminu studiów). W przypadku pisania kolokwium w dwóch terminach za ocenę przyjmuję się ocenę z drugiego terminu (nadpisanie oceny).
- Na kolokwium jedyną dopuszczalną pomocą naukową jest kartka formatu a4 podpisana w ten sposób aby z odległości 2 metrów dało się ustalić jej właściciela. Oprócz tego student nie ma prawa mieć żadnych innych kartek, książek i innych pomocy. Kartki z treścią zadań i miejscem na rozwiązania oraz brudnopisy dostarcza wykładowca.
Ocena końcowa grupy kursów (egzamin)
Ocena końcowa (egzamin) liczona jest według wzoru 0.2*PC+0.4*OP+0.4*KE i zaokrąglana w górę do najbliższej oceny (2.5 zaokrągla się jednak do 2.0).
[PC - średnia punktów z ćwiczeń, OP - ocena z projektu, KE - ocena z kolokwium egzaminacyjnego.]