Denotacyjna inżynieria języków programowania
Informacje ogólne
Kod przedmiotu: | 1000-2M19DIJ |
Kod Erasmus / ISCED: |
11.3
|
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)
|
Język prowadzenia: | angielski |
Rodzaj przedmiotu: | monograficzne |
Wymagania (lista przedmiotów): | Języki, automaty i obliczenia 1000-214bJAO |
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). |
Właścicielem praw autorskich jest Uniwersytet Warszawski.