Aanvullende informatie bij 2IA50, voorjaar 2007

Het vak 2IA50 bestaat uit Functioneel Programmeren (+/- 7 weken) en Logisch Programmeren (+/- 2 weken). De inhoud van Logisch Programmeren is voornamelijk een eerste kennismaking. De inhoud van Functioneel Programmeren komt overeen met de inhoud van (het in voorgaande jaren gegeven vak) 2M040, alleen wordt de leerstof nu gepresenteerd in een realisatie en een theoretische component.


Datum 

Nieuws/Mededelingen

29/6 Het tentamen van vandaag, met uitwerkingen.
19/6 uitwerking van een fusie-sommetje naar aanleiding van het college op15/6
12/6 Bonusopdracht 5 is vanaf vandaag beschikbaar en moet uiterlijk 20 juni 17.00 uur via het PEACH systeem ingeleverd zijn.
29/5 Bonusopdracht 4 is vanaf nu beschikbaar en moet uiterlijk 6 juni 17.00 uur via het PEACH systeem ingeleverd zijn.
23/5 Omdat a.s. vrijdag 25/5 gestart wordt met het onderdeel Logisch Programmeren is tijdens het 6e college (22/5) het pamfletje "Getting started with SWI-prolog" van Eugen Schindler uitgereikt. Degenen die het 6e college gemist hebben kunnen alsnog een exemplaar halen van de tafel tegenover kamer HG 7.79
15/5 Bonusopdracht 3 is vanaf nu beschikbaar en moet uiterlijk 23 mei 17.00 uur via het PEACH systeem ingeleverd zijn.
04/5 opmerkingen nav college 04/5
24/4 Bonusopdracht 2 is vanaf nu beschikbaar en moet uiterlijk 2 mei 17.00 uur via het PEACH systeem ingeleverd zijn.
20/4 Bonusopdrachten dienen te worden ingeleverd MET testinvoer en informatie over complexiteit. Het wordt aangeraden deze toevoegingen in een aparte file in te leveren en NIET -zoals in bonus.pdf-link vermeld- in het invoerveld onder opmerkingen.
18/4 In de weekplanning staat een selectie van de opgaven in rood font.
Deze opgaven, die behoren bij de collegestof van die week, gelden als huiswerkopgaven voor de instructie van de daaropvolgende week.
10/4 Vanwege geringe belangstelling komt de dinsdagochtend instructie te vervallen.
Er blijft een instructiegroep waaraan alle studenten kunnen deelnemen:
vrijdagmiddag, 5+6u, AUD 10. Docent afwisselend: v.Geldrop/Reniers/v.d.Woude.
10/4 Bonusopdracht 1 is vanaf nu beschikbaar en moet uiterlijk 18 april 17.00 uur via het PEACH systeem ingeleverd zijn.
3/4 Op dinsdag 22 mei is er een extra college. Plaats: Aud 9, Tijd: 3+4.
De geplande instructie komt te vervallen.
30/3 Aanmelden voor het bonuspraktikum voor 4 april.
30/3 Start college en vrijdag-instructie. De dinsdag instructies starten op 10 april.

Vakinformatie OWInfo TU/e

Docenten:
Rik van Geldrop, HG 7.77, tel. 2747, email:  h.p.j.v.geldrop@tue.nl
Jaap van der Woude, HG 7.79, tel. 5146, email:  j.c.s.p.v.d.woude@tue.nl

Studiemateriaal:
2IA50 deel A: (realisatie component FP) "Programming in Haskell" Graham Hutton
Cambridge University Press, ISBN 0-521-69269-5
Kosten:
2IA50 deel B: (theoretische component FP) "Inductive sets, the algebraic way" Rik van Geldrop en Jaap van der Woude
Diktaatnummer: 2598
Kosten: 1.15
2IA50 deel C: (LP) "Bird's-eye view of Logic Programming" Rik van Geldrop
Diktaatnummer : 2593
Kosten: 1.85

Opgaven FP en LP. Te downloaden vanaf deze pagina.

