Programming in Haskell 2017 Course

We're excited to announce the sixth edition of the Programming in Haskell (PUH) course! The course will be offered in the Fall semester of AY 2017/2018. Students of all study levels and profiles are invited to join!

Haskell (http://www.haskell.org) is an advanced, purely functional programming language. Functional programming languages allow for the development of robust, concise programs in a short amount of time. Haskell will change your perspective on programming and make you a better programmer, regardless of the language you program in. Allow yourself the epiphany of discovering this remarkable perspective on programming!

PUH (http://www.fer.unizg.hr/predmet/puh) gives an introductory but thorough treatment of Haskell programming. You will learn the basic concepts of functional programming and develop your Haskell programming skills by solving a variety of problems, as part of in-class hands-on exercises, regular homework assignments, and a final project.

Important dates

  • Applications open: Aug 7, 2017

  • Applications close: Sep 22, 2017 at midnight

  • Notification of acceptance: Sep 27, 2017

  • Class start: Oct 3, 2017 at 6:15 pm (TBC)

Read on for more information about PUH and application procedure.

When, where, and how?

The lectures will be held on Thursdays, 6:15-8:30 pm in lecture room D272, plus two additional lectures on first two Tuesdays, 6:15-8:30. Distance learning is not offered for this course. The course will be held in English (level L3). The course ECTS credits (4 ECTS) count towards the "Skills" ECTS quota.

Applications

All students need to apply. The applications are submitted online. Besides the basic data, the application includes a questionnaire and a motivational letter of at most 200 words. Students of all levels and profiles can apply, provided they have passed the Programming and Software Engineering course and Algorithms and Data Structures course, or have equivalent skills.

Numerus clausus

For organizational reasons, the number of participants is limited. All applications will be evaluated. The evaluation will consider candidate's professional profile and motivation for attending the course. In case of a tie precedence will be given to second year MA students,  students who have not previously enrolled in this course, and students who applied earlier. Incoming exchange students will be accepted unconditionally.

Applications from non-FER students and non-students

PUH is open to highly motivated non-FER students as well as non-students, including future and past students. Such participants must also apply (see above) but their applications will be evaluated extra quota. Note that the following restrictions apply: (1) no certificate of attendance will be provided and (2) homeworks and project assignments may not be graded. An exception are the UNIZG students that work out the formalities with their administration offices. We reserve the right to reject applications due to participant unsuitability or our limited resources.

Course enrollment requirements

All participants are required to (1) have a notebook/laptop that they can use for in-class hands-on sessions, (2) have a good command of English, (3) ensure that they can attend all classes (with at most one class absence), (4) devote at least 8 hours a week for homework/project assignments, (5) devote about 1 hour a week for peer-reviewing the homework of your fellow students. Only one excused class absence is allowed; class absence policy will be strictly enforced. No previous knowledge of functional programming is required.

The estimated total workload for this course is 135 hours.

Course passing requirements

The students must fulfill the following requirements to pass PUH:

  1. Attend all but at most one lecture

  2. Score at least 50% on each homework assignment

  3. Score at least 50% on the final project

  4. Pass the midterm exam

  5. Complete all peer review assignments in the time allotted

Additional information

Why should I learn to program in Haskell?

There are many reasons, perhaps the biggest of which is that using Haskell will change your perception and understanding of programming. That's also why it's hard to give a satisfying answer to this question, when the question comes from someone who doesn't yet know Haskell, while someone who already know it doesn't need an answer anymore. Huh, an epistemological conundrum!

We suggest you start by watching this video:

http://www.youtube.com/watch?v=Fqi0Xu2Enaw

Then have a look at these discussions:

http://stackoverflow.com/questions/775726/whats-the-fuss-about-haskell
http://stackoverflow.com/questions/3175656/why-should-i-want-to-learn-haskell

Next, read the interview with the author of "Real World Haskell":

http://broadcast.oreilly.com/2009/01/why-you-should-learn-haskell.html

If you want to know more about the basic motivation behind Haskell and functional programming in general, listen to what the founding fathers of Haskell have to say:

http://www.youtube.com/watch?v=iSmkqocn0oQ

Finally, a must-see:

http://www.youtube.com/watch?v=5TMojC0Nb6A

And a must-read:

http://www.xent.com/pipermail/fork/Week-of-Mon-20070219/044101.html

 

Now, isn't that convincing enough?

Autor: Jan Šnajder
Popis obavijesti