janssens27feb08

advertisement
Algoritmen en Complexiteit
Programmeerparadigma’s
Voorbereiding Visitatie
ZAP vergadering
woensdag 27/2/2008
1/11
Algoritmen en Complexiteit: Inhoud
week
1-4
5-6
7
8 - 10
11-12
inhoud
Uniforme worst-case tijdscomplexiteit, toegepast op
sorteeralgoritmen: big-o, big-omega
lexicografisch sorteren
comparison-based sorteren
Modellen: RAM, RASP, TM en de verbanden ertussen.
log vs. uniforme complexiteit
Subwoord - probleem
NP - time en NP - space
SAT is in NP - time
Reducties: hamiltonian path, colourability
Randomized algorithms, Mincut, RP , ZPP
2/11
Werkvorm
Klassiek hoorcollege met “theoretische” oefeningen
Enkele opdrachten, maar zonder permanente evaluatie
Materiaal:
Syllabus (uitgewerkte slides)
Handboeken: Aho, Hopcroft, Ullman: “The design and Analysis of
Computer Algorithms”
Aho, Motwani, Ullman: “Automata Theory, Languages
and Computation”
Examen:
Open boek (syllabus)
3/11
Doelstellingen
-
Basiskennis over tijds-en plaatscomplexiteit: definities en hun
motivatie
Complexiteit van een gegeven algoritmen kunnen bepalen
Redeneren over de correctheid van een algoritme
Inzicht verwerven in de samenhang complexiteit - model
Basiskennis complexiteitsklassen
Gebruik van reducties tussen problemen
Kennismaking met gerandomizeerde algoritmen en hun analyse
4/11
Volgtijdelijkheid
Vereiste voorkennis:
-
Enige programmeerervaring, basiskennis algoritmen
Eindige automaten (Talen en Automaten)
Turing machines (Machines en Berekenbaarheid)
Elementaire datastructuren (Gegevensstructuren)
5/11
Kerncompetenties
•
•
•
•
•
•
•
KC1: Analyse en ontwerp
KC2: Implementatie
KC3: Onderhoud
KC4: Databank
KC5: Lokaal netwerk beheer
KC6: Support en advies
KC7: Communicatievaardigheden
•
•
•
•
•
•
KCD1: Formeel denken
+++
KCD2: Wetenschappelijk verwerken van data
KCD3: Opvolgen technologische ontwikkelingen
KCD4: Eigen maken nieuwe technieken
+
KCD5: Autonoom en creatief functioneren
+
KCD6: Wetenschappelijke basis
+++
++
+
6/11
Programmeerparadigmas: Inhoud
week
1
2-6
6 - 12
inhoud theorie
Inleiding: de 4 belangrijkste paradigma’s, overzicht.
Theorie achter het functioneel programmeren ( - calculus):
syntax, beta-reductie, alpha-congruentie
combinatoren, rekenen in  - calculus, lijststructuren
reductiestrategieën, normal order
types,
implementatie
Logisch programmeren in PROLOG:
de taal, syntax en semantiek
unificatie, implementatie
Practica: functioneel programmeren in Haskell
programmeren in PROLOG
7/11
Werkvorm
Theorie: hoorcollege met “theoretische” oefeningen over  - calculus
Practica: programmeeropdrachten Haskell - Prolog
gedeeltelijk permanente evaluatie
Materiaal:
Syllabus (uitgewerkte slides)
Handboeken: Simon Thompson, “Haskell, the Craft of Functional
Programming”
Adam Brooks Webber, “Modern Programming
Languages: a Practical Introduction”
Examen:
Open boek (syllabus) + programmeeropdrachten
8/11
Doelstellingen
-
Basiskennis  - calculus: geschiedenis en motivatie,
werking
verband met echte functionele talen
-
Programmeren in Haskell
-
Programmeren In PROLOG
-
Noties van de implementatie van beide
9/11
Volgtijdelijkheid
Vereiste voorkennis:
-
Enige programmeerervaring, basiskennis algoritmen
Basiskennis logica: wff, kwantoren, predicaten
Enkele noties van berekenbaarheid
Elementaire datastructuren
Verband met andere vakken; zoals databases, AI?
10/11
Kerncompetenties
•
•
•
•
•
•
•
KC1: Analyse en ontwerp
KC2: Implementatie
KC3: Onderhoud
KC4: Databank
KC5: Lokaal netwerk beheer
KC6: Support en advies
KC7: Communicatievaardigheden
•
•
•
•
•
•
KCD1: Formeel denken
++
KCD2: Wetenschappelijk verwerken van data
KCD3: Opvolgen technologische ontwikkelingen
KCD4: Eigen maken nieuwe technieken
++
KCD5: Autonoom en creatief functioneren
KCD6: Wetenschappelijke basis
++
++
+
(?)
11/11
Download