Semantyka i weryfikacja programów
Informacje ogólne
Kod przedmiotu: | 1000-215bSWP |
Kod Erasmus / ISCED: |
11.303
|
Nazwa przedmiotu: | Semantyka i weryfikacja programów |
Jednostka: | Wydział Matematyki, Informatyki i Mechaniki |
Grupy: | |
Strona przedmiotu: | http://www.mimuw.edu.pl/~tarlecki/teaching/semwer/ |
Punkty ECTS i inne: |
5.00
|
Język prowadzenia: | polski |
Rodzaj przedmiotu: | obowiązkowe |
Wymagania (lista przedmiotów): | Języki, automaty i obliczenia 1000-214bJAO |
Tryb prowadzenia: | w sali |
Skrócony opis: |
Celem przedmiotu jest przedstawienie znaczenia, a także podstawowych problemów i technik formalnego opisywania programów. Omówione są różne metody definiowania semantyki programów, a także przedstawione są ich podstawy i techniki matematyczne. Wprowadza się podstawowe pojęcia poprawności programów wraz metodami i formalizmami jej dowodzenia. |
Pełny opis: |
1. Formalny opis języków programowania 2. Operacyjne i denotacyjne metody definiowania semantyki programów 3. Semantyczne definicje podstawowych konstrukcji programistycznych 4. Matematyczne podstawy semantyki denotacyjnej 5. Pojęcia poprawności programów: poprawność częściowa i całkowita 6. Metody dowodzenia poprawności programów 7. Logika Hoare'a, jej wykorzystanie i własności formalne 8. Podstawowe pojęcia algebry uniwersalnej i ich rola w opisie języków programowania Wymagania wstępne: - Wstęp do programowania (1000-211bWPI i/lub 1000-211bWPF) - Podstawy matematyki (1000-211bPM) - Języki, automaty i obliczenia (1000-214bJAO) |
Literatura: |
1. M. Hennessy. The Semantics of Programming Languages. Wiley, 1990. 2. M. Fernandez. Programming Languages and Operational Semantics: An Introduction. College Publications, 2004. 3. H. Riis Nielson, F. Nielson. Semantics with Applications: An Appetizer. Springer, 2007. 4. M. Gordon. Denotacyjny opis języków programowania. WNT, 1983. 5. D. Gries. The Science of Programming. Springer-Verlag, 1981. 6. E. Dijkstra. Umiejętność programowania. WNT, 1978. |
Efekty uczenia się: |
Wiedza. Student zna i rozumie: * uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie programowania, algorytmów i złożoności, architektury systemów komputerowych, systemów operacyjnych, technologii sieciowych, języków i paradygmatów programowania, baz danych, inżynierii oprogramowania (K_W02); * w zaawansowanym stopniu podstawowe konstrukcje programistyczne (przypisanie, instrukcje sterujące, wywoływanie podprogramów i przekazywanie parametrów) oraz pojęcia składni i semantyki języków programowania (K_W03); * metody definiowania semantyki programów, z ich matematycznymi podstawami i praktycznymi technikami, a także pojecia poprawnosci programow oraz techniki i formalizmy dla ich dowodzenia (K_W13); * podstawy teorii języków formalnych (języki, wyrażenia regularne, gramatyki) i formalnych modeli obliczeniowych (automaty, automaty ze stosem, maszyny Turinga) (K_W16). W bardziej szczegółowym ujęciu student zna: - pojęcia składni i semantyki języków programowania, metody ich definiowania, a także definicje podstawowych konstrukcji programistycznych; - matematyczne podstawy i praktyczne techniki definiowania semantyki programów; - pojęcie poprawności programu względem formalnej specyfikacji; - metody formalne dowodzenia częściowej i całkowitej poprawności prostych programów. Umiejętności. Student potrafi: - pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02); - zrozumieć opis semantyki języka; posługuje się semantyką formalną przy wnioskowaniu o poprawności programów (K_U03); * samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09). Kompetencje. Student jest gotów: * do krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01); * do uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03). |
Metody i kryteria oceniania: |
Ocena końcowa na podstawie egzaminu i prac domowych zadawanych w ciągu semestru. |
Zajęcia w cyklu "Semestr zimowy 2023/24" (zakończony)
Okres: | 2023-10-01 - 2024-01-28 |
Przejdź do planu
PN CW
WYK
CW
WT ŚR CW
CZ CW
CW
CW
PT |
Typ zajęć: |
Ćwiczenia, 30 godzin
Wykład, 30 godzin
|
|
Koordynatorzy: | Andrzej Tarlecki | |
Prowadzący grup: | Ewa Madalińska-Bugaj, Aleksy Schubert, Michał Skrzypczak, Andrzej Tarlecki | |
Lista studentów: | (nie masz dostępu) | |
Zaliczenie: | Egzamin |
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Nauk Ekonomicznych.