Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Semantyka i weryfikacja programów (d. 1000-215bSWP)

Informacje ogólne

Kod przedmiotu: 1000-2M24SWP
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Semantyka i weryfikacja programów (d. 1000-215bSWP)
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Grupa przedmiotów obowiązkowych dla informatyki magisterskiej-specjalność Języki programowania
Przedmioty obieralne dla informatyki i ML
Przedmioty obieralne fakultatywne dla informatyki (IIIr. licencjatu, nowy program)
Strona przedmiotu: https://www.mimuw.edu.pl/~tarlecki/teaching/semwer/
Punkty ECTS i inne: 6.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: (brak danych)
Rodzaj przedmiotu:

fakultatywne

Założenia (lista przedmiotów):

Języki, automaty i obliczenia 1000-214bJAO
Podstawy matematyki 1000-211bPM
Wstęp do programowania 1000-211bWPI

Skrócony opis:

Celem przedmiotu jest przedstawienie znaczenia, a także podstawowych problemów, technik i zastosowań formalnego opisywania programów. Wykład omawia różne metody definiowania semantyki programów, ich niezbędne podstawy i techniki matematyczne oraz wprowadza podstawowe pojęcia poprawności programów wraz metodami i formalizmami jej dowodzenia. Zajęcia laboratoryjne ilustrują wykorzystanie tych metod w praktyce projektowej i programistycznej.

Pełny opis:

Wykład obejmuje następujące zagadnienia:

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

Zajęcia laboratoryjne poświęcone są ilustracji wykorzystania tych metod w praktycznym projektowaniu i implementacji języków programowania i weryfikacji programów. Studenci będą mieli okazję stworzyć implementację własnego języka programowania. W ramach zajęć, w niewielkich zespołach będą realizowane projekty obejmujące opis takiego języka programowania, definicję jego semantyki i bazującą na semantyce implementację interpretera. Te działania zostaną uzupełnione dalej praktycznymi przykładami weryfikacji programów przy wykorzystaniu narzędzi wspomagających dowodzenie.

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. K. R. Apt, Ten Years of Hoare’s Logic: A Survey — Part 1, ACM Toplas 3(4), 1981, 431-483.

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 pojęcia poprawności programów 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;

- możliwości wykorzystania semantyki jako bazy dla implementacji systemów oprogramowania;

- pojęcie poprawności programu względem formalnej specyfikacji;

- metody formalne dowodzenia częściowej i całkowitej poprawności prostych programów oraz ich praktyczne stosowanie przy wykorzystaniu narzędzi wspomagających.

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 zaliczenia projektów realizowanych w ramach laboratorium w ciągu semestru.

Zajęcia w cyklu "Semestr zimowy 2024/25" (zakończony)

Okres: 2024-10-01 - 2025-01-26
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Andrzej Tarlecki
Prowadzący grup: Aleksy Schubert, Michał Skrzypczak, Andrzej Tarlecki
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin

Zajęcia w cyklu "Semestr zimowy 2025/26" (w trakcie)

Okres: 2025-10-01 - 2026-01-25
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Andrzej Tarlecki
Prowadzący grup: Aleksy Schubert, Michał Skrzypczak, Andrzej Tarlecki
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Wykład - Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
ul. Banacha 2
02-097 Warszawa
tel: +48 22 55 44 214 https://www.mimuw.edu.pl/
kontakt deklaracja dostępności mapa serwisu USOSweb 7.2.0.0-174564f21 (2025-11-05)