Skip to main content

Cavia 4

Page 1

Van de voorzitter Eerstejaarsweekend, Ellertshaar. Elke keer als ik dat woord zie, schiet me het sprookje van Ellert en Brammert te binnen, de twee reuzen die op de hei wonen. Het verhaal vertelt over de onzichtbare draden, die ze over de hei spanden met belletjes eraan zodat wanneer een mens zich op de hei begaf, de reuzen dat hoorden en hem vingen om hem vervolgens te verorberen. Uiteraard lopen sprookjes goed af en worden ze het figuurlijke slachtoffer van hun eigen prooi, een mooi meisje, dat ervoor zorgt dat ze in een twist ten ondergaan en verworden tot een legende waarvan nog steeds niemand weet of het echt gebeurd is of niet. Maar terug naar de werkelijkheid. Terwijl ik in het donkere bos met een piephamer verstopt zit achter een boom, word ik gebeld. Onbekend nummer. Het is een zekere Bastiaan. Omdat de ontvangst zo slecht is kan ik maar met moeite begrijpen dat ze hierheen op weg zijn, maar dat ze Assen hebben gemist (lees: verslapen) en nu in Groningen zitten. Ondanks mijn tegenwerpingen komen ze dan wel met de taxi, of ik kan uitleggen waar het precies is. Ik zeg dat ik wel even terugbel, want ik weet het ook niet. Terwijl ik ophang vraag ik me nog steeds af hoe ze aan mijn nummer komen. Ach, als voorzitter weet je wel vaker iets niet. Later, als we terug zijn breek ik mijn hoofd over hoe ik in godsnaam dat schema voor de sportochtend moet indelen. 2 Films en 3 uur hoofdbrekens later geef ik het op. Had ik nu maar toch Mathematica of Visual Studio meegenomen, dan had ik misschien het wat sneller opgelost. Nouja, morgen schiet me wel iets te binnen. Uitgeput ga ik om 5 uur dan eindelijk naar bed. Hopelijk matigt iedereen morgen een beetje, dan hoef ik ze niet allemaal steeds in de gaten te houden. Maar het is wel erg gezellig. Niels Roosen, Voorzitter

Van de redactie Nadat de VIA’ers langzaam maar zeker van het vakantie houden terugkwamen, en zich opwarmden om weer over te gaan tot actie, stonden daar de eerstejaars studenten alweer voor de deur. Inmiddels, na een geslaagde introductieweek, en een erg leuk eerstejaarsweekend, waar verderop uitgebreid over te lezen valt, en tevens de voorkant naar refereert, zijn er mijn inziens enkele positieve ontwikkelingen: Er staan minder drommen mensen voor een ingang van Euclides of de kantine, waar je je doorheen probeert te worstelen, in de practicumzalen is niet iedereen meer op zoek naar de practicumassistent die zich schuil houdt, en verraste blikken en geforceerde houdingen zie ik steeds minder. Ik krijg de indruk dat ze zich wat meer op hun gemak voelen, onze eerstejaars. De nieuwelingen zijn beduidend minder nieuwelingen. Daarnaast hebben we de groep ouderejaars, die met allerlei goede voornemens zich ’s ochtends op de fiets naar de faculteit wisten te verplaatsen om toch te proberen weer eens goed college te volgen (twee helften bovendien). Deze toeloop is duidelijk weer wat verzwakt. De die-hard fietsers (want het is alweer herfst) hebben weer een plekje in de fietsenstalling, en de kans dat de koffie alwéér op is, lijkt gelukkig minder groot. Ook deze groep voelt zich dus weer meer op z’n gemak. De rust begint weder te keren, de deadlines komen altijd te snel, daarnaast een te grote to-do list, en de vergaderingen beginnen weer op de vorige te lijken. Maar om niet in een sleur te raken, ligt vóór u de nieuwste Cavia! In deze editie veel informatie uit verschillende bronnen, hopelijk voor ieder wat wils. Is echter het lezen alleen niet genoeg voor je, en wil je ook je steentje bijdragen? Lot wordt erg blij van kopij ! Vast tot binnenkort, op één van de activiteiten die we voor jullie in het verschiet hebben. Lot Schutte, Mediacommissaris

2

cavia


Inhoudsopgave 6.

Java of .Net? Wiebe Hordijk

9.

Visitatie Informatica HenriĂŤtte Cramer en Martijn Stegeman

10.

Eerstejaarsweekend

12.

Reguliere Expressies Arjan Scherpenisse

16.

Studeren in het buitenland Anouschka Algoe

18.

L.A.R.P. Elinor Bakker

21.

User-friendly Mathematics prof. dr. Edsger W. Dijkstra

23.

Sectie Programmatuur Inge Bethke

Colofon Cavia is een uitgave van Studievereniging VIA voor de studenten en medewerkers van de studies Informatica, Kunstmatige Intelligentie, BIS en SWI. Het blad wordt gratis verspreid. Adres Plantage Muidergracht 24 1018 TV Amsterdam telefoon: (020) 5255520 e-mail: cavia@uvastudent.org Redactie Elinor Bakker, Ruben Boumans, Marit van Dijk, Wouter van Gent, Ork de Rooij, Arjan Scherpenisse, Lot Schutte (hoofdredactie), David Stibbe. Eindredactie Frank Geerlings, Martijn Stegeman. Advertenties Bel voor meer informatie Arjan Scherpenisse: 06-41322599 of email: acscherp@science.uva.nl Druk De Appelbloesem Pers, Amsterdam Voor een overzicht van toekomstige VIA activiteiten, kijk op de website: http://via.uvastudent.org

Š 2002 Studievereniging VIA Niets uit deze uitgave mag worden gereproduceerd zonder schriftelijke toestemming van Studievereniging VIA.

herfst 2002

3


4

cavia


herfst 2002

5


Java of .Net?

Wiebe Hordijk

Dat Microsoft met .Net zó vernieuwend zou zijn, had niemand verwacht. De universitair geschoolde informaticus zou zowel Java als .Net moeten kennen.