College:
Tijdstip en plaats: Vrijdag, 3+4, AUD 8
Voorlopige weekplanning (kan gewijzigd worden i.v.m. onregelmatig vrijdagrooster)

datum

college

zelfstudie

 opgaven

30/3

 Intro+Haskell notatie
 Typen

 deel A : Hoofdstuk 1 t/m 2
 deel B: Hoofdstuk 2

 Beginnen met Hugs, zie Hugs
 Serie 1, opg 1a,1b,1c,1d,2,3,4
 Serie 2: opg 1,3
 zie FP-opgaven

6/4

 TU/e gesloten

-

-

13/4

 Intro-vervolg
 Inductieve definities

 deel A : Hoofdstuk 3 en 4
 deel B : Hoofdstuk 3

 Serie 1 :  opg 1e,5,6a,6c,6e,6g
 Serie 3: opg 2,8a
  aanvulling n.a.v. college 2
  Serie 4: opg 1,2,7b

20/4

 Programmeertechnieken
 (Initiele)F-algebras

 deel A: Hoofdstuk 5
 Tupling
 deel B: Hoofdstuk 4,5 en 6(t/m Prop.20)

  Serie 3: opg 5
 Nov04:opg 2a,2b,3a,3b,3c
  Serie 3: opg 3,8b,9,11
 Serie 5: opg 1,2,3

27/4

 Programmeertechnieken-vervolg
 Karakterisering en fusie

 deel A: Hoofdstuk 6 en 7(t/m 7.5)
 deel B: Hoofdstuk 6

  Serie 4: opg 5
 Serie 5: opg 4
 Serie 3: opg 10
 Serie 4: opg 6(min c)
  Serie 6: opg 6

4/5

 Typeren
 Bomen

 Deel B
 Huffman algoritme

 Nov04:opg 2c,3d
 Serie 6: opg 1
 Serie 7: opg 1,4,6,8,9,10,11

11/5

 tentamenweek

-

-

18/5

 TU/e gesloten

-

-

22/5
Extra college
Zie Nieuws 3/4

 Labelling, Zoekbomen
 Multi-branching trees

 Deel B
 Robinsons's algoritme

-

25/5

 Logisch Programmeren :
 Introductie 1
 Programmaontwerp 1

 deel C :
 Hfdst 1,2,3 tot Skolem, 4.1
 Hfdst 5.2.1, 5.2.2
 LP-opgaven, serie 1

 Serie 7: opg 7,12,14
 Serie 8: opg 1
 Serie 9: opg 1,2,3,4

1/6

 Logisch Programmeren:
 Introductie 2
 Programmaontwerp 2

 Deel C :
 Hfdst 5.2, 6.2.3, 6.3 (!corrected!)
 LP-opgaven, serie 2

 Logisch Programmeren: serie 1

8/6

 dynamisch programmeren en generiek ontwerp

 Papieren versie

 Logisch Programmeren: Oude tentamens

15/6

 Varia

 Nader in te vullen

 Oude tentamens

22/6

-

-

-

29/6

Tentamen

-



Instructie:
Er zijn 2 instructiegroepen, een voor reguliere en een voor schakelstudenten. Tijdens de instructie wordt een selectie uit de opgaven behandeld. Het is de bedoeling dat de leerstof vòòr de instructie bestudeerd is.
Groep 1, voor reguliere studenten:
Tijd : 
Dinsdag, 3+4
Start :
10 April
Plaats :
Matrix 1.41
Docent :
Michel Reniers, HG 6.76, tel. 2999, email:  m.a.reniers@tue.nl
Groep 2, voor schakelstudenten:
Tijd : 
Vrijdag, 5+6
Start :
30 Maart
Plaats :
AUD 10
Docent :
Rik van Geldrop/Jaap van der Woude

