Teaching computational thinking (at the University of Zürich)

This semester I have the pleasure of teaching a course on Formale Grundlagen der Informatik at the University of Zürich. The course is targeted at first year students in Computer Science.

As an introduction, I talked about Computational Thinking. The topic for the lecture was inspired by two lectures with the same name by Oscar Nierstrasz (slides download), and by Jeannette Wing (article download).

I set myself to incite the students to look around and see the information and computation behind the functioning of the world. The challenge was to find relevant examples. I struggled for a long time to find them, but somehow I was not satisfied. It was not that I could not find any such examples, but they were not uniform.

I struggled until the day of the lecture, when it finally hit me: If information and computation are so pervasive, it should be straightforward to spot and explain them. I should be able to pick examples at any moment. As a consequence, I challenged myself to put together these examples by documenting the trip from my home (in Bern) to the lecture room (in Zürich). I used my iPhone to take pictures and videos.

I started by telling the students that given that this is the first time I am an official Dozent at the University of Zürich, I wish to mark this day by describing my trip using the pictures I took. I guess they did not understand why this was any relevant for the lecture, but they did laugh. Afterwards, I took exactly the same examples only the second time I described what else can be seen behind the scene. This helped me make the point of the pervasiveness of computational thinking concepts.

I listed below some of the examples I used. The original slides can be found here.

The bus schedule is an example of a data structure made for fast vision-based searching.

01-structuredinfo.jpg

The train table is a common resource designed to be read by multiple people in the same time.

02-commonresource.jpg

People line up in a single queue to buy train tickets from multiple offices.

03-queue.jpg

At the take away shop there are multiple queues for multiple non-conflicting resources.

04-queues.jpg

The vending machine from the train station is a clear example of a state machine.

05-statemachine.jpg

The instructions of the vending machine form a program that can either be simply read as data, or it can be executed as a program.

05-codedata.jpg

During the train trip, the controller checked my ticket. This is also an example of optimistic resource access: you are allowed to use it without any initial check, but get kicked out afterwards if you do not have a valid ticket.

06-accesskey.jog

The stack was the most difficult to find. Initially, I looked for it at the free newspaper stand, but as it was afternoon, all newspapers were gone already. I finally found it in the fridge display of a confiserie. I emphasized that one should think twice before buying the last cake from one column, like the chocolate cake on the left which happens to be my favorite.

07-stack.jpg

Finally, the intersection near the University provides a nice example of safety and liveness.

08-safetfyliveness.jpg

Posted by Tudor Girba at 3 November 2010, 10:26 pm with tags presentation, representation, design link