Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Denotacyjna inżynieria języków programowania

Informacje ogólne

Kod przedmiotu: 1000-2M19DIJ
Kod Erasmus / ISCED: 11.3 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (0612) Database and network design and administration Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Denotacyjna inżynieria języków programowania
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obieralne dla informatyki
Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka
Punkty ECTS i inne: (brak) 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: angielski
Rodzaj przedmiotu:

monograficzne

Wymagania (lista przedmiotów):

Języki, automaty i obliczenia 1000-214bJAO
Podstawy matematyki 1000-211bPM

Założenia (opisowo):

Wstępny kurs z programowania, np. Wstęp do programowania (podejście imperatywne) lub Wstęp do programowania (podejście funkcyjne)

Skrócony opis:

A. Techniki definiowania języków programowania sekwencyjnego (bez współbieżności) oparte na modelu semantyk denotacyjnych i algebr wielorodzajowych. Języki są budowane od denotacji do składni, co gwarantuje istnienie semantyki denotacyjnej będącej homomorfizmem z algebry składni w algebrę denotacji.

B. Techniki definiowania konstruktorów programów poprawnych dla języków mających semantykę denotacyjną. Poprawność programów jest rozumiana jak w logice Hoare’a, ale obejmuje również tzw. czystą terminację, tj. zakończenie działania programu bez wygenerowania komunikatu błędu. Obie techniki są ilustrowane przykładem (budowy i wykorzystania) wirtualnego języka programowania Lingua.

C. Praktyczna nauka (samo) organizowania pracy w innowacyjnym startupie z branży IT.

Pełny opis:

1. Narzędzia

1.1. Metajęzyk MetaSoft; podstawowe konwencje notacyjne

1.2. Równania stałopunktowe w zbiorach łańcuchowo zupełnych (ZŁZ)

1.3. Gramatyki równaniowe i ZŁZ języków formalnych

1.4. ZŁZ relacji binarnych

1.5. ZŁZ dziedzin denotacyjnych

1.6. Błędy abstrakcyjne

1.7. Trójwartościowy rachunek predykatów

1.8. Algebry wielorodzajowe w modelach denotacyjnych języków programowania

2. Semantyczna poprawność programów

2.1. Poprawność częściowa

2.2. Poprawność całkowita z czystą terminacją

3. Denotacyjne modele języków programowania

3.1. Idea metody

3.2. Wyrażenia — dane i ich typy

3.3. Instrukcje bez procedur

3.4. Procedury imperatywne i funkcyjne

4. Konstruowanie programów poprawnych

4.1. Reguły konstruowania

4.2. Reguły transformowania

5. Przykłady rozszerzeń modelu podstawowego (szkicowo)

5.1. Bazy danych SQL

5.2. Programowanie obiektowe

Literatura:

1. Źródła podstawowe: matematyka i informatyka

1.1. A. Blikle, A Denotational Engineering of Programming Languages, preprint

1.2. Prace wymienione w bibliografiach obu książek.

2. Źródła uzupełniające: organizacja pracy

2.1. A. Blikle, Doktryna jakości, Helion One Press 2017

2.2. A. Blikle, A Teal Doctrine of Quality, preprint

2.3. Prace wymienione w bibliografiach obu książek.

Pozycja 1.2. stanowi tłumaczenie 1.1., a pozycja 2.2. — tłumaczenie 2.1. Wszystkie cztery materiały są nieodpłatnie dostępne w aktualizowanych na bieżąco wersjach cyfrowych na witrynie Andrzeja Bliklego www.moznainaczej.com.pl.

Słuchacze będą zachęcani do wnoszenia swoich uwag, korekt i uzupełnień do wszystkich opisanych powyżej materiałów.

Efekty uczenia się:

Wiedza — absolwent zna i rozumie:

1. podstawowe składowe denotacyjnego modelu j. programowania na co składają się trzy algebry — denotacji, składni abstrakcyjnej i składni konkretnej — oraz homomorfizmy pomiędzy nimi (semantyki);

2. techniki budowania algebry denotacji oraz wyprowadzania z niej algebr składni abstrakcyjnej i konkretnej, a także wprowadzania do składni tzw. kolokwializmów;

3. techniki definiowania konstruktorów programów poprawnych dla języków mających opisany model denotacyjny.

Umiejętności — absolwent potrafi:

1. zaprojektować prosty język programowania z pełnym modelem denotacyjnym i regułami konstruowania programów poprawnych;

2. 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];

3. samodzielnie planować i realizować własne uczenie się przez całe życie [K_U09]. jw.

Kompetencje społeczne — absolwent jest gotów do:

1. realizowania zadań badawczych i rozwojowych w trybie partnerskiej pracy zespołowej;

2. zna podstawowe zasady organizowania pracy zespołowej w trybie relacyjnym (budowanie relacji partnerskich), a nie nadzorczo-transakcyjnym (realizowania poleceń i zasada „coś za coś”).

Metody i kryteria oceniania:

Na społeczność słuchaczy i prowadzących będziemy patrzyli jako na wspólny innowacyjny startup, który stawia sobie za zadanie wstępne opanowanie i wdrożenie nowych technologii budowania języków programowania i konstruowania programów poprawnych. Zasady pracy startupu powinny odpowiadać współczesnym metodom organizowania pracy, a w szczególności pracy zespołów IT (agile, TQM, turkus itp.)

Merytoryczna praca startupu będzie realizowana w zespołach projektowych wyłonionych w początkowym okresie szkolenia.

Podział na zespoły i ustalenie tematyki projektów zostanie dokonane przez cały zespół startupu. Przy tworzeniu zespołów projektowych może być wykorzystana „technika otwartej przestrzeni” (open space technology). Tematyka projektów może być teoretyczna, implementacyjna lub mieszana. Zespoły powinny być co najmniej dwuosobowe, a każdy słuchacz powinien należeć do co najmniej jednego zespołu. Zespoły uzgodnią zasady współpracy, a w tym — być może — współdzielenia zadań oraz określenie relacji dostawca-odbiorca (struktura procesowa firmy).

Praca w każdym z zespołów projektowych będzie realizowana w dwóch etapach:

1. Przedstawienie i akceptacja tematyki i planu realizacji projektu.

2. Przedstawienie wyników realizacji projektu.

Ocena każdego z etapów będzie miała tryb seminaryjny z udziałem zespołu całego startupu. Skala ocen: odrzucony (2), podstawowy (3), dobry (4), bardzo dobry (5), wybitny (6).

Przedmiot nie jest oferowany w żadnym z aktualnych cykli dydaktycznych.
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
Krakowskie Przedmieście 26/28
00-927 Warszawa
tel: +48 22 55 20 000 https://uw.edu.pl/
kontakt deklaracja dostępności USOSweb 7.0.2.0-1 (2024-03-12)