Tentamen:
Schriftelijk. Het functionele en het logische deel moeten beiden voldoende zijn.
Notatie.
In het vak Functioneel Programmeren ontwerpt men wiskundige functies (vaak) aan de hand van de structuur van het domein (en/of het bereik). Bij zo'n ontwerp past dus de gebruikelijke wiskundige notatie.
Het implementeren van zo'n (wiskundige) functie is vrij eenvoudig in een functionele taal, en ... het is ook eenvoudig om bij een gegeven functionele implementatie de bijbehorende wiskundige definitie op te schrijven. Om deze redenen drukken functionele programmeurs zich meestal uit in implementaties.
Wij kiezen voor een implementatie-onafhankelijke aanpak van programmeren en introduceren de principes in een wiskundige notatie. In  bijgaande conversietabel  is het verband tussen de twee formalismen gegeven.
Zelfstudie.
De zelfstudie bestaat uit
Men wordt geacht minimaal 4 uur per week aan de zelfstudie te besteden.
FP-opgaven.
Let op: de opgaven zijn gesteld in Haskell notatie, dus f.g is de compositie van f en g.

Serie 1

Serie 2

Serie 3

Serie 4

Serie 5

Serie 6

Serie 7

Serie 8

Serie 9

Oude tentamens (2M040/2IA50).

Per  probleemsoort.
Per sessie:

 November 1997

 uitwerking

 Januari 1998

 uitwerking

 November 1998

 uitwerking

 Januari 1999

 uitwerking

 November 1999

 uitwerking

 Maart 2000

 uitwerking

 November 2000

 

 Januari 2001

 

 November 2001

 uitwerking

 Januari 2002

 

 November 2002

 uitwerking

 Januari 2003

 

 November 2003

 uitwerking

 Januari 2004

 

 November 2004

 uitwerking

 Januari 2005

 

 Juni 2005

 uitwerking

 Augustus 2005

 

 Juni 2006

 uitwerking

 Augustus 2006

 

Hugs+Bonuspraktikum.

Bij het onderdeel Functioneel Programmeren wordt gebruik gemaakt van de taal Hugs, een variant van de taal Haskell. De software en documentatie van Hugs is gratis beschikbaar voor persoonlijk en onderwijsgebruik. Via het Internet is deze te verkrijgen vanaf de Haskell Home Page  "http://www.haskell.org", link "Learning Haskell", (implementations) link "Hugs", link "downloading". Voor 2IA50 kan volstaan worden met de Hugs98-versie. Een installatie van de vorm "typical" is voldoende.

Om vertrouwd te raken  met Hugs is de opdracht  Beginnen met Hugs   samengesteld. Het wordt aangeraden deze opdracht in de eerste onderwijsweek uit te voeren. In de opdracht wordt gebruik gemaakt van de Prelude (Hugs' standaardbibliotheek) en van de files start.hs  en  Fib.hs

Studenten die 2IA50 voor de eerste keer volgen kunnen, in groepjes van twee, deelnemen aan een bonuspraktikum. Een goedgekeurd praktikum geeft recht op 1 bonuspunt tijdens het studiejaar 2006-2007. Voor dit praktikum dient men zich voor 4 april groepsgewijs aan te melden.
LP-opgaven.

serie 1

 serie 2


Prolog+Praktikum.
Bij het onderdeel Logisch Programmeren wordt gebruik gemaakt van de taal SWI-prolog.
In de handout ``Getting Started with SWI-prolog'' van Eugen Schindler staan o.a. installatieinstructies en een eerste kennismaking met het systeem. Om het praktisch werken enigszins te vergemakkelijken zijn een aantal voorgedefinieerde files beschikbaar:

         astro.pl ,   beerdb.pldbagg.pl ,   queries.pl

De file ``astro.pl'' wordt gebruikt in ``Getting Started'', de overige files zijn nodig in LP-Opgaven, serie 2. De file ``beerdb.pl'' bevat een instantie van een variant op het bier-database schema zoals dat gebruikt wordt bij Databases 1. De file ``queries.pl'' importeert deze database (en ``dbagg.pl'',  aggregatiefuncties)  en bevat enkele queries. In serie 2 wordt gevraagd de file ``queries.pl'' uit te breiden met een aantal nieuwe queries.
 

Rik van Geldrop