Course analysis

General course information

1 Course name Functional Programming with F#
2 Course code DVA201
3 Occasion (academic year & period) 2014/15, period 4
4 Date of document establishment 2015-06-26
5 Responsible teacher Björn Lisper
6 Other teachers and assistants Jean Malm, Jonas Skoog
7 Speed, day / evening Half speed, day
8 Education programs involved Primarily DVP, but it can also be elected by other students who have the prerequisites.

Throughput / turnout

9 Number of registered students (filled in by director of studies) 35
10 Number of students following the course (but maybe not achieved much) Estimated 31 (# of students who have any result at all)
11 Number of passed students approximately one week after course ended 11 (passed exam, lab, project)
12 Your opinion about the turnout Pretty low. It seems like the project might have been a bottleneck. Maybe too little time for it towards the end of the course?

About the course’s realization and contents

13. Describe shortly the planning of the course, and if you used any special pedagogical method used in course (all-over or single parts)

There are 16 lectures (covering theory as well as showing examples), four laborations, and one small project (estimated effective time one week/student) where the students are supposed to work in their own time. To give time to work with the project, the lectures and laborations are concentrated to the first six weeks of the teaching period in order to give free time for the project, and for preparations for the written exam, towards the end of the teaching period.

A problem was that the first two weeks of period 2 were the weeks preceding and succeeding Easter. Since people tend to go away during this period, I scheduled the start of the course the week after (week 16). This gave the students only a week and a half of free time before the exam.

I think it would be good if the periods could take holidays into account. We cannot reasonably schedule education during holiday breaks.

Pedagogically, I am a conservative old professor who believes in good lectures where important concepts are explained in a clear and pedagogical manner. The laborations are there to give hands-on experience, which is essential too. I also believe in own work with some freedom: thus, the project. Finally I believe that some individual examination, like a written exam, is indispensable for the quality control.

14. Did the students have the right prerequisites to this course?

Some seem to lack the proper background in math. Discrete mathematics will be added to the list of prerequisites ("särskild behörighet") from next year, which will help some, but it also seems like there are students who are weak in math overall.

I think it is of importance to have a decent general background in mathematics when studying computer science. The thinking is so similar - programming is really a mathematical activity, even though many are not aware of it. Also, it is hard to understand anything of the underlying theories in computer science without knowing some math.

15. The students' concluding opinions (course, classes, labs, project, examination etc.)

Some of this can be read out from the course inquiry. It was only answered by 9 students, so the statistical significance is low, but it is the feedback that we have. The students are mostly positive (excluding one student, who gives consistently lower marks). There were some complaints about the (revised) Lab 2, which some students considered too large, and also regarding what was (not) brought up in class before (the new) Lab 3.

16. Your opinion

I think the students are right. This year we changed/added some course contents (updated Lab 2, new Lab 3, new lecture about reactive programming in F#) and this contents has to be polished until next course instance.

17. Other comments

It is always fun to give this course.

Action plan

18. Measures stated on previous action plan

  1. See if the .NET connection could be covered a little better.
  2. Include discrete math as a prerequisite for the course.
  3. Sharpen the requirements on the report for the project in order to provide better training in scientific writing

19. Which of them are executed (and how)?

The .NET connection is covered to some extent in the new lecture on reactive programming. Discrete math will be a prerequisite from the next course instance (Spring 2016). The formal requirements on the project report have not been sharpened, but this year I instructed the lab assistants to be a bit more observant on the form and contents of the report.

20. What has worked out well according to the students?

Most of the course, if the course inquiry is to be believed.

21. What has worked out well according to you?

I also think that most of the course has worked out well.

22. What has turned out be imperfect according to the students?

Lab 2 too long, Lab 3 requiring knowledge that was not covered in class before the lab.

23. What has not worked out well according to you?

I agree with the students. Also there was little time at the end of the course for the students to complete labs + project as well as prepare for the final exam.

24. Action plan until next course occasion

  1. See if Lab 2 needs to be adjusted.
  2. Ditto Lab 4 (new lab on reactive functional GUI-programming).
  3. Check order of lectures in relation to Lab 3, and adjust if necessary.
  4. Go over Lecture 13 (the new lecture on reactive functional programming), and adjust. Make sure that it covers all that is needed for Lab 4.