Naslovnica Pretraživanje AAA
IZBORNIK PREDMETA
 
GLAVNI IZBORNIK
 
 
PROGRAMIRANJE U HASKELLU
Šifra: 127252
ECTS: 4
Nositelji: izv. prof. dr. sc. Jan Šnajder
Izvođači: izv. prof. dr. sc. Jan Šnajder - Laboratorijske vježbe
Prijava ispita: Studomat
Engleski jezik:

1,1,1

Svi elementi nastave na predmetu provode se na engleskom jeziku. Ova razina uključuje i predmete s više nastavnih grupa (u hrvatskoj grupi nastava je isključivo na hrvatskom jeziku, a u engleskoj grupi isključivo na engleskom jeziku).
Opterećenje:
Vrsta nastaveUkupno
Predavanja 30
Laboratorijske vježbe 15
* Opterećenje je izraženo u školskim satima (1 školski sat = 45 minuta)
Opis predmeta:
Ovo je uvodni tečaj programiranja u naprednome, čisto funkcijskome programskom jeziku Haskell. Funkcijski programski jezici omogućuju brz razvoj robusnih i konciznih programa. Njihove su ključne prednosti apstrakcija putem funkcije višega reda te napredan tipski sustav koji jamči sigurnost i ponovnu iskoristivost koda. Na predmetu se temeljito podučavaju osnove programiranja u Haskellu i osnovni koncepti funkcijskog programiranja. Tečaj kreće od jezičnih konstrukata i osnovnih tipova podataka, nastavlja s funkcijama višeg reda i funkcijskim obrascima te završava s ulazno-izlaznih podatkovnim tokovima i monadama. Praktično iskustvo studenti stječu rješavanjem brojnih problemskih zadataka u okviru predavanja i domaćih zadaća. Cilj predmeta nije samo učenje novog programskog jezika, već i upoznavanje s novom programskom paradigmom te radikalno drugačijim i matematički sofisticiranim pristupom programiranju.
Literatura:
  1. Learn You a Haskell for Great Good!: A Beginner's Guide; Miran Lipovača; No Starch Press; 2011; ISBN: 1593272839
  2. Progamming in Haskell; Graham Hutton; Cambridge University Press; 2007; ISBN: 0521692695
  3. Real World Haskell; Bryan O'Sullivan, Don Stewart, John Goerzen; O'Reilly Media; 2008; ISBN: 0596514980
  4. Haskell: The Craft of Functional Programming; Simon Thompson; Addison Wesley; 1999; ISBN: 0201342758
  5. The Haskell School of Expression: Learning Functional Programming through Multimedia; Paul Hudak; Cambridge University Press; 2000; ISBN: 0521644089
1. semestar
Vještine - dipl.studij - 1. semestar - Redovni profil - Automatika
Vještine - dipl.studij - 1. semestar - Redovni profil - Elektroenergetika
Vještine - dipl.studij - 1. semestar - Redovni profil - Elektroničko i računalno inženjerstvo
Vještine - dipl.studij - 1. semestar - Redovni profil - Elektronika
Vještine - dipl.studij - 1. semestar - Redovni profil - Elektrotehnički sustavi i tehnologija
Vještine - dipl.studij - 1. semestar - Redovni profil - Obradba informacija
Vještine - dipl.studij - 1. semestar - Redovni profil - Programsko inženjerstvo i informacijski sustavi
Vještine - dipl.studij - 1. semestar - Redovni profil - Računalno inženjerstvo
Vještine - dipl.studij - 1. semestar - Redovni profil - Računarska znanost
Vještine - dipl.studij - 1. semestar - Redovni profil - Radiokomunikacijske tehnologije
Vještine - dipl.studij - 1. semestar - Redovni profil - Telekomunikacije i informatika