Inleiding Sinds de introductie in 1995 heeft Java een stevige plaats verworven in de software-markt. Java was duidelijk beter doordacht dan de programmeertalen die toen gangbaar waren: C++ is een slordig samengeraapt zootje zonder éénduidige definitie, waar met veel lijm object-oriëntatie tegenaan is geplakt; andere talen zoals Pascal en Smalltalk waren misschien eleganter, maar niet zo krachtig, en Microsoft’s Visual Basic werd al helemaal niet serieus genomen. De strak gedefinieerde, krachtige en elegante taal Java werd dan ook met gejuich ontvangen en is nu in veel organisaties de standaard taal voor ontwikkeling van applicaties. En nu komt Microsoft met iets nieuws. Logisch, want Microsoft deed vrijwel niet mee met Java en ze willen toch met iets beters komen dan de problematische combinatie van Visual Basic en Active Server Pages (ASP) voor Web-applicaties. Dus presenteerde Microsoft in februari van dit jaar het nieuwe ontwikkelplatform .Net (spreek uit: dot-net). En dat Microsoft met zó’n vernieuwend product zou komen, dat had niemand verwacht. Het is nu sterk de vraag wat er gaat gebeuren met de markt voor ontwikkelomgevingen. Is Java nog steeds de programmeertaal van de toekomst? Zullen bedrijven overstappen van Java naar .Net? Als bedrijven de keuze moeten maken tussen Java en .Net, welke afwegingen moeten ze dan maken? En wat betekent dit voor de beginnende informaticus?

De techniek Microsoft zal het zelf niet zo zeggen, maar onder de motorkap lijkt .Net heel erg op Java. Alleen is .Net veel meer dan een programmeertaal alleen: het is een omgeving waarin programma’s kunnen draaien (vergelijkbaar met de Java Virtual Machine), maar ook een complete ontwikkelomgeving. Het is dus beter te vergelijken met producten als IBM Websphere, SilverStream of JBuilder.

.Net bevat meerdere programmeertalen, die allemaal gecompileerd worden tot dezelfde Intermediate Language (IL). Deze IL wordt gerund door de Common Language Runtime (CLR). Daardoor hebben alle .Net-talen dezelfde datatypes. Objecten in verschillende talen in .Net kunnen niet alleen services van elkaar aanroepen, maar ook van elkaar erven! Overerving van classes in verschillende programmeertalen mag gerust revolutionair genoemd worden, en maakt het mogelijk dat programmeurs in een project met elkaar samenwerken zonder elkaars programmeertaal te kennen.

6

cavia


De belangrijkste programmeertalen van .Net zijn Visual Basic (VB.Net), C# (spreek uit: C-sharp) en C++. VB.Net is bedoeld als laagdrempelige manier voor Visual Basic-programmeurs om .Net te leren, maar wijkt zo sterk af van het traditionele Visual Basic dat een Java-programmeur sneller VB.Net kan leren dan een Visual Basic-programmeur. C# lijkt qua syntax erg op Java en is bedoeld om Java-programmeurs over te halen. C++ is de enige taal in .Net waarin je de CLR kan passeren, wat nodig kan zijn om bijvoorbeeld hardware drivers te programmeren. Inmiddels zijn er in totaal meer dan twintig .Net-talen, en dat worden er snel meer. Dit klinkt als een lofzang voor Microsoft, is er dan niets mis mee? Toch wel, een duidelijk minpunt van .Net is juist datgene waarin Java sterk is: platform-onafhankelijkheid. .Net draait alleen op Windows 98, Windows 2000 en Windows XP. Microsoft zelf zegt dat .Net ook beschikbaar komt voor verschillende Unix-versies, maar laten we eerlijk zijn: op korte termijn moeten we daar niet te veel van verwachten. Bij het ontwerpen van de .Net-programmeertalen heeft Microsoft erg goed naar Java gekeken, maar wel met een kritische blik. Beter goed gejat dan slecht verzonnen, luidt een oud ICT-spreekwoord, en in .Net zijn de goede dingen uit Java overgenomen en de slechte verbeterd. Een paar voorbeelden: • Het OO-model van Java is bijna letterlijk overgenomen. .Net kent ook single inheritance, interfaces, abstract classes en data hiding. De packages zijn vervangen door name spaces. • C# heeft een mogelijkheid om vanuit commentaar in de code automatisch documentatie te genereren, die verdacht veel lijkt op JavaDoc. • Ook succesvolle Java-uitindingen zoals streams en exceptions zijn gewoon overgenomen. • Java is nooit bedoeld geweest om op een Web-server HTML te genereren, zoals tegenwoordig in Web-applicaties gebruikelijk is. Daarom is Java Server Pages (JSP) geïntroduceerd. De nieuwe versie van Microsoft’s Active Server Pages (ASP.Net) is een duidelijke verbetering, met een echt event model voor web-pagina’s. Daardoor begint het programmeren van webapplicaties steeds meer te lijken op het bouwen van gewone GUI-schermen. • Met het concept van DataSets heeft Microsoft echt iets nieuws. Een dataset is een gestructureerde verzameling gegevens, die in het geheugen wordt opgeslagen in XML-formaat, maar die te behandelen is als een soort in-memory database. De dataset is de beste manier die ooit verzonnen is om via een 3GL met gestructureerde data om te gaan. • Communicatie met echte databases is in .Net ook prima geregeld. Als je in de code een selectquery codeert om gegevens uit de database te lezen en in een dataset op te slaan, en je wijzigt gegevens in die dataset, dan worden automatisch de insert-, update- en delete-queries gegenereerd om die wijzigingen ook in de database uit te voeren. Kortom, in .Net is het goede behouden en de rest verbeterd. Ik durf dus te beweren dat de programmeertalen van .Net beter in elkaar zitten dan Java. Maar gaat nu iedereen van Java over naar .Net?

Hoe kiest men? De hierboven beschreven technische eigenschappen van .Net hoeven niet doorslaggevend te zijn bij de keuze tussen ontwikkelplatforms. Specifieke omstandigheden van organisaties wegen vaak zwaarder. Enkele voorbeelden van belangrijke criteria bij het kiezen van een ontwikkelplatform zijn: • De applicaties die een organisatie al heeft. Als die veelal in Java zijn geschreven, dan zal de organisatie gewoon Java blijven gebruiken, en terecht. De voordelen van een ander platform moeten dan wel erg groot zijn om over te stappen, en zo groot zijn de verschillen tussen Java en .Net niet dat overstappen de moeite waard is. • De ervaring en kennis van de medewerkers van de organisatie. Als een organisatie veel Javaontwikkelaars in dienst heeft, kost het omscholen naar .Net meer dan het oplevert.

herfst 2002

7


