1/11 Algoritmen en Complexiteit Programmeerparadigma’s Voorbereiding Visitatie ZAP vergadering woensdag 27/2/2008
2/11 Algoritmen en Complexiteit: Inhoud week 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 7 Subwoord - probleem NP - time en NP - space SAT is in NP - time Reducties: hamiltonian path, colourability Randomized algorithms, Mincut, RP, ZPP
3/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)
4/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
5/11 Volgtijdelijkheid Vereiste voorkennis: -Enige programmeerervaring, basiskennis algoritmen -Eindige automaten (Talen en Automaten) -Turing machines (Machines en Berekenbaarheid) -Elementaire datastructuren (Gegevensstructuren)
6/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 +++
7/11 Programmeerparadigmas: Inhoud week inhoud theorie 1 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
8/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
9/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
10/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?
11/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 ++