Home
•
Education Page
•
Schedule
•
Literature
-
Errata
•
Example Code
•
Practical Exercises
•
Haskell Tutor
•
Q & A
•
Regulations
•
Marks
•
Oude Tentamens
•
Link to Online prolog Interpreter
All about Haskell
Miscellaneous
•
Getting Help
•
Haskell chat
•
Advies Van Eerdere Studenten
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Web Home
FP
---+ Bachelor Course on Functional Programming <div class="newsbar"> *[[WebNews][News]]* %INCLUDE{WebNews}% *[[WebEvents][Upcoming Events]]* %INCLUDE{WebEvents}% </div> %TOC% <div style="border:4px solid red; margin: 3em; padding: 1em; width: 50%"> Het blijkt dat de inschrijflimiet voor dit vak is bereikt, maar inmiddels ook is opgehoogd. LET GOED OP DE ZALEN; er wordt geprobeerd iedereen een zitplaats te geven, maar in het begin zal er misschien ook een beetje op de trappen gezeten moeten worden. </div> <!--Where applicable I have removed your exam from the pile. I got a question about how to study so you may pass in January. As many of you will have noticed when doing the exam for this course it is not sufficient that you can understand an Haskell program, but we also require that you can write small programs without compiler assistance. The good news is that my imagination is limited, and that thus most questions come from/are inspired by: * the lecture notes * the exercises in the lecture notes * the extra exercises placed on the website * previous exams So most of you just have to practice, and this will take time and effort. I think it is not wise to postpone this process until say the Christmas break. Make a plan for yourself which exercises you want to make in the coming weeks. You may make one or two of the old exams by yourself every week, until you know all the exercises by hearth. Just realise: how many functions you had to differentiate in high school before it went fluently. For most exercises it holds that after you have made them and if you understand them well, you should be able to explain to yourself while sitting on your bicycle or in a train/bus how to proceed when you are again confronted with the same or a similar exercise. usually there are one or two key points, and once you recognise or remember them the rest of the code should follow automatically. Some more things you might do: * find a partner which is in the same situation as you and make an agreement that you will make old exams together. This will enforce some discipline in case you are lacking some. * play a role game where one of you is me and the other one (him/her)elf, and ask questions about the material and check whether the answers given are correct * make a =list-of-tricks= which you can apply, like "accumulating parameter", "handle the simple case first", "tupling", "recognise the recursive structure", "use lazy evaluation to refer to a value you do not know yet", etc. * earn to see whether you have covered all cases in a function definition and whether patterns do not overlap unintentionally * make sure that you understand the underlying principles. In the exam I try not to test whether you know the algorithms, but whether you know ad understand the underlying principles of programming in a lazily evaluated, strongly typed functional language. If you cannot find a partner I am prepared to form the role of match-maker, Students with an F number will be allowed to take part in the reseat anyway. There will be be an extra opportunity to do the FP exam for HBO students, who are doing their course as part of a minor program. Please let me know if you plan to participate. </div> --> ---+++ The course this year The audience of this year's course instance will be mixed: * regular CS bachelor students, * students from the CKi bachelor program, * students from the HBO, * various interested individuals, * students who start with the COSC master program, but do not have a background in functional programming. As a result of this mixed audience we had to make some choices of which we hope they will work out as expected. If you have any questions or suggestions for improvement please let us now immediately, and do not wait until after the exams. ---+++ Prerequisites We expect: * that you - besides having a basic knowledge of an imperative language like C, C++, java or C#- have also seen most of the fundamental data structures, such as binary trees, search trees, lists, as taught in the course on Data Structures * that you are substantially more mature with respect to planning of your study and are prepared for quite some more self-study; we will not try to put pressure on you with respect to handing in material or exercises. We will however hand out exercises to be made at home, and which will be discussed at the "werkcollege". * instead of having separate "werkcollege" and a "practicum" we have combined sessions, in rooms where we have computers available. You thus will be able to try out your assigments during these sessions. We do however have now 8 contact-hours per week instead of 10. You can ask questions about the practical exercises during the "werkcolleges". The time should however mainly be spent on making the exercises from the lecture notes. ---+++ Lecture Notes The lecture notes are in continuous transit, since in recent years there have been quite a large number of larger and smaller changes to Haskell and its libraries; we have started to rewrite the notes in English and to make them up to date with the current main Haskell implementation and the more advanced level of the course as much as possible; this is however a large endeavour. Please let us know when you see inconsistencies, typos, mistakes and material left over from the past which does not apply anymore. _Getting the notes perfect is a joint effort of lecturers and students_. All suggestions are more than welcome. It does not make sense to mention that there are msitakes in the Lecture Notes at the course evaluation form; please report them beforehand! This year there is an extra chapter on ho to find types of expressions, and the chapter on classes has been extended to cover some classes which are playing an increasingly important role in many libraries. We will make available a version in the B5-format; we are interested to learn about your experience on e-readers. ---+++ Software In the course we will be using the latest version of the Glasgow haskell compiler and related tools. This software has been packaged in the so-called Haskell platform: <center> <a href="http://hackage.haskell.org/platform" class='external text' title="http://hackage.haskell.org/platform" rel="nofollow"><img src="http://hackage.haskell.org/platform/icons/button-100.png" alt="button-100.png" /></a> </center> <!-- ---+++ Calendar entries By subscribing your calendar program to the url [[http://www.science.uu.nl/ow_app/roostersFIN/usercontrols/iCalendar.ashx?departement=inf&blok=blok%201,1&collegejaar=2011&taal=nl&cursus=INFOFP][FP events block 1]] and [[http://www.science.uu.nl/ow_app/roostersFIN/usercontrols/iCalendar.ashx?departement=inf&blok=blok%202,2&collegejaar=2011&taal=nl&cursus=INFOFP][FP events block 2]] you will automatically be informed about room updates, etc. --> ---+++ Dutch Haskell User Group The Dutch Haskell User Group is group of people who like to talk about Haskell during social events; sometimes there is a meeting with presentations. Its metings are a great way to meet people form Dutch companies which use Haskell. Click on the logo below. Students are welcomed at the [[http://www.google.com/calendar/embed?src=sv7tbnq0qon2sb1k2abb80i66k%40group.calendar.google.com&ctz=Europe/Amsterdam][monthly meetings]] (which sometimes are just drinking beer together). <center> [[http://haskell.org/haskellwiki/Dutch_HUG][<img src="%ATTACHURLPATH%/Dhug.png" alt="Dhug.png" width='256' height='256' />]] </center> <!-- * Set PREV_SKIN = notitle -->