• Computers en operating systems. Als een organisatie veel met Unix-servers werkt en niet met Windows-servers, dan is .Net gewoon geen optie. • Angst voor vendor lock-in. Microsoft is de enige leverancier van .Net, terwijl er veel bedrijven zijn die Java-producten leveren. Als een organisatie bang is om te afhankelijk van Microsoft te worden, kan dat een reden zijn om voor Java te kiezen en niet voor .Net. .Net is dus vooral interessant voor organisaties die met Windows-servers werken, en die nog niet veel in Java geïnvesteerd hebben. Dat zijn er nog genoeg, ondanks de opmars van Java de afgelopen jaren. In de overheid bijvoorbeeld is Centrale Financiën Instellingen (Cfi), een agentschap van het Ministerie van OCenW, al applicaties aan het ontwikkelen in .Net. Vanuit Ordina adviseren we Cfi om deze nieuwe technologie succesvol toe te passen.

Conclusie In de toekomst zullen Java en .Net naast elkaar blijven bestaan. Veel bedrijven blijven of gaan Java gebruiken, en veel bedrijven zullen .Net gaan gebruiken. C++ wordt nu nog veel gebruikt voor applicaties, maar zal in de toekomst met name gebruikt worden voor systeemprogrammatuur. Verder blijven er waarschijnlijk ontelbare kleinere platformen voor specifieke niche-markten (PHP, Uniface, Oracle Designer, etc.) Voor informatici in de toekomst is het belangrijk om kennis te hebben van zowel Java als .Net. De meesten zullen zich in één van deze twee platforms gaan specialiseren. Voor de studenten Informatica en aanverwante richtingen, van wie meer verwacht wordt dan van de gemiddelde programmeur, is de boodschap duidelijk: leer beide! Wiebe Hordijk heeft Informatica gestudeerd aan de VU en werkt nu drie jaar voor Ordina Public Utopics in Leusden. Hij ontwerpt en bouwt informatiesystemen voor verschillende klanten bij de overheid, geeft cursussen Java en adviseert klanten over het bouwen van systemen. Een vrij brede functie dus, wat typerend is voor de medewerkers van Utopics, die ook wel worden aangeduid als ‘schaap met vijf poten’. Vanuit zijn ervaring met Java en Microsoft .Net heeft hij dit artikel geschreven.

De facultaire studentenraad 2002-2003

De facultaire studentenraad is het officiële studenten-inspraakorgaan op facultair niveau. Wij adviseren het bestuur over alles wat met onderwijs en studenten te maken heeft. Sommige beslissingen mogen niet eens zonder onze instemming genomen worden. Een onderwerp waar we veel tijd in gestoken hebben is de Onderwijs- en Examenregeling. Hierin staat bijvoorbeeld hoeveel tentamenkansen je hebt en hoe lang je resultaten geldig blijven. Wij houden ook een vinger aan de pols bij de invoering van de bachelor-master structuur. Vriendelijke groeten, De studentenraad Diamantslijperij, I.110 020 - 525 5878 http://www.science.uva.nl/studentenraad studentenraad@science.uva.nl

8

cavia


Visitatie Informatica

Henriëtte Cramer Martijn Stegeman

Onlangs werden alle informatica-opleidingen in Nederland onderworpen aan een visitatie. Een commissie van de Vereninging van Nederlandse Universiteiten (VSNU) heeft ook onze opleiding Informatica bestudeerd en gesprekken gevoerd met staf en studenten. De voorlopige uitslag, zoals die vlak na de interviews mondeling werd toegelicht door de commissie, leek een vernietigend rapport op te gaan leveren. Het rapport is inmiddels klaar, en hoewel vooral de minister niet blij zal zijn met ons zogeheten rendement, lijken er toch een aantal positieve punten in te zitten. Het wetenschappelijk niveau van de opleiding en de aansluiting met wetenschappelijk onderzoek zijn zeer goed. De opleiding is breed, er komt veel aan bod en de nabijheid met informatiekunde en kunstmatige intelligentie wordt genoemd. Ook de deeltijdhoogleraren uit het bedrijfsleven vindt de visitatiecommissie een positief punt. Nog sterker, mocht je hier ooit afstuderen, dan is de kans groot dat je een prima scriptie hebt geschreven en een alom gewaardeerde afgestudeerde informaticus van hoge kwaliteit bent. Wellicht omdat je je hebt kunnen handhaven ondanks een studielast die in de doctoraalfase 'aan de hoge kant' is? Of omdat je nou eens wél door de propedeuse bent gekomen binnen één jaar? Sommige factoren kunnen dus absoluut als positief geclassificeerd worden. Maar dan hebben wij ook de minder rooskleurige kanten van onze opleiding, en de faculteit in het algemeen; docenten worden maar weinig bijgeschoold, en de onderwijsvormen zijn traditioneel en weinig studieactiverend. Ook is de afstemming en samenhang tussen verschillende vakken verre van optimaal. Het systeem van kwaliteitszorg is aan vernieuwing toe; daarvoor heeft de opleidingscommissie de zware taak de evaluaties te verbeteren. Men lijkt daar goed mee bezig te zijn. Ruimte voor de ontwikkeling van professionele kwaliteiten is er eigenlijk niet. Als afgestudeerde ben je wetenschappelijk goed ontwikkeld, maar bijvoorbeeld het werken in projectgroepen of schriftelijke en mondelinge uitdrukkingsvaardigheden krijgen nauwelijks aandacht. En dan is er het dieptepunt, het rendement: afstuderen doen de informatici dan misschien wel goed, maar niet vaak. Veel studenten blijven zelfs in het eerste jaar al steken. Het onderwijsinstituut lijkt het rapport serieus te nemen en een aantal maatregelen zijn al gesignaleerd. Misschien wel omdat de commissie concludeert dat er na de vorige visitatie bar weinig is gedaan met het rapport. We zijn benieuwd of de laatste ontwikkeling, het docententeam, gaat bijdragen aan samenhang en samenwerking tussen verschillende vakken. En dan nog een laatste punt; de betrokkenheid van studenten is hier behoorlijk laag. Dat kunnen we zeker niet zomaar afschuiven op onze faculteit. Doe er wat aan! Kijk eens rond naar activiteiten buiten je studie, discussieer mee op de onderwijsforums, en eis een plek op in de officiële inspraakorganen. Maar het allerbelangrijkst, bespreek wat je hier wel en niet goed vindt met je medestudenten, en probeer er wat aan te doen! Het hele rapport, inclusief de resultaten van de andere universiteiten, is te vinden op http://www.vsnu.nl/show?id=2494. Het ligt ook ter inzage in de VIA-kelder en -kamer. Eerder dit jaar kwam al het rapport van kunstmatige intelligentie uit, informatiekunde staat op de planning. Opbouw en inhoud van het programma Instroom Doorstroom en rendementen Effectiviteit van de organisatie Faciliteiten en voorzieningen Externe contacten Missie, doelstellingen en eindtermen van de opleiding