3. semestar
Vještine - dipl.studij - 3. semestar - Redovni profil - Automatika
Vještine - dipl.studij - 3. semestar - Redovni profil - Elektroenergetika
Vještine - dipl.studij - 3. semestar - Redovni profil - Elektroničko i računalno inženjerstvo
Vještine - dipl.studij - 3. semestar - Redovni profil - Elektronika
Vještine - dipl.studij - 3. semestar - Redovni profil - Elektrotehnički sustavi i tehnologija
Vještine - 3. semestra - Redovni studij - Elektrotehnika i informacijska tehnologija
Vještine - dipl.studij - 3. semestar - Redovni profil - Obradba informacija
Vještine - dipl.studij - 3. semestar - Redovni profil - Programsko inženjerstvo i informacijski sustavi
Vještine - dipl.studij - 3. semestar - Redovni profil - Računalno inženjerstvo
Vještine - dipl.studij - 3. semestar - Redovni profil - Računarska znanost
Vještine - 3. semestra - Redovni studij - Računarstvo
Vještine - dipl.studij - 3. semestar - Redovni profil - Radiokomunikacijske tehnologije
Vještine - dipl.studij - 3. semestar - Redovni profil - Telekomunikacije i informatika

5. semestar
Vještine - 5. semestra - Redovni modul - Automatika
Vještine - 5. semestra - Redovni modul - Elektroenergetika
Vještine - 5. semestra - Redovni modul - Elektroničko i računalno inženjerstvo
Vještine - 5. semestra - Redovni modul - Elektronika
Vještine - 5. semestra - Redovni modul - Obradba informacija
Vještine - 5. semestra - Redovni modul - Programsko inženjerstvo i informacijski sustavi
Vještine - 5. semestra - Redovni modul - Računalno inženjerstvo
Vještine - 5. semestra - Redovni modul - Računarska znanost
Vještine - 5. semestra - Redovni modul - Radiokomunikacijske tehnologije
Vještine - 5. semestra - Redovni modul - Telekomunikacije i informatika
Termini konzultacija:
OBAVIJESTI
Objavljeno: 18.11.2016. u 21:28
Uređeno: 05.12.2016. u 11:04

As announced in class, the midterm exam will take place on Tuesday, December 6th, at 18:00 (not 15 minutes later), and will last for one hour. It will take place in room D272. You will do the midterm exam on your own computer, and may freely access the internet, save for communication with one another or third parties.

The exam will consist of three tasks (and possibly an optional extra task), similar to the homework assignments in format, but easier. It will cover topics from the first seven weeks of class and the first four homework assignments. To pass the exam you need at least 50% of the total score.

 

If you are unable to take the exam at that time, please contact us as soon as possible!

Luka Papež
Objavljeno: 09.11.2016. u 22:31
Uređeno: 18.11.2016. u 21:09
Student Questionnaire!

Please fill in the student questionnaire (available through FERweb) and let us know what you think about the course. Your opinion matters! Help us improve this course.

In particular, we're looking forward to your wise thoughts and witty remarks, so that we can read them together in class and have some fun  :-)

Jan Šnajder
Objavljeno: 05.11.2016. u 20:50

We just posted Lecture 5 (truncated) and Lecture 6. You can get them from the file repository located in the right pane of this web site.

Next Thursday, we'll look into higher order functions. To prepare, you may (but need not to) read Chapter 6 of LYH (http://learnyouahaskell.com/higher-order-functions). 

We'd be happy to answer your questions! Please post them in our google group (https://groups.google.com/forum/#!forum/haskell-fer).

Jan Šnajder
Objavljeno: 03.11.2016. u 21:07
Uređeno: 19.11.2016. u 19:22

We've posted the tasks for the fourth homework assignment in the repository. This assignment is due on Thursday, November 17, at 17:00. Note that this assignment is due in two weeks instead of the usual next week submission. That is because this homework contains some concepts that haven't been covered yet in the lectures and also since we know you all have a lot of things to do at this point in the semester. We will cover all unknown concepts next week, so try to solve what you can this week, and then do the rest next week.

 

You are also required to solve and submit all of the in-class exercises from the sixth lecture, including those solved during the lecture. The lectures are available in the file repository.

 

Submission on Ferko is now open. Please read carefully the upload instructions provided there. Should you have any problems with the upload, you can send the solutions via email.

 

Please keep your exercises and homework assignment solutions in two separate files (one for the exercises called Exercises.hs, one for the homework assignment called Homework.hs). Note that we expect the solutions in .hs format, not .lhs. We would also like to ask you to comment your code. It will make our job easier and will result in you getting the results sooner.

 

