Paradygmaty Programowania
Transkrypt
Paradygmaty Programowania
Paradygmaty Programowania Rok akademicki: 2014/2015 Warunkiem zaliczenia przedmiotu jest: i. stworzenie 2 prezentacji na zadany przez prowadzącego temat, ii. implementacja 2 problemów zadanych przez prowadzącego, iii. zaliczenie kolokwium w połowie semestru, iv. obecność na zajęciach. Prezentacja składa się z: i. ok. 20 min. prezentacji na zadany temat, ii. listy 5 pytań zamkniętych (po 4 odpowiedzi) dotyczących tematu prezentacji. Implementacja oznacza stworzenie programu realizującego podany problem w dowolnym języku programowania (chyba, że temat mówi inaczej). Kolokwium składa się z: i. pytań przygotowanych przez prowadzącego, ii. pytań otrzymanych wraz z prezentacjami. Tematy mogą być realizowane w grupach 2 lub 3 osobowych. Tematy prezentacji: 1. Gramatyki i języki formalne, notacja BNF, diagramy syntaktyczne. 2. Zasada działania kompilatora/interpretera. 3. Przeciążanie operatorów na potrzeby działania na obiektach. 4. Zasady programowania opartego na zdarzeniach. 5. Metody wnioskowania – w przód i wstecz. 6. Programowanie strukturalne i strukturalizacja programów. 7. Realizacja współbieżności proceduralna i obiektowa. 8. Podstawowe cechy i możliwości język Prolog. 9. Podstawowe cechy i możliwości język Scala. 10. Podstawowe cechy i możliwości język Smalltalk. 11. Rachunek lambda. 12. Idea działania platformy .NET. 13. Charakterystyka języka wirtualnej maszyny Javy (kodu bajtowego). 14. Obsługa wyjątków w różnych językach programowania. 15. Wyrażenia regularne i ich przykładowe zastosowania. 16. Listy i operacje (najlepiej prezentacja z animacją). 17. Funkcje preprocesora dla języków programowania (C/C++, …). 18. Metody przekazywania zmiennej liczby parametrów do podprogramów. 19. Przeciążanie funkcji a domyślne wartości parametrów w różnych językach programowania. 20. Funkcje czyste, ścisłe, nieścisłe i leniwe wartościowanie, funkcje wyższego rzędu. 21. Wieloparadygmatowy język Python. 22. Języki dziedzinowe w przykładach. Tematy do implementacji: 1. Kompilator/interpreter prostego języka programowania. 2. Konwersja wyrażeń arytmetycznych między postaciami: infiksową – prefiksową – postfiksową. 3. Konwerter liczb całkowitych i rzeczywistych (zapis zmiennopozycyjny) na i z postaci binarnej z implementacją podstawowych operacji. 4. Realizacja stosu i kolejki na listach ze wskaźnikami z własnym menedżerem sterty. 5. Tablica z haszowaniem do wyszukiwania danych. 6. Iteracyjna i rekurencyjna implementacja wybranych algorytmów (liczby Fibonacciego, quicksort, wieże Hanoi) – porównanie czasów działania. 7. Program z podprogramami i bez, z przekazywaniem parametrów przez wartość i referencję – porównanie czasów działania. 8. Metody wnioskowania za pomocą podejścia imperatywnego. 9. Program obiektowy i proceduralny – porównanie czasów działania. 10. Porównanie czasów działania sortowania przez wybór w wersji sekwencyjnej, z podziałem na połówki w realizacji sekwencyjnej i w realizacji współbieżnej (być może ze zrównolegleniem łączenia z sortowaniem). 11. Programowanie deklaratywne – przykłady zastosowań. 12. Optymalizacja kodu źródłowego – porównanie czasów działania. 13. Różne aspekty użycia obsługi wyjątków. 14. Implementacja automatu ze stosem dla prostych gramatyk. 15. Implementacja maszyny Turinga. 16. Implementacja współbieżna wybranych problemów (5 filozofów, producent konsument itp.). Jak przeprowadzić prezentację? Mów do słuchaczy a nie do ekranu. Miej dobry kontakt wzrokowy ze słuchaczami. Nie spoglądaj tylko w jednym kierunku. Patrz na wiele osób. Mów wyraźnie i zrozumiałym językiem – mądre nazwy odstraszają. Nie czytaj tekstu na slajdzie – za wyjątkiem tematów do omówienia. Omów temat – nie odczytuj go z Twoich notatek. Warto przeczytać przed prezentacją! http://zif.mchtr.pw.edu.pl/download/55.pdf Uwaga! Osoba/grupa z najlepszą implementacją problemów, wybraną przez prowadzącego i studentów będzie zwolniona z egzaminu.