herfst 2002

7 7 4 6 7 7

Onderwijsleeromgeving Studeerbaarheid Kwaliteit van de afgestudeerden Kwaliteit van de staf Internationalisering Interne kwaliteitszorg Zelfstudie

6 6 8 7 6 5 6

6

9


Eerstejaars Weekend (EJW) Letterspeurtocht Zaterdag werden we het bos ingestuurd om letters te zoeken en daarmee woorden te maken. Om die letters te verdienen moesten er een aantal opdrachten gedaan worden. We begonnen met bezemvliegen bij Tonnie. Omdat de groep voor ons de bezem gesloopt had, moesten we eerst een nieuwe maken. Het vliegen leverde 2 letters op. Daarna gingen we op zoek naar de volgende opdracht. Het werd janken, letterlijk. We moesten namelijk het moment nadoen dat we ter wereld kwamen. Toen we uitgehuild waren en een lollie in ons mond hadden gingen we verder richting boomknuffelen. Toen we daar aankwamen was Jasper (check) nog bezig de boom waar hij aan hing had mazzel dat er geen gat in zat. Toen de bomen met knuffels weer tot rust waren gebracht gingen we een regendans doen. Helaas begon het niet te regenen. Het heeft de hele dag zelfs niet geregend dus geen enkel groepje heeft de regendans goed gedaan. Toch vreemd dat je daar dan 2 letters voor krijgt. Tussendoor moet je ook handelaren zoeken die de waardeloze letters als de psi, een turkse C of een vaag symbool (“Het komt voor in het unicode alfabet dus het is een letter” – Ork) om te ruilen voor klinkers of bruikbare medeklinkers. Het nadeel van de handelaren was alleen dat ze een kartel hadden gevormd en dat daardoor de prijzen voor letters enorm hoog waren. Na de eerste confrontatie met deze louche handelaren kwamen we Niel2 tegen die duidelijk teveel DragonBall Z had gekeken. De kamehamehaaaaa leverde ons weer een paar waardeloze letters en een extra confrontatie met het Ork-kartel op. Daarna werd het tijd om de zon te bedanken dat hij de regendans niet door liet gaan en gingen we voor een paar letters de zonnegroet doen. Dat was erg rustgevend was na het geweld van de kamehameha. Omdat rust nooit lang kan duren kregen we verderop weer de gelegenheid om onze gevoelens te uiten in oerkreten. Weer hadden we een ontmoeting met de letterdealers annex paparazzi en konden we verder met woorden bedenken. En weer wisselden wild en rustig elkaar af. Dit keer kregen we de gelegenheid om alle negatieve energie die we hadden helemaal weg te duwen. We vonden het allang best, als het maar letters oplevert. Als laatste uitspatting moesten we bij Arnie het water in om daar onze letters vandaan te halen. rnie heeft een watermanie volgens mij, vorig jaar moesten we bij hem OOK al het water in. Na wat laatste geruil en geschuif met letters hadden wij een woord ‘schaken’, vrij saai als je bedenkt dat de winnaars kwamen met het geweldige woord ‘schapenklitje’. - Dennis Kaarsenmaker namens groep 7

Schapenklitjes met vlammetjessaus Ja, over het EJW. Over welk gedeelte van het EJW moet ik schrijven? Ik zou het kunnen hebben over de geweldige activiteiten die op het programma stonden, over de chili con carne die veel te heet was ( 7 bussen vlammetjesaus??, ziek!), over een irritant fenomeen met een blokfluit (check), over een straalbezopen presentator, over kotsende mensen en ga zo maar door. Ik zou ook kunnen vertellen hoeveel bier er gedronken werd en dat soort ongein.

10

cavia


Ik weet eigenlijk ook nog steeds niet waar ik het wel over ga hebben. Ik kan alleen maar dingen bedenken waar ik niet over wil schrijven. Loze discussies die gevoerd werden over de definitie van ‘natuur’ bijvoorbeeld. Ik wil ook niet schrijven over mensen die alleen maar zaten te blowen, of over mensen die alleen maar zaten te zuipen, of over mensen die actief meededen aan de activiteiten. Ik wil niet schrijven over de activiteiten zelf, over wie er won met twister of met voetbal, hoe het winnende woord van het bosspel bedacht is (schapenklitje, welke zieke geest bedacht dat?? O ja, ik...), wie het krat bier in het bos vond, wie het hardste over de gnoomglijder gleed. Allemaal dingen waarover ik niet wil schrijven. Even kijken of er nog meer dingen zijn waarover ik niet wil schrijven, uuhhh ja: corvee, toeters, leiderliedjes, quizzen, bankhangen, slapen, t-shirts en stiften, pannekoeken, biermachines, opblaaspoppen, de buren van Aegee. Nog meer? Nee, ik denk dat het nu wel zo’n beetje op is. Nog één ding: ik heb geen zin om te schrijven hoe leuk ik het wel niet vond. Niet dat ik het niet leuk vond, ik vond het namelijk wel leuk, maar een minder orgineel onderwerp voor een stukje als dit is er volgens mij niet. Kortom, ik heb eigenlijk helemáál geen zin om een stukje te schrijven over het EJW. - Groep 10