Should you have any problems with the homework, we can discuss them on the Google Group or via email.

 

Also, if anyone forgot to upload the third homework, you can still do a late submission on Ferko which brings you 50% of the usual score until Friday, November 4, 17:00.

 

UPDATE: the deadline for late upload of the fourth homework is extended until November 20th, 17:00.

Luka Papež
Objavljeno: 27.10.2016. u 20:09

We've posted the tasks for the third homework assignment in the repository. This assignment is due on Thursday, November 3, at 17:00. 

You are also required to solve and submit all of the in-class exercises from the fifth lecture, including those solved during the lecture. The lectures are available in the file repository.

Submission on Ferko is now open. Please read carefully the upload instructions provided there. Should you have any problems with the upload, you can send the solutions via email.

 

Please keep your exercises and homework assignment solutions in two separate files (one for the exercises called Exercises.hs, one for the homework assignment called Homework.hs). Note that we expect the solutions in .hs format, not .lhs. We would also like to ask you to comment your code. It will make our job easier and will result in you getting the results sooner.

 

Should you have any problems with the homework, we can discuss them on the Google Group or via email.

 

Also, if anyone forgot to upload the second homework, you can still do a late submission on Ferko which brings you 50% of the usual score until Friday, October 28, 17:00.

Luka Papež
Objavljeno: 20.10.2016. u 23:34
Uređeno: 24.10.2016. u 22:36

We've posted the tasks for the second homework assignment in the repository. This assignment is due on Thursday, October 27, at 17:00. 

You are also required to solve and submit all of the in-class exercises from the fourth lecture, including those solved during the lecture. The lectures are available in the file repository.

 

Submission on Ferko is now open. Please read carefully the upload instructions provided there. Should you have any problems with the upload, you can send the solutions via email.

 

Please keep your exercises and homework assignment solutions in two separate files (one for the exercises called Exercises.hs, one for the homework assignment called Homework.hs). Note that we expect the solutions in .hs format, not .lhs. We would also like to ask you to comment your code. It will make our job easier and will result in you getting the results sooner.

 

Should you have any problems with the homework, we can discuss them on the Google Group or via email.

 

Also, if anyone forgot to upload the first homework, you can still do a late submission on Ferko which brings you 50% of the usual score until Friday, October 21, 17:00.

Luka Papež
Objavljeno: 19.10.2016. u 12:29
Uređeno: 19.10.2016. u 15:17

The upload of the first homework has been enabled on Ferko.

You should upload a single ZIP archive containing two (and only two) files: "exercises.hs" (solutions to in-class exercises 1 and 2, as lecture 3 excercises were done in class) and "homework.hs" (homework assignment solutions).

It should be a flat structure, without any subdirectories. The name of the ZIP archive is irrelevant. Before uploading, check to see that your code compiles correctly. In addition, be sure to name the submitted functions exactly as they are named in the lecture and assignment files, and use the same order of input arguments as they do (this helps us simplify our grading process).

If you have any trouble with Ferko, you can send the solutions via email to: luka.papez@fer.hr

The deadline for upload is until October 20th at 17:00h (right before the lecture).

Luka Papež
Objavljeno: 14.10.2016. u 22:07

We just posted Lecture 2 and Lecture 3. You can get them from the file repository located in the right pane of this web site.

Please take some time to go through the lecture and experiment with the code a bit.

Next Thursday, we'll look into the full-blown syntax of Haskell functions. To prepare, you may (but need not to) read Chapter 4 of LYH (http://learnyouahaskell.com/syntax-in-functions). 

We'd be happy to answer your questions! Please post them in our google group (https://groups.google.com/forum/#!forum/haskell-fer).

Jan Šnajder
Objavljeno: 08.10.2016. u 10:33

This course mostly follows the "Learn You a Haskell for Greater Good!" textbook. Recently, a new book came out that targets Haskell beginners and seems to do quite a good job: "Haskell Programming from First Principles". The book is actually still in progress and it's not freely available, but you still might want to check it out.

We'll have more books on Haskell and functional programming for you to take a look at in the upcoming classes.

Jan Šnajder
Objavljeno: 08.10.2016. u 10:05

We just posted Lecture 1. You can also get them from the file repository located in the right pane of this web site.

