Blog och pod om programmeringsundervisning

Min vän och kollega Rikard Fröberg och jag har sedan en tid skrivit böcker om t ex Java, C, bash, databaser med mera. Detta har vi gjort på Böckerna används nu på olika kurser på Chalmers, GU och två yrkeshögskolor (IT-högskolan och Yrgo). Pedagogiken bakom böckerna är något som vuxit fram under många år – och efter att ha kännt att man gjort så himla många misstag i rollen som lärare. Vi kommer i bloggen och pod (se nedan) att diskutera pedagogik/didaktik, vanliga misstag och dryfta våra tankar. Men lite vill vi säga nu om vår pedagogik och våra böcker. Vi tillhandahåller videofilmer för att möjliggöra flipped classroom-undervisning och göra det enkelt för studenter att repetera. Vi skriver många övningar, det är inte precis genom att titta på någon spela gitarr som vi lära oss spela gitarr. Övningar är i progression och vi har så klart lösningsföslag.

Nåväl, till saken. Blogen och poden. Även om blogen ( funnits ett tag är det nu vi kommer jobba med den. Till varje blog kommer vi spela in en pod ( – jo, visst, man vill ju vara modern. Spana gärna in blogen och lyssna på vår podcast. Det finns just nu tre blog/pod-avsnitt:

  1. Getters och setters. Våra tankar om getters och setters, vad de kommer ifrån, varför de inte alltid är så nödvändiga och vad för problem som finns med dem.
  2. Om oss. Vi pratar kort om vilka vi är, varför vi håller på med pedagogik och varifrån namnet Juneday kommer.
  3. Om Arrayer i Java-undervisning. Vi pratar om hur man vanligtvis (över)använder arrayer när man (försöker) lära ut Java.

Sprid gärna information om våra böcker, blog och pod. Vi vill gärna diskutera (på blogen) med lärare och folk som jobbar med utbildning, men även från dig som jobbar med programmering. Framför allt vill ha feedback från proffsen på utbildning: elever och studenter.

Allt vi gör finns här:

GNU Xnee 3.19 (‘Lucia’) released

We are pleased to announce the availability of GNU Xnee 3.19

GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Think of it as a robot that can imitate the job you just did. GNU Xnee can be used to:

  • Automate tests
  • Demonstrate programs
  • Distribute actions
  • Record and replay ‘macro’
  • Retype the content of a file

News in this release:

  • Support for pause/resume/quit when retyping file
  • Defaults to use data display for all with minor version nr >= 3
  • New options:

Record from data display. This option is experimental.

Record from control display. This option is experimental.

Getting the Software

or one of the mirror sites as found in:



560e8126950d8d4e7c30fc844d556482 xnee-3.19.tar.gz


2693031014 1893109 xnee-3.19.tar.gz

About calling the release “Lucia”

In celebration of the Spanish flamenco guitarist Francisco Gustavo Sánchez Gomes (known as Paco de Lucía).


Talking about licenses in Gothenburg tomorrow

Tomorrow (April 23) Rikard Fröberg and I will talk a bit about licenses. We will focus on how you can use FOSS (Free and Open Source Software) in your biz or projects.

After our talk you can see a presentation on the new Beaglebone.

More info (Swedish) here:

Search less and find more (knowledge)

No, it’s not my usual ramblings on me sucking more less. I don’t think I ever will suck more less than I do. Tried it – have given up. This time I will talk about search engines, old way teachers and lazy students. Guess this addresses most programming education but I will use my experience from teaching university students. So in short, this post will be about exercises for university students. Hopefully you can provide some clever thoughts and/or experiences. Please do so (see below)

Ok, let me start with an example Java exercise:

Write a method that takes a date as an argument and converts it to a string representing a date in the format 1996-04-22.

It’s not a Nobel prize exercise and I am not claiming it’s a perfect one but let’s focus on the purpose and solution of the exercise.


The students should read about the Date and some DateFormat class. This way the students get to know the Date class and get familiar with a DateFormat class. It’s not unlikely that the students also will learn about the String class.

Old way solution:

This is how I (as a member of the Old Farts Club) would have solved it back in the good old days – apart from the fact that Java wasn’t invented in the good old days. I would have read about the Date class and a DateFormat class. The latter class I would stumble on while reading about Date. I would have gained some knowledge about Date and gotten familiar with a DateFormat class. I would also have learned about exceptions. I would have fulfilled the purpose of the exercise. Man, I am so terrific.

BTW: Old ways is a great album by Neil Young. Go listen to it. Now!!!

New way solution or perhaps No way solution:

The students of today – man I sound as if come from the 1700 hundreds – will most likely solve by entering a search string into a big search engine: “convert string to date in java yyyy mm dd”.  Ok, let’s try it with some search engines:

All three links give me a direct answer to the exercise. And we can safely assume the students will find the solution too. But the students will not read about either of the classes (Date and some DateFormat). Purpose of the exercise will not be fulfilled.

So this leaves us with the topic of today: The larch… sorry, the Problem with exercises:

The exercises we (teachers) write are not solved by the students the way we want them to be solved.

This is because, either:

The students are lazy.
The teachers are lazy.

I would say that both are true. But fixing one will not solve anything. We need to tackle both problem. As I ramble on right now I see two groups of solutions:

Lazy teachers – exercises and tests

Teachers have to put a bit more effort in writing exercises. Here are some of the things I have in mind about exercises.

  • Better and more exercises that in a more fine grained way increase the knowledge curve. With better here I mean to state smaller problems that makes it useless to use search engines.
  • Tests for the students to make it possible for them to self check if they’re doing alright and can proceed to the next chapter.
  • Better sync with theory. When I learn stuff I prefer theory first and exercises after. It seems to students of today don’t think like me.

Lazy students – learn students how to study

We (apparently) need to teach the students how to study. Yes, I do mean how to read a book. In some cases I’ve gotten really loud and what I believe them to think rightful sighs over having to read one simple page. So in some rare cases, one page is considered much to read. Perhaps even too much to read. I know that sometimes I am not very eager to read one page and most likely will sigh – but still, I think the way a student look at the amount of work that needs to be done in order to gain knowledge have decreased the last years. And it is decreasing.

  • Read – yes, I really do think we need to learn the students how to take time to read literature. And to do this with no social apps, no email, no music (not even Bach or Black Sabbath), no chat, no browser, … no nothing. Only the book – be it pdf or a paper book. Oh yes, what about Flipped classroom. Students still need to read the literature when using Flipped classroom.
  • Take notes. This is good if the student later on wants to ask the teacher. The student should read the notes to get reminded about the important stuff.
  • Read again. Are you kidding me? No, I am not. Read the chapter again (at least).
  • Do the exercises. Also teach the students how to make small variations of the exercises – that is exercise even more than there are exercises.

Before we proceed, I feel I need to give an example of a discussion I’ve had quite a few times:

– Why haven’t you showed us concept A, and why doesn’t the book teach us about A?

– I have showed it to you two times during lectures and the book talks about it on two pages and those pages are in the list of pages to study.

– Well, I don’t think that the book is clear.

– What in the book is not clear?

Usually the discussion ends here. I ask them if they’ve read the book and they admit they haven’t. Ok, time to put the blame on the student? No, too easy. Again, teachers and students need to relearn. What was it Clint Eastwood said in that movie, “Improvise, adapt and overcome”?

Here’s what I think work best:

  • Try to sneak in some coming topics in the last exercises. This way I hope to get more attention during coming lecture (be it normal lecture or flipped classroom).
  • Write lots of exercises – even variations on a theme (I am thinking about Haydn here).
  • Provide well documented solutions – perhaps even step-by-step videos.
  • Interesting problems – sorting bank accounts in alphabetical order is <beep> boring.

Wanted: Your input

I am quite sure, fact is I am 100% sure, you have opinions (you better, you better, you bet) and most likely have better solutions than I do, so comment away. I will compile all input on all education related blog posts later on. So

  • What is a good exercise?
  • How do you get a good progression in your exercises?
  • How do you mix theory and practice?


Future ramblings will (most likely) be about:

  • So when do we learn the univ students to study? Is it the really the universities that should teach the students how to study?
  • Ignoring, letting go of or helping “weaker students”?
  • What’s the purpose of a school system anyway? – who’s “the customer”? Academia, industry, public service, humans, …..?


Education. Nevermind – what was it anyway, pt II

This post is a follow up to: Education. Nevermind – what was it anyway, pt I

Why another rant? – I really dunno. Guess I feel like writing 🙂

On exercises and supervision:
This is in my opinion much more important than lectures. Make sure that there’s enough resources for the students during supervision. Waiting 30 minutes to get help is not something that helps or motivates the students.

Make the exercises progress towards the goal. If you make too many exercises few students will complain. If you make too few, most students will complain. I did too few in my last course it seems. Shame on me.

Don’t point out beginner’s mistakes. Discuss the mistakes instead an propose other solutions.


It must be frustrating for a student to see other students learn at a speed much higher than yours. But in some, or perhaps most, cases it’s not true. If student starts the course already knowing parts of it is easy for student without this knowledge to think that he/she is slow, stupid or whatever. In this case we can point out that all students, well most students – there are some wizards, follow the same learning progression and the starting point is the thing that differs. This can be proved by the “weaker” students that often are doing great on the re-exams. That is: they do good results – just a bit later.

Another thing I’ve found to be good is to, during supervision, make the student think about if she would have thought she could write the code you’re looking at? Usually the answer is no followed by a smile. Help them realise that they actually make progress.


Why should they learn to program? Motivating why to know how to program is needed in programs such as Applied IT but probably not needed in Computer Science programs. Give the students some simple examples of problems they can solve by writing programs.

Try to come up with programming exercises that relate to the student’s reality. Sorting bank accounts in order is not fun. It really isn’t. I have created these exercises myself. Shame on me (again!).


So, given that education is about the student acquiring knowledge my job is to help them doing that. How do I do this:

  • Lectures – leave the old way. Try flipped classroom.
  • Exercises and supervision – spend time here, this is where you can lift students. Focus on:
    • Encourage the students to keep struggling
    • Motivate the students to keep struggling

Next week I will dive into how search engines are used as a study companion while we (teachers) keep thinking that the book is the tool used by the students.