Uniwersytet Warszawski - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Denotacyjna inżynieria języków programowania

Informacje ogólne

Kod przedmiotu: 1000-2M19DIJ Kod Erasmus / ISCED: 11.3 / (0612) Database and network design and administration
Nazwa przedmiotu: Denotacyjna inżynieria języków programowania
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty monograficzne dla III - V roku informatyki
Przedmioty obieralne dla informatyki
Punkty ECTS i inne: 6.00
zobacz reguły punktacji
Język prowadzenia: angielski
Rodzaj przedmiotu:

monograficzne

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, Denotacyjna inżynieria języków programowania, preprint

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

1.3. 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).

Zajęcia w cyklu "Semestr letni 2019/20" (w trakcie)

Okres: 2020-02-17 - 2020-06-10
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Andrzej Blikle, Aleksy Schubert
Prowadzący grup: Andrzej Blikle, Aleksy Schubert
Lista studentów: (nie masz dostępu)
Zaliczenie: Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.