Vakbeschrijvingen Servicevakken Informatica Curriculumcommissie Informatica October 10, 2003
1
Vakcode: INTSR-03 Vak: A PPLIED S YMBOLIC C OMPUTING EC: 5 Kwartaal: 4 Bedoeld voor: Scientific Computing and Imaging vanaf 94 keuze in jaar 4 Wiskunde in jaar 3 of 4 Wiskunde & Statistiek in jaar 3 Inhoud: The course starts with a brief introduction in the use of a computer-algebra package (Mathematica) for solving mathematical problems. Attention is given to formal manipulation of polynomials, rational functions, power series, differentiation and integration, linear algebra and solving sets of equations. Next more advanced aspects are treated, such as the various programming styles of Mathematica (imperative, functional, rule-based), graphical presentation, design and implementation of packages. All topics are presented on the basis of examples and demonstrations from mathematics and the natural sciences. Practicum: Literatuur: Stephen Wolfram: Mathematica, A system for doing mathematics by computer, Versie 4.0, Addison Wesley Publishing Company. Voorkennis: Wiskunde 1 en 2 voor Wis- Natuur en Sterrenkunde Werkvorm: ge”integreerd hoor-/werkcollege 4 uren practicum 0 uren zelfwerkzaamheid (totaal) 120 uur. Toetsing: Weekschema: Week 1-3: Introductie Mathematica Week 4-6: Programmeren in Mathematica (imperatief, functioneel, rule-based) Week 7-9: Speciale onderwerpen (graphics, gebruik en ontwerp van packages)
2
Vakcode: INCARCH-03 Vak: C OMPUTERARCHITECTUUR EC: 4 Kwartaal: 4 Bedoeld voor: TBW in jaar 2 Natuurkunde in jaar 3 of 4 Scheikunde in jaar 3 of 4 Sterrenkunde in jaar 3 of 4 Inhoud: In dit vak wordt een overzicht gegeven van computer architectuur, operating systems en computernetwerken. Er wordt een breed scala van onderwerpen behandeld van de primitieve bouwstenen waar computers mee opgebouwd worden via de machinetaal waarin de computer geprogrammeerd wordt tot de mogelijkheden en eigenschappen van collecties computers in een netwerk. Aan de orde komen o.m.: • de electronische bouwstenen, eindige automaat, toestand, sequenti”ering • processoren: control unit, datapath, microprogrammering • machinetaal: instructies, addresseringsmethoden, procedure mechanisme • besturingssysteem: processen, filesystemen, virtueel geheugen • gedistribueerde systemen: shared memory en message passing computers • netwerken: LAN, Internet Practicum: Programmeren in machinetaal. Communicatie over het internet Literatuur: wordt nog bekend gemaakt Voorkennis: Werkvorm: hoorcollege 3 uren practicum 3 uren zelfwerkzaamheid (totaal) 60 uur Toetsing: Schriftelijk tentamen en practicum Weekschema: Week 1 : Algemene introductie op architecturen en netwerken. Week 2 : Digitale techniek, getalsrepresentatie. Week 3 : Microarchitecturen. Week 4 : Processor architecturen en machinetaal programmeren. Week 5 : Operating system aspecten. Week 6 : Netwerken: elementaire communicatie mechanismen. Week 7 : De fysieke laag. Week 8 : De datalink laag. Week 9 : Local area netwerken. Week 10: Wide area netwerken, het Internet.
3
Vakcode: INIPTBPP-03 Vak: I NLEIDING P ROGRAMMEREN VOOR TBW/TBK EN PPSW EC: 5 Kwartaal: 3 Bedoeld voor: TBW in jaar 1 Inhoud: De cursus wordt gegeven in de vorm van hoorcolleges en (programmeer)practica. Op het hoorcollege worden systematisch constructies uit de taal Java behandeld, ge”illustreerd met voorbeelden. We bekijken de rol van variabelen en hoe deze zijn te manipuleren (toekenning, keuze, herhalingsconstructies). We introduceren methoden als mechanisme om structuur aan te brengen en om recursieve oplossingsstrategie”en mogelijk te maken. We maken kennis met het objectmechanisme door middel van communicatie met de gebruiker via grafische user interfaces. Wekelijks dient een aantal programmeeropdrachten te worden uitgewerkt. Een deel hiervan lever je in ter beoordeling. Practicum: geroosterd practicum 2 uur per week Literatuur: J. Bishop, Java Gently, Addison-Wesley, ISBN 0-201-71050-1 Opgavenbundel Programmeren voor TBW en PPSW Voorkennis: Werkvorm: hoorcollege 2+2 uren verroosterd practicum 2 uren zelfwerkzaamheid (totaal) 60 uur Toetsing: Weekschema: Week1 - Wat is programmeren - (Voorlopige) structuur van een Java-programma - compileren en uitvoeren/interpreteren - variabelen, getallen en rekenen - uitvoer en invoer (de klasse Extractor) - if-statement Week 2 - de numerieke types met hun operatoren - de klasse Math - het type char - het type boolean de klasse String - kennismaken met objecten en methoden Week 3 - for-statement - arrays Week 4 - variabelen en waarden - objecten en referenties - methoden en parameteroverdracht Week 5 - while-statement - break - instantie versus klasse-members; modifiers - de klasse Vector Week 6 - inheritance: subclasses - inheritance: interfaces Week 7 - communicatie met de gebruiker (de klasse Form) (buttons, labels, invoerregels, canvas) Week 8 - effici¨entie en complexiteit van algoritmen (machtsverheffen, zoeken, sorteren, .. )
4
Vakcode: INPAW-03 Vak: I NLEIDING P ROGRAMMEREN VOOR W ISKUNDE EN NATUURKUNDE EC: 3 Kwartaal: 2 Bedoeld voor: Wiskunde (ongedeeld) in jaar 1 Natuurkunde in jaar 2 Inhoud: In dit vak worden de eerste beginselen van het programmeren onderwezen. Als taal om de programma’s in op te schrijven is gekozen voor Java. In een rustig tempo worden diverse programmaconstructies behandeld, waarbij de nadruk in eerste instantie ligt bij het ontwikkelen van algoritmen en in tweede instantie pas bij de manier waarop dit in Java wordt genoteerd. Natuurlijk ontkomen we er niet aan om aan de syntax en (operationele) semantiek van Java uitgebreid aandacht te besteden. N.B.: Dit college begint de tweede week van de cursusperiode, in de eerste week wordt Inleiding Computergebruik gegeven. Practicum: Literatuur: J. Bishop: Java Gently, 3rd ed. Addison-Wesley. Opgavenbundel Inleiding Programmeren voor Wiskunde en Natuurkunde Voorkennis: Werkvorm: hoorcollege 3 uren verroosterd practicum 2 uren zelfwerkzaamheid (totaal) 30 uur Toetsing: Practicum en schriftelijk tentamen Weekschema: Week 1: Organisatie en structuur Java programma; variabele toekenning, I/O, if-statement Week 2: Primitieve typen, objecten, methoden, klasse String Week 3: for-statement, arrays Week 4: variabelen, waarden, objecten, referenties, methoden en parameteroverdracht Week 5: while-statement Week 6: Inheritance, subclasses en interfaces Week 7: Grafische toepassingen en Form-class Week 8: Complexiteit en efficientie Week 9: uitloop
5
Vakcode: INP1KI-03 Vak: P ROGRAMMEREN I VOOR KI EC: 5 Kwartaal: 1.2 Bedoeld voor: 1e jaar Kunstmatige Intelligentie Inhoud: Doel van dit vak is het ontwikkelen van vaardigheid in het schrijven van relatief kleine programma’s. Samen met de vervolgvakken Programmeren 2 en Programmeren 3 vormt dit vak een basiscursus Imperatief en Objectge-orienteerd programmeren. Aan het eind van de hele cursus heb je voldoende programmeervaardigheid om bij de (niet-programmeer-)vakken van de opleiding de benodigde programma’s te kunnen maken. Als taal om de programma’s in te noteren is gekozen voor Java, een taal die op nagenoeg alle hedendaagse computers is te installeren. Tijdens het hoorcollege worden systematisch constructies uit de taal Java behandeld, ge-illustreerd met voorbeeld. We bekijken de rol van variabelen en hoe deze zijn te manipuleren (toekenning, keuze, herhalingsconstructies). We introduceren methoden als mechanisme om deeltaken te isoleren om daarmee structuur aan te brengen in programma’s. Daarna maken we kennis met klassen en objecten en we leren hoe we die in kunnen zetten om de structuur van programma’s nog beter te maken en om hergebruik mogelijk te maken. Aan het eind van dit eerste deel worden eenvoudige user-interfaces gebouwd om met de gebruiker te communiceren. Een deel van de hoorcolleges wordt besteed aan het gezamenlijk uitwerken van van te voren bekend gemaakte opgaven. Literatuur: Koffman & Wolz; Problem Solving with Java (2nd ed.), Addison-Wesley, ISBN 0-201-722143. Opgavenbundel Programmeren 1 (Dictatenverkoop Wiskunde en Informatica). Voorkennis: Werkvorm: 2 x 2 uur hoorcollege per week; 2 uur geroosterd practicum per week Toetsing: Practicum en schriftelijk tentamen. Weekschema: 1. organisatie cursus; structuur Java-programma; file-organisatie; (int) variabelen, toekenning, expressies; uit- en invoer met de Extractor klasse; if-statement 2. primitieve types in Java, de klasse Math; Strings; methoden (met primitieve parameters) 3. for-statement; arrays 4. type vs. klasse; variabele vs. object; methoden in klassen 5. while-statement, do-statement, break; parameteroverdracht, verschil tussen primitieve en object parameters 6. subklassen; interfaces 7. grafische userinterfaces met Swing
6
Vakcode: INP2KI-03 Vak: P ROGRAMMEREN II VOOR KI EC: 5 Kwartaal: 1.3 Bedoeld voor: 1e jaar Kunstmatige Intelligentie Inhoud: Doel van dit vak is het uitbouwen van programmeervaardigheid. Het bouwt direct voort op Programmeren 1. In dit deel van de cursus breid je je repertoir aan programmeertechnieken uit. We besteden uitvoerig aandacht aan manieren om data gestructureerd op te slaan (arrays, lijsten, bomen, zoekbomen) en aan bijbehorende algoritmen (zoeken, sorteren, depth-first traversal, breadth-first traversal, backtracking). Veel van deze algoritmen maken gebruik van recursie. Daarnaast leren we kritisch kijken naar de complexiteit van algoritmen (hoeveel elementaire bewerkingen moeten er worden uitgevoerd om de oplossing te berekenen) en besteden we enige aandacht aan technieken om over de correctheid van algoritmen te argumenteren (predikaten, lus-invarianten, inductiehypothesen). Literatuur: Koffman & Wolz; Problem Solving with Java (2nd ed.), Addison-Wesley, ISBN 0-201-722143. Opgavenbundel Programmeren 2 (Dictatenverkoop Wiskunde en Informatica). Voorkennis: Programmeren I Werkvorm: 2 uur hoorcollege per week; 2 uur geroosterd practicum per week Toetsing: Practicum en schriftelijk tentamen. Weekschema:
7
Vakcode: INP3KI-03 Vak: P ROGRAMMEREN III VOOR KI EC: 5 Kwartaal: 1.4 Bedoeld voor: 1e jaar Kunstmatige Intelligentie Inhoud: Doel van dit vak is kennis te maken met meer geavanceerde aspecten van Object Ge¨ori¨enteerd Programmeren. Het vak bouwt direct voort op Programmeren II. Meer dan in de eerste twee delen, wordt in dit deel aandacht besteed aan diverse aspecten van Object Ge¨ori¨enteerd Programmeren en van de taal Java. Het systeem van overerving, zoals dat in Java aanwezig is, wordt in meer detail bekeken en er wordt een link gelegd naar het object georienteerd ontwerpen van programma’s. Daarnaast komen meer geavanceerde mogelijkheden van Java aan de orde (Multithreading, Event handling, Input/output). Literatuur: Koffman & Wolz; Problem Solving with Java (2nd ed.), Addison-Wesley, ISBN 0-201-722143. Opgavenbundel Programmeren 3 (Dictatenverkoop Wiskunde en Informatica). Voorkennis: Programmeren I en Programmeren II Werkvorm: 2 uur hoorcollege per week; 2 uur geroosterd practicum per week Toetsing: Practicum en schriftelijk tentamen. Weekschema:
8
Vakcode: INVPTBW-03 Vak: VOORTGEZET P ROGRAMMEREN VOOR TBW/TBK EC: 4 Kwartaal: 2 Bedoeld voor: TBW in jaar 2 Inhoud: Het college Voortgezet Programmeren verdiept de stof, zoals behandeld in het college Inleiding Programmeren. Behandeld wordt: specificatie van algoritmen, wiskundige aspecten van het programmeren; standaardalgoritmen (zoeken, sorteren); recursie, backtracking; complexiteit; dynamische datastructuren (pointers, lijsten, bomen), en object ge¨ori¨enteerde technieken. Het college gaat vergezeld van een practicum (praktische kennismaking met de behandelde algoritmen). Practicum: vier sets met opgaven om de behandelde stof te oefenen Literatuur: J. Bishop (2001) Java Gently. 3rd ed., Addison Wesley, plus aanvullend dictaat. Voorkennis: Of(ININF-TBW,INPA:95) Werkvorm: hoorcollege 2+2 uren werkcollege 2 uren zelfwerkzaamheid (totaal) 60 uur Toetsing: Schriftelijk tentamen en practicumopdrachten Weekschema: Week 1: Zoekalgoritmen; lineair en bisectie, exception mechaniek Week 2: Object architectuur, UML Week 3: Recursie: recursie vs. iteratie, tail recursie Week 4: Datastructuren: Bomen en lijsten, referenties, deep-copy/shallow copy Week 5: Sorteer algoritmen (selection, merge, insertion, quicksort en heapsort) en bibliotheekgebruik (SWING) Week 6: Event-handling: events, listeners Week 7: Grafish programmeren Week 8: Ontwerp groter grafish programma, Week 9: uitloop
9
Vakcode: INVPS-03 Vak: VOORTGEZET P ROGRAMMEREN VOOR W ISKUNDE EN NATUURKUNDE EC: 5 Kwartaal: 3 Bedoeld voor: Natuurkunde vanaf 99 in jaar 2 Wiskunde vanaf 99 in jaar 2 Inhoud: Dit vak is bedoeld als een vervolg op een inleidend programmeervak met als programmeertaal ”Pascal” zoals “Programmeren A voor Wiskunde” of de RC-cursus ”Inleiding Pascal”. Naast een algemene verhoging van de programmeervaardigheid zal sterk de nadruk liggen op software engineering aspecten zoals het verhogen van de kwaliteit, structuur en herbruikbaarheid van de door de student geschreven software. Bij het practicum dienen studenten wekelijks kleinere en vaak samenhangende problemen, bij voorkeur ontleend aan de wiskunde of natuurkunde, op te lossen. Naast het programmeren gaan de studenten elkaars werk testen en reviewen. Naast een algemene verhoging van de algoritmische vaardigheid worden in het bijzonder recursie, parsing, dynamische datastucturen, Abstracte Data Types en modules behandeld. Nota Bene: Dit vak wordt voor het laatst in het studiejaar 2002-2003 in Pascal gegeven! Practicum: Wekelijks een programmeer-, test- en reviewopdracht. Literatuur: Dictaat, An Introduction to the Art & Science of Programming Pascal, W. Savitch Voorkennis: Pascal Werkvorm: hoorcollege 2 uren practicum 4 uren zelfwerkzaamheid (totaal) 100 uur Toetsing: practicumopdrachten: programmeer, test en review Weekschema: Week 1: Zoekalgoritmes (Lineair, Bisectie, 2D) Week 2: Functie en procedure parameters en abstractie Week 3: Recursie: Recursie vs. iteratie, tail recursie Week 4: Complexiteit en abstracte datatypen, records, software bibliotheken Week 5: Datastructuren I: Pointers en lijsten Week 6: Datastructuren II: Bomen, binaire bomen, zoekbomen, vergelijking geordende lijst Week 7: Sorteren: Selection sort, insertion sort, merge sort, quicksort, heapsort Week 8: Parsing: Gramatica’s herschrijfregels, ontleedbomen, syntaxdiagrammen Week 9: Conformant arrays en generiek progammeren
10