Het levend domino Op een willekeurige tijd op een willekeurige dag op een willekeurige plaats zat een duister willekeurig gezelschap in een duistere willekeurige tent. De ideale omstandigheden voor een stille (luidruchtige...?) revolutie. Het gesprek kwam op het ontvagelijke lot van vele picknicktafels. Hun horizontale stand werd als zeer onnatuurlijk en wreed gezien. De idealisten wisten hun pijn te verzachten door het hout weer boomsgewijs, verticaal te plaatsen. Doch, picknicktafels houden ook van een (ver)zetje, dus tafeldomino leek de volgende stap in de revolutie. Velen zullen het zich niet meer dagelijks beseffen, maar slavernij is nog steeds diep geworteld in onze maatschappij. Dit bleek eens te meer toen wrede slavendrijvers met een dwangsom van 3000 euro dreigden, indien de actie werd voortgezet. Aan het lot der picknicktafels kon niets meer gedaan worden, maar het idee van domino bleef voortleven in de geesten der revolutionairen. Besloten werd de aanwezige menigte te mobiliseren tot een ludieke actie: levend domino. Dit gaat als volgt: Men neme om en nabij de 20 personen en plaatst dozen in ene rij. Vervolgens neme men een aanloop en duwt de achterste met een enorme explosie van al uw negatieve energie omver. De rest volgt vanzelf. Naar smaak alcohol toevoegen. De overtreffende trap van negatieve energie werd echter geboden door een wrede, conservatieve boer. Zijn verbod, ondersteund met het impliciete dreigement van uitzetting maakte voor deze avond een einde aan de actie. Echter, een traditie was geboren. Viva la Revolucion! - Het picknicktafelbevrijdingsfront.

herfst 2002

Foto’s eerstejaarsweekend Voor de foto’s van het eerstejaars weekend, kijk op het VIA smoelenboek: http://smoelen.mine.nu

11


Reguliere Expressies

Arjan Scherpenisse

Reguliere wat? Reguliere expressies. Programmeurs zijn onder te verdelen in twee groepen: mensen die ze gebruiken en mensen die ze niet gebruiken. Een beetje programmeur heeft in ieder geval wel eens van reguliere expressies (regexp) gehoord. Ik ben van mening dat de mensen van de tweede groep zo snel mogelijk gereduceerd moet worden. Formeel gezien is een reguliere expressie, zoals de naam natuurlijk al zegt, een uitdrukking in een reguliere taal (zie Linz; Introduction to formal languages and automata). Praktisch gezien zijn reguliere expressies een handige manier om dingen met strings te doen, namelijk kijken of een string een bepaald formaat heeft, of om stukken uit een string te extraheren. Een regexp is een string die een verzameling andere strings beschrijft, volgens bepaalde regels. De karakters in de expressie zijn gewone letters, cijfers, leestekens, enzovoort, maar er is een aantal karakters met speciale betekenissen hebben. Dit is de kracht van de regexp, maar ook de grote drempel voor mensen die ermee beginnen. Deze speciale karakters, tokens of operators genoemd, beschrijven speciale voorwaarden waaraan de string moet voldoen. Later een overzicht van de belangrijkste hiervan. Om de ellende voor die beginnende gebruiker nog groter te maken, is het ook nog zo dat er verschillende standaarden in de omloop zijn, verschillende soorten syntax voor de expressie. De belangrijkste hiervan zijn de officiële POSIX standaard en de syntax die in de programmeertaal Perl wordt gebruikt. In de rest van het artikel gebruik ik de Perl syntax, gewoon omdat ik dat gewend ben.

Voorbeeldjes1 De eenvoudige regexp “ba+p” zegt dat de string moet beginnen met een b, daarna een of meerdere a’s (vanwege de + operator), en daarna een p. Geldige strings zijn dus bv bap, baaap, maar bp niet. De regexp “[0-9][0-9][0-9][0-9] [A-Z][A-Z]” kijkt of een string een postcode bevat. De expressie schrijft voor dat een postcode bestaat uit 4 cijfers, dan een spatie en dan 2 hoofdletters. Als je de expressie van links naar rechts langsloopt, zie je waar de string aan moet voldoen: eerst vier keer een karakter tussen de 0 en de 9, dan een spatie, en dan 2 karakters in de range A-Z.

Overzicht speciale karakters Er zijn verschillende speciale karakters: tokens die bepaalde karakters in de string matchen, en operators die dingen over voorgaande tokens bepalen. . \s \w \d […]

‘Any’: Dit matcht met een willekeurig teken in de string. ‘Whitespace’: dit matcht met één karakter dat whitespace bevat: een tab, een return, of een spatie. ‘Word’: Dit matcht met een alfanumeriek karakter, dus een letter of een cijfer. ‘Digit’: Dit matcht met een cijfer van 0 tot 9. De karakters die tussen de blokhaken staan worden beschouwd als een ‘or’, en matchen altijd met één karakter: [ab] betekent dus: karakter a of karakter b.

In Perl staan reguliere expressies altijd tussen zogenaamde delimiters: tekens die het begin en het einde van de expressie aanduiden. Standaard wordt hier de slash voor gebruikt. Ik laat de slashes echter achterwege om het geheel duidelijker te maken. 1

12

cavia


Deze operator bepaalt dat vorig (eventueel speciaal) karakter nul of meerdere keren voor mag komen in de string. + Deze operator bepaalt dat vorig (eventueel speciaal) karakter één of meerdere keren voor moet komen. ? Het vorige karakter mag 0 of 1 keer voorkomen. {nr} Deze operator bepaalt dat vorig (eventueel speciaal) karakter precies n keer voor moet komen. $ Mits geplaatst aan het einde van de expressie, matcht de $ met het einde van de string (vigebruikers krijgen een deja-vu). ^ Matcht met het begin van een string, indien aan het begin van de expressie geplaatst. Anders is het een ‘not’ voor het volgende karakter. (…) De haakjes worden gebruikt om strings te groeperen, bv voor gebruik met de ‘or’ nadat de string gematcht heeft, stukken string uit de expressie te kunnen halen. Zie de voorbeeldjes onderaan het artikel. *

Er zijn nog meer speciale tekens, maar dit lijkt mij voor deze introductie wel even voldoende.

Implementatie in verschillende programmeertalen Perl print “$_ bevat een geldige postcode!\n” if (/[0-9]{4} [A-Z]{2}/);

PHP2 if (preg_match(“/[0-9] [A-Z]/”, $postcode)) echo $postcode . “ bevat een geldige postcode!\n”;

Python import re expr = re.compile(“[0-9]{4} [A-Z]{2}”) if re.match(postcode) != None: print postcode, “ bevat een geldige postcode!”

Uiteraard wint Perl het qua compactheid. Maar uiteindelijk is Perl natuurlijk gewoon een opgevoerde reguliere-expressie-parser :) Verder heeft tegenwoordig elke zichzelf respecterende taal wel een interface voor reguliere expressies. Gewoon een kwestie van creatief googlen…

Toepassingen / voorbeeldjes Om af te sluiten, een aantal voorbeeldjes van eenvoudige en wat minder eenvoudige reguliere expressies Expressie

Matcht met:

Maar matcht NIET met

ca+b

