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.

Podobne dokumenty