Programowanie (M) lato 2011/12

Język wykładowy Polski
Opiekun Dariusz Biernacki
Liczba godzin 15 (wyk.) 15 (ćw.)
Rodzaj Obowiązkowy 2
ECTS 3
Polecany dla I roku Tak
Egzamin Tak

Opis przedmiotu:

Celem zajęć jest przedstawienie studentom możliwie szerokiego kręgu zagadnień związanych z programowaniem komputerów, ze szczególnym uwzględnieniem podstawowych konstrukcji występujących w językach programowania i związanych z nimi technik tworzenia programów. **Program:** 1. Podstawy inżynierii oprogramowania. (3 godz.) 2. Definicje indukcyjne, rekursja i dowody przez indukcję strukturalną. (1 godz.) 3. Gramatyki regularne i bezkontekstowe. Analiza leksykalna i składniowa. Lekser. Parser. Konkretne i abstrakcyjne drzewa rozbioru. (3 godz.; Teoria informatyki) 4. Metody opisu semantyki języków programowania. Strukturalna semantyka operacyjna. Semantyka denotacyjna. Definicje rekurencyjne i funkcje częściowe. (5 godz.; Wstęp do semantyki języków programowania) 5. Logika Hoare'a i dowodzenie poprawności programów. Metoda niezmienników. Synteza programów metodą wstępującą i zstępującą. (5 godz.; Wstęp do semantyki języków programowania) 6. Struktura współczesnych języków programowania. Nazwy, komórki i wartości, struktury sterujące, funkcje i procedury, dynamiczne struktury danych, wyjątki. Typy danych, mocna typizacja, rekonstrukcja typów. (7 godz.) 7. Pojęcie translatora. Zasięg zmiennych, wywoływanie funkcji i zarządzanie pamięcią. Języki o strukturze blokowej, rekordy aktywacji, metody przydziału pamięci dla zmiennych lokalnych i globalnych. Funkcje wyższego rzędu, funarg problem. Automatyczne zarządzanie pamięcią i odśmiecanie. (6 godz.; Translatory) 8. Algebraiczne specyfikacje typów danych. Typy definiowane indukcyjnie (listy, drzewa, stosy, kolejki itd.) Indukcyjne dowody ich własności. (4 godz.; Algorytmy i struktury danych) 9. Moduły, rodzajowość i abstrakcja danych. Ukrywanie (encapsulation) danych. Rozwiązania w konkretnych językach (moduły, pakiety w Adzie, klastery w Clu). Rodzajowość (funktory, pakiety rodzajowe, wzorce (templates) w C++). (6 godz.; Algorytmy i struktury danych) 10. Programowanie funkcjonalne. Programowanie deklaratywne a imperatywne. Skutki uboczne. Porządek wartościowania. (4 godz.; Programowanie funkcjonalne) 11. Programowanie obiektowe, metodologia OO, obiekty i klasy, abstrakcyjne typy danych a klasy, podtypowanie a dziedziczenie, języki bezklasowe, Smalltalk. Obiektowy styl programowania w C++. Java. (6 godz.; Programowanie obiektowe) 12. Współbieżność. Elementarne metody synchronizacji: semafory, monitory, rejony krytyczne. CSP. CCS. Model asynchroniczny. Programowanie rozproszone. Kanały, wątki, coroutines. Mechanizmy współbieżności w Adzie i innych językach programowania. Pięciu filozofów itp. Obliczenia sterowane przepływem danych. (6 godz.; Obliczenia równoległe i rozproszone, Systemy operacyjne) 13. Programowanie w logice. Prolog. (4 godz.; Programowanie logiczne) **Wymagania:** Logika dla informatyków Kurs Pascala lub C

Wykłady

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Dariusz Biernacki
300 50 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.

Ćwiczenia

Lista
Prowadzący Termin zajęć Limit Zapisani Kolejka
Małgorzata Biernacka
22 20 0
Dariusz Biernacki
22 21 0
Antoni Kościelski
10 7 0

UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.


Konsultacje prowadzących:


Imię i nazwisko Pokój Konsultacje
Antoni Kościelski 311 sem. letni 2023/24: piątki, godz. 12.30-13.30, pokój 311, a także konsultacje zdalne za pośrednictwem MSTeams, w piątki, godz. 19.15 - 19.30 i dłużej, jeżeli będą zainteresowani. Zapraszam też na konsultacje zdalne lub w Instytucie w terminach uzgodnionych ze stosownym wyprzedzeniem np. pocztą elektroniczną.
Małgorzata Biernacka 348 czw. 12-14; możliwe inne terminy - proszę o kontakt mailowy
Dariusz Biernacki 242 wtorek 14-16 (po uzgodnieniu przez e-mail)