cab, caaaaaaab

cd, cfoob

a[bc]d?

abd, ac

Ad

(ht|f)tp://

http://, ftp://

mailto:

PHP heeft meerdere regexp-functies: ereg* zijn de functies voor posix-reguliere expressies, en preg_* zijn de functies voor perl-stijl expressies. 2

herfst 2002

13


String extractie Expressie

Input

Extraheert

(.*)@(.*)

blaat@microsoft.com

blaat, microsoft.com

<a href="(.*?)">

<a href="bla.php">

bla.php

String-vervanging In perl is de speciale regexp s/ operator aanwezig waarmee je via een reguliere expressie stukjes string kan vervangen. De /g switch aan het eind van een expressie zegt dat alle voorkomens moeten vervangen, de /i switch zegt dat het matchen case-insensitive moet geschieden. Expressie

Input

Output

s/noot/mies

Aap noot mies

Aap mies mies

s/mies/noot

Aap mies mies

Aap noot mies

s/mies/noot/g

Aap mies mies

Aap noot noot

s/mie*s/noot/g

Aap mis mieeees

Aap noot noot

Zoals je ziet, de mogelijkheden zijn onbeperkt. And this is just the beginning.

David Stibbe

14

cavia


Advertentie ABN

herfst 2002

15


Studeren in het buitenland

Anouschka Algoe

Misschien dat enkelen van jullie mij nog kennen van de OnLine uit de tijd van Panta Rhei. Tussen toen en nu heb ik niet stilgezeten. Ik ben in mijn derde studiejaar vijf maanden weggeweest om in Maleisië te kunnen studeren. Iedereen die zegt dat je een jaar van te voren moet beginnen met plannen, als je wil studeren of stage wil lopen in het buitenland, heeft absoluut gelijk. Een jaar voordat ik wegging, wist ik zeker dat het een Aziatisch land zou worden. Europa was te dichtbij, Amerika en Australië zijn toch ‘meer van hetzelfde’. En de rest van de wereld trok me nog niet echt. Van de Aziatisch landen heb ik uiteindelijk voor de Universiti Sains Malaysia gekozen, omdat er een uitwisselingsprogramma via de FEE was, en omdat ik dan daar mijn eigen vakken mocht kiezen. Toen ik daar aankwam bleek een vakkenpakket te zijn samengesteld voor de uitwisselingsstudenten van het semester 2001/2002: het South-East Asia (SEA) package. Het SEA package bestaat uit vakken die vooral gaan over Maleisië en de rest van Zuid-Oost Azië op economisch, politiek, religieus, sociaal en artistiek gebied. Het zijn hele interessante vakken, en je leert het land en de regio zeker beter begrijpen. Het enige nadeel is, dat je niet echt de kans krijgt om lokale studenten te leren kennen. Ik heb daarom een ‘English’ class genomen, die ik volgde met allemaal ‘locals’. We moesten elke week een speech voorbereiden en prestenteren. Maleisiërs zijn over het algemeen vrij verlegen, dus tot mijn verbazing kwamen ze helemaal los tijdens deze les. Vrijwel alle jongens gaven een speech, omdat ze de FA cup in ontvangst mochten nemen (Engels voetbal is daar extreem populair). Anderen waren weer de getuigen van het huwelijk tussen P. Diddy en J. Lo. Een van de studenten begon zelfs te zingen als eerbetoon aan Kurt Cobain. Hele gezellige toestanden daar in die les! Maleisië heeft ook een officiële taal, het Bahasa Malaysia. Maar omdat het een voormalig Britse kolonie is, kan iedereen perfect Engels. Ik heb de pech (of het geluk) dat ik daar wordt aangezien voor local, dus men spreekt me aan in het Bahasa. Daarom was het voor mij wel handig om de taalcursus te volgen. Dan kan je toch de eerste twee zinnen met die mensen van een ‘pasar mini’ (kleine supermarkt) of een ‘gerai’ (etenskraampje) meepraten. Ze komen er al snel genoeg achter dat je geen Maleisiër bent, en schakelen probleemloos over op het Engels (of eigenlijk noemen ze het daar ‘Menglish’, een combinatie van Malaysian en English). Als je echt alleen naar Maleisië gaat om te studeren, denk ik wel dat je een beetje teleurgesteld zal worden. Het onderwijs is misschien niet zo goed als je zou verwachten. Het is daar veel schoolser en de docenten zijn minder overzichtelijk in hun presentatie. Er is minder literatuur per vak, en eigenlijk is er gewoon minder stof per vak. Zelfs met vijf vakken, had ik maar twee dagen les, waarvan er nog veel dagen uitvielen door de vele feestdagen in het tweede semester (Maleisië staat bekend als het land met de meeste feestdagen ter wereld, dit komt door de drie bevolkingsgroepen die er wonen. De bevolking komt hoofdzakelijk uit Maleisië, China en India).

16

cavia


Natuurlijk klaagde niemand van de internationale studenten over zoveel vrije tijd! De groep bestond uit vijftig internationale studenten uit Europa, Australië, Canada en Japan. We verbleven in luxe appartementen net buiten de campus en die zijn uitermate geschikt om feestjes te geven. Elke week werd er wel iets georganiseerd in een van de appartementen of bij het zwembad. Het uitgaan op Penang is ook heel erg aan te raden. Het zijn de Chinese clubs die de toon zetten met cocktail bars, exotische dansers en live muziek. Maar het eiland Penang is best klein, en op een gegeven moment ben je wel uitgekeken. Veel studenten kozen er voor om te gaan reizen. Penang is een uitstekend uitvalsbasis voor het schiereiland van Maleisië. Je kunt er zoveel mooie plaatsen bezoeken: Kuala Lumpur, Cameron Highlands, Melacca, Langkawi en Singapore. Pulau Penang is ook maar een uurtje van Zuid-Thailand en vijf uur met de bootferry naar Indonesië (Sumatra). Ik denk dat ik in die vijf maanden vaker op vakantie ben gegaan dan in mijn hele leven samen! Ik raad jullie zeker aan om, als jullie met de droom lopen om tijdje in het buitenland te studeren, het gewoon te dóen. Je studie loopt misschien wat vertraging op, maar je hebt een hele leuke tijd en je leert heel veel andere dingen. Als jullie nog iets willen weten over het studeren in het buitenland of over Maleisië, kunnen jullie me altijd aanspreken of een mailtje sturen (aralgoe@science.uva.nl). Sampai jumpa lagi! Anouschka Algoe