Please take some time to go through the lecture and experiment with the code a bit.

On Tuesday, we'll continue with lists, before moving on to tuples. We'll also look into modules and how to build projects using Stack. To prepare, you may (but need not to) read Chapter 2 of LYH (http://learnyouahaskell.com/starting-out). 

We'd be happy to answer your questions! Please post them in our google group (https://groups.google.com/forum/#!forum/haskell-fer).

Jan Šnajder
Objavljeno: 08.10.2016. u 09:17

We'll have another extra class on Tuesday, Oct 11, at 18:15 in D272. The reason for this is that we want to bring you up to speed as soon as possible. As this is an extra slot, attendance will not be recorded. Nonetheless, you are strongly encouraged to come because the topics we'll be looking at (lists cont., tuples, modules, and stack) are quite important.

Jan Šnajder
Objavljeno: 27.09.2016. u 09:37
Class Start

PUH starts on Thursday, Oct 6, at 18:15 in lecture room D272.

You are expected to bring your own laptop computer to each class. There will be a limited number of power outlets available (we can only use a limited number of extension cords). Please ensure that your laptop battery is fully charged before coming to class.

For the first lecture, you will need to install the Haskell Platform on your laptop computer. You can get the Haskell Platform from here: http://hackage.haskell.org/platform/

If you run into any problems, please post your questions here: http://groups.google.com/group/haskell-fer

Jan Šnajder
Objavljeno: 18.07.2016. u 15:45
Uređeno: 25.08.2016. u 16:59
PUH 2016 Applications

Applications for the Programming in Haskell (PUH) 2016 course are now open. Click here to learn more about this course. 

To apply, please fill in the application form at https://goo.gl/98Evs8.

The application deadline is Sep 18, 2016 at midnight. Applications after the deadline will not be considered. Notifications of acceptance will be sent out on Sep 23, 2016.

Jan Šnajder
Objavljeno: 11.07.2016. u 17:26
Uređeno: 11.07.2016. u 17:26
Programming in Haskell 2016 Course

We're excited to announce the fifth edition of the Programming in Haskell (PUH) course! The course will be offered in the Fall semester of AY 2016/2017. 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. By learning to program in Haskell, you will get acquainted with the functional programming paradigm -- a programming style radically different from the one you're probably used to. 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. A strong team of five TAs will guide you and make sure you're doing everything right.

When, where, and how?

The lectures will be held on Thursdays, 6:15-8:30 pm in lecture room D272. 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. Precedence is given to (1) applicants who demonstrate a high motivation for the course, (2) second year MA students, (3) students who have not previously enrolled in this course. The time of application will not be considered when evaluating the applications. 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

Important dates

  • Applications open: Jul 18, 2016

  • Applications close: Sep 18, 2016 at midnight

  • Notification of acceptance: Sep 23, 2016

  • Class start: Oct 6, 2016 at 6:15 pm

All announcements will be posted on the course website (http://www.fer.unizg.hr/predmet/puh). FER students be sure to subscribe to receive email notifications. Late or incomplete applications will not be considered.

Additional information

Jan Šnajder
Objavljeno: 22.04.2016. u 10:01
PUH 2016: Teaching assistants wanted!

Time to roll once again! Next edition of PUH will start in October 2016.

We're looking for PUH teaching assistants. Teaching assistants (1) know how to program in Haskell and absolutely love it, (2) have loads of spare time for preparing and grading homeworks, (3) are free on Thursdays evening, and (4) like teaching and helping imperative-programming-indoctrinated fellow students.  

If you see yourself as a PUH TA, please APPLY NOW! In your application, please state (1) your study profile and study year, (2) short description of your previous memorable experience with Haskell, and (3) motivation in at most 128 characters (including whitespaces).

Please send your application to (jan.snajder-at-fer.hr) no later than May 15, 2016.

Jan Šnajder
FORUM
Sortiraj prema: naslovu | vremenu zadnjeg odgovora | vremenu otvaranja teme
Naslov Odgovori Zadnji odg.
ČESTA PITANJA
REPOZITORIJ
 
ANKETA
 
Glasovanje je završilo!

ANKETA
 
Na ovoj stranici trenutno nije odabrana niti jedna anketa!