logo
Karta przedmiotu
logo

Budowa języków programowania i kompilatorów

Podstawowe informacje o zajęciach

Cykl kształcenia: 2024/2025

Nazwa jednostki prowadzącej studia: Wydział Elektrotechniki i Informatyki

Nazwa kierunku studiów: Informatyka

Obszar kształcenia: nauki techniczne

Profil studiów: ogólnoakademicki

Poziom studiów: drugiego stopnia

Forma studiów: stacjonarne

Specjalności na kierunku: H - Cyberbezpieczeństwo i technologie chmurowe, I - Inżynieria inteligentnych systemów informatycznych, S - Systemy i sieci komputerowe

Tytuł otrzymywany po ukończeniu studiów: magister inżynier

Nazwa jednostki prowadzącej zajęcia: Katedra Informatyki i Automatyki

Kod zajęć: 15968

Status zajęć: wybierany dla specjalności I - Inżynieria inteligentnych systemów informatycznych

Układ zajęć w planie studiów: sem: 3 / W30 L15 / 3 ECTS / E

Język wykładowy: polski

Imię i nazwisko koordynatora: dr inż. Jan Sadolewski

Cel kształcenia i wykaz literatury

Główny cel kształcenia: Nabycie umiejętności realizacji analizatorów, kompilatorów i interpreterów języków programowania.

Ogólne informacje o zajęciach: Moduł przedstawia etapy tworzenia kompilatora. Rozpoczynając od semantyki denotacyjnej, przez reguły gramatyki analizatorów leksykalnego i składniowego z drzewami składni abstrakcyjnej po optymalizator i generator kodu.

Materiały dydaktyczne: materialy.kia.prz.edu.pl

Inne: Dokumentacja techniczna do wykorzystywanych narzędzi

Wykaz literatury, wymaganej do zaliczenia zajęć
Literatura wykorzystywana podczas zajęć wykładowych
1 Aho A., Ullman J., Lam M., Ravi S. Kompilatory: reguły, metody, narzędzia wyd.2, Warszawa, PWN. 2019
2 Dembiński P., Małuszyński J. Matematyczne metody definiowania języków programowania Warszawa, WNT. 1981
3 Gordon, M.J.C. Denotacyjny opis języków programowania Warszawa, WNT. 1983

Wymagania wstępne w kategorii wiedzy/umiejętności/kompetencji społecznych

Wymagania formalne: Student zapisany na trzeci semestr studiów drugiego stopnia na kierunku informatyka.

Wymagania wstępne w kategorii Wiedzy: Znajomość paradygmatu imperatywnego i popularnych języków programowania takich jak C, C#, Java. Znajomość paradygmatu funkcjonalnego i języków programowania takich jak F#, ML, Haskell.

Wymagania wstępne w kategorii Umiejętności: Umiejętność posługiwania się komputerem i kompilatorami.

Wymagania wstępne w kategorii Kompetencji społecznych: Uczciwość, umiejętność pracy w zespole, świadomość funkcjonowania społeczeństwa.

Efekty kształcenia dla zajęć

MEK Student, który zaliczył zajęcia Formy zajęć/metody dydaktyczne prowadzące do osiągnięcia danego efektu kształcenia Metody weryfikacji każdego z wymienionych efektów kształcenia Związki z KEK Związki z PRK
01 zna teoretyczne podstawy budowy kompilatorów wykład, laboratorium zaliczenie cz. pisemna K_K02++
K_K06+
P7S_KO
P7S_KR
02 umie wykorzystać istniejące narzędzia do budowania kompilatorów i analizatorów tekstu wykład, laboratorium zaliczenie cz. pisemna, obserwacja wykonawstwa K_W04+++
K_U09+++
K_U13+
P7S_UW
P7S_WG

Uwaga: W zależności od sytuacji epidemicznej, jeżeli nie będzie możliwości weryfikacji osiągniętych efektów uczenia się określonych w programie studiów w sposób stacjonarny w szczególności zaliczenia i egzaminy kończące określone zajęcia będą mogły się odbywać przy użyciu środków komunikacji elektronicznej (w sposób zdalny).

Treści kształcenia dla zajęć

Sem. TK Treści kształcenia Realizowane na MEK
3 TK01 Semantyka denotacyjna języków programowania. W01-W04, L1-L2 MEK01
3 TK02 Wprowadzenie do kompilacji. Analiza leksykalna. Analiza semantyczna. W05-W06,L03 MEK01
3 TK03 Generowanie kodu pośredniego. W07, L04 MEK01
3 TK04 Optymalizacja kodu. W08, L04 MEK01
3 TK05 Generowanie kodu docelowej architektury. W09, L05 MEK01
3 TK06 Narzędzia do tworzenia kompilatorów W10-W11 MEK02
3 TK07 Stosowanie narzędzi FsLex i FsYacc, FParsec. W12-W13, L06 MEK02
3 TK08 Wykorzystanie ANTLR, Flex i Bison. W14-W15, L06 MEK02

Nakład pracy studenta

Forma zajęć Praca przed zajęciami Udział w zajęciach Praca po zajęciach
Wykład (sem. 3) Godziny kontaktowe: 30.00 godz./sem.
Studiowanie zalecanej literatury: 10.00 godz./sem.
Inne: 20.00 godz./sem.
Laboratorium (sem. 3) Godziny kontaktowe: 15.00 godz./sem.
Dokończenia/wykonanie sprawozdania: 1.00 godz./sem.
Konsultacje (sem. 3)
Egzamin (sem. 3) Przygotowanie do egzaminu: 5.00 godz./sem.
Egzamin pisemny: 2.00 godz./sem.

Sposób wystawiania ocen składowych zajęć i oceny końcowej

Forma zajęć Sposób wystawiania oceny podsumowującej
Wykład Zaliczenie pisemne obejmujące wiedzę teoretyczną i praktyczną.
Laboratorium Sprawdzenie pisemne umiejętności praktycznych i uzyskanych kompetencji.
Ocena końcowa Składa się w 70% z oceny wykładu i 30% oceny laboratorium. W wyjątkowych i uzasadnionych przypadkach może zostać zwiększona bądź zmniejszona o maksymalnie 1 stopień.

Przykładowe zadania

Wymagane podczas egzaminu/zaliczenia
(-)

Realizowane podczas zajęć ćwiczeniowych/laboratoryjnych/projektowych
(-)

Inne
(-)

Czy podczas egzaminu/zaliczenia student ma możliwość korzystania z materiałów pomocniczych : nie

Treści zajęć powiazane są z prowadzonymi badaniami naukowymi: nie