Robotvoetbal-scriptie wint UvA-scriptieprijs Tijdens de afstudeermanifestatie op de Universiteitsdag van de Universiteit van Amsterdam is aan zes nieuwe doctorandi een prijs uitgereikt voor hun excellente afstudeerscriptie. Op zaterdag 15 juni ontvingen zij in de Rode Hoed de UvA-scriptieprijzen. Temidden van een grote groep studenten die in het jaar 2001-2002 zijn afgestudeerd aan de UvA, luisterden zes kersverse doctorandi naar de lof die de jury wijdde aan hun doctoraalscripties, die een breed spectrum aan vakgebieden bestrijken. De UvA sprak bij monde van de juryvoorzitter van een “tot optimisme stemmend gevoel van trots” op deze nieuwe talenten. De derde prijs-winnaars deden alles dubbel. Het duo Jelle Kok en Remco de Boer studeerde in twee vakken cum laude af: Informatica en Kunstmatige Intelligentie. Zij schreven samen in stijlvol Engels een scriptie over robotvoetbal. Kok en De Boer ontwikkelden een 'drie-lagen architectuur', een 'effectieve team strategie' en een 'optimale scoring policy', en hebben hun goed gedocumenteerde software ter beschikking gesteld aan de RoboCup-gemeenschap. Ze gaven hun wetenschappelijk werk ook een praktische uitwerking. Met een UvA-team bereikten ze de vierde plaats in de RoboCup wereldkampioenschappen in Seattle in 2001, en de eerste plaats tijdens de German Open kampioenschappen in 2002. Hun scriptie kan gezien worden als een handboek voor het ontwikkelen van een simulatie voetbalteam. De derde prijs bestaat uit een geldbedrag van 1000 euro.

herfst 2002

17


L.A.R.P.

Elinor Bakker

LARP staat voor Live Action Role Playing, een hobby voor sommigen, een verslaving voor de rest van de mensen die hieraan meedoen. Riddertje spelen voor volwassen noemen de vrienden, familie en andere verwaarloosde individuen in mijn nabijheid het. Wijzelf, de larpers, noemen het liever amateur toneel in een specifieke fantasy setting. Cultuur dus, minstens. Elke nerd, oftewel frequent computergebruiker, specialist- en/of verslaafde weet zo ongeveer wel wat RPG betekent. RPG staat voor Role Playing Game en hiervan heb je meerdere varianten. De inmiddels bekendste variant is RPG als een genre in computerspellen. Hiervan is er een breed assortiment aanwezig in de schappen van de huidige computerspeciaalzaken en speelgoedwinkels. Bekende titels zijn ‘Baldurs Gate’, ‘Icewind Dale’ en het nieuwe ‘Neverwinter Nights’. Wat een RPG onderscheidt van een ander spel is dat je in de huid van je personage (avatar) kruipt en met verschillende andere personages interacteert. In deze interactie heb je de mogelijkheid tot het maken van keuzen over wat je doet. Ben je aardig? Gemeen? Moordzuchtig? Nobel? Enzovoorts. Echter door het gebruik van de computer zijn de mogelijkheden wat beperkt, bovendien is alleen voor je computer zitten nou niet echt gezellig te noemen. Er bestaat al meer dan 30 jaar een andere variant van RPG waarbij de computer niet nodig is. Ooit begon dit met het bekende Dungeons & Dragons wat inmiddels in de 3e editie populairder is dan ooit. Deze variant wordt meestal gespeeld met een groep van een man of 4 en een zogenaamde spelleider, genaamd de Dungeon Master (DM). Met dobbelstenen die beschikken over verscheidene hoeveelheiden vlakken wordt bepaald of die groep trollen wel of niet over je heen loopt. Tabletoppen noemen wij larpers deze variant. Hier bestaat echter alle interactie met zogenaamde Non Playing Characters, die door de DM gestuurd worden, uit interactie met de DM. Op een LARP evenement echter is alles ‘echt’. Iedereen draagt een kostuum, gebaseerd op fantasy of middeleeuwse kleding en is even iemand anders, zijn of haar character. In Neverwinter Nights sta je voor een groep hongerige trollen en met een paar klikken op de muis liggen ze dood op de grond. Bij D&D sta je op papier voor een groep trollen, zegt zonder dat de moed je in de schoenen zinkt dat je aanvalt en grijpt naar je dobbelstenen. Op een LARP sta je met je zwaard in de hand voor een groep redelijk realistisch aangeklede trollen die naar je grommen en klauwen. En ja, als je in het echt gewoon niet kan vechten eindig je als trollenhapje. Natuurlijk zijn er op gebied van LARP enkele concessies gedaan met de realiteit. Zo is het niet gewenst dat er echte metalen zwaarden worden gebruikt, dit omdat de dood van je character niet betekent dat je zelf ook het loodje moet leggen. Bovendien zou er niemand meer mee willen doen als de helft van de deelnemers in het ziekenhuis eindigde. Laten we de realiteit niet uit het oog verliezen. Magie is een andere consessie. Iedereen weet dat magie bestaat in fantasy verhalen en RPGs, dus ook in LARP settings. Echter hoe speel je dat je een vuurbal op iemand laat neerkomen? Magie werkt op de grond van regels, elke speler kent alle spreuken en als je ziet dat iemand een spreuk gebruikt reageer je daarop. Hierbij heb je dus wel een flinke portie fantasie nodig.

18

cavia


Zo heb je dat portie fantasie ook wel nodig bij het inleven in je personage, en het bedenken van diens achtergrond. Een van de leukste dingen van LARP is immers dat je met elkaar in dezelfde fantasiewereld leeft en dus kunt reageren op elkaar binnen de regels van de geschapen realiteit. Als je een botte boer speelt en je ziet een onwijs mooie vrouw lopen dan probeer je haar niet te versieren, maar je slaat haar gewoon bewusteloos en sleept haar mee. Speel je echter een vrouw die een aantrekkelijke man een botte boer ziet spelen dan loop je er lekker met een grote boog omheen, want immers van botte boeren moet je niets hebben als bevallige deerne van het hof van Bladiebla. Vechten gebeurt in veel RPGs overvloedig. Ook in LARPs heb je ondoden, orcs en vreselijke slechterikken met een lelijke kop. Als heldhaftige speler moet je die monsters op een of andere manier een kopje kleiner maken zonder de mensen achter de maskers echt om zeep te helpen. Daarom wordt er gevochten met veilige latex wapens. Dat zijn wapens met meestal een glasvezel kern die omwikkeld is met schuimmateriaal van een bepaalde dikte, dan in vorm gesneden en met vloeibare latex geverfd en waterdicht gemaakt. Dit klink lomp, maar het resultaat mag er wezen. Met deze wapens mag nooit gestoken worden, in verband met de kern van het wapen, maar verder mag je er lekker op los beuken. Het hoofd is geen locatie en mag niet worden geraakt, want met een met latex omwikkelde kern van glasvezel kan nog steeds goed hard aankomen. Daarom is het enige letsel wat deze door veel mensen gevaarlijk genoemde hobby vaak maar een paar blauwe plekken. Om een ander te raken moet je dus ook goed zijn in vechten met het wapen wat je hebt en techniek beheersen, bovendien is een goede lichamelijke conditie geen overbodige luxe. Evenementen duren meestal enkele dagen en er is bijna elk weekend wel wat te doen. Behalve in de winter want kamperen in de winter is wat koud. Er wordt meestal gekampeerd al vinden sommige evenementen plaats op een kampeerboerderij of iets dergelijks waar er binnen geslapen kan worden. Voor wat voor mensen is larpen nou de ideale hobby? Je mag pas vanaf 16 jaar meedoen maar daarboven zie je alle leeftijden op evenementen. Er komen over het algemeen bijna even veel vrouwen als mannen op nederlandse larps. Je moet niet vies zijn van een beetje toneelspelen, of bang zijn om af en toe een paar klappen met latex wapens te ontvangen. Verder helpt het als je van Fantasy houdt en de afkorting RPG een integraal onderdeel van je leven is. Hoewel het mij opvalt hoeveel van mijn vrienden van fantasy en RPG houden maar het idee van LARP absoluut afstotend vinden. Ik ren in ieder geval half oktober weer rond als Idarell de Elf op de Vortex (Apeldoorn voor sommigen). Relevante links www.malatie.nl www.larp.nl www.liveroleplaying.nl

herfst 2002

19


20

cavia


herfst 2002

21


Edsger Dijkstra overleed afgelopen zomer, nog geen drie jaar na het afscheid van zijn laatste werkgever, de University of Texas. Kijk voor meer geweldige notities, lezingen en college-toespraken in het archief: http://www.cs.utexas.edu/users/EWD/ - Afgedrukt met toestemming van de erven Dijkstra. Zeer veel dank hiervoor, en ook dank aan Hamilton Richards voor de bemiddeling.

22

cavia


Sectie Programmatuur

Inge Bethke

Het Instituut voor Informatica (IvI) bestaat (in de zomer van 2002) uit 5 secties, waaronder de sectie Programmatuur. De hoofdonderwerpen die in deze sectie bestudeerd worden zijn programmeermethoden, onder leiding van Jan Bergstra, en programmeeromgevingen, onder leiding van Paul Klint. Op het gebied van programmeermethoden houden we ons vooral bezig met het ontwerp en het systematische gebruik van algebraĂŻsche methoden in specificatietalen, het modelleren van processen en het transformeren van programma's. Twee voorbeelden die ook in het curriculum voorkomen, zijn programma-algebra (eerste studiejaar) en procesalgebra (derde studiejaar). Programma-algebra bestudeert de syntactische aspecten van programmaâ&#x20AC;&#x2122;s zoals sprongopdrachten, recursie en multi-threading. Hier staat niet zozeer het gedrag van een programma centraal, als wel het pad van een programmatekst, een rijtje instructies, naar de executie van het programma. Programma-algebra is een bruikbare theorie voor bijvoorbeeld de analyse van programmatransformaties zoals die optreden bij compilatie. In tegenstelling tot programma-algebra benadert procesalgebra de analyse van programma's en geprogrammeerde systemen vanuit de semantische invalshoek. Hier wordt juist wel van de tekstuele en syntactische vorm van een programma geabstraheerd. Men spreekt dan over processen en kan in termen van gedrag redeneren. Programmeertalen en applicaties vereisen interactieve tools die ontwikkeling, onderhoud en renovatie ondersteunen. Binnen het tweede hoofdthema van de sectie Programmatuur, programmeeromgevingen (vierde studiejaar), staan dan ook problemen centraal die zich voordoen bij het bouwen van geavanceerde grafische user-interfaces en de ontwikkeling van implementatieen integratiemethoden voor gedistribueerde, interactieve systemen zoals bijvoorbeeld databases. De technische basis voor dit onderzoek is de zogenaamde ASF+SDF omgeving. Met behulp van deze interactieve omgeving kunnen zowel ASF+SDF specificaties worden ontwikkeld als nieuwe programmeeromgevingen worden gegenereerd. Met deze projecten tracht de sectie een bijdrage te leveren aan de ontwikkeling van betere en meer betrouwbare software, en dat op een systematische manier. De grondgedachte is hierbij dat programmeren, programmeertalen en geprogrammeerde systemen pas dan goed kunnen worden begrepen als het ontwerp en de analyse op een conceptueel en wetenschappelijk nivo plaatsvinden. Naast dit onderzoek verzorgt de sectie ook een reeks elementaire colleges zoals programmeren, datastructuren, software engineering, beveiling van computersystemen, vertalerbouw en modulealgebra. Hiernaast bieden we verschillende opties tot afstuderen aan, zoals - een theoretisch project: nu staan in de belangstelling zaken als mobiele processen, processen met tijd, de koppeling tussen processen en datatypen; - een praktisch/conceptueel project: hierbij valt te denken aan modellering van workflowmanagement, een studie van zogenaamde `feature interactie', bestudering van talen voor parallel computing, gridprotocollen; - een industrieel project: bij Philips Research, KPN, NS, Ned. Haarlem en andere bedrijven zijn geregeld opties om aan systeemanalyse, specificatie, verificatie en simulatie te werken. Bij industriele projecten is altijd sprake van een multidisciplinaire setting waarbij naast de theorie het thema van de toepassing een dominante rol speelt. Relevante links de 5 secties van IvI: http://www.science.uva.nl/research/cs sectie Programmatuur: http://www.science.uva.nl/research/prog

herfst 2002

23


Advertentie Ordina


Turn static files into dynamic content formats.

Create a flipbook
Cavia 4 by Vereniging Informatiewetenschappen Amsterdam - Issuu