Teaching Coloured Petri Nets: Examples of Courses and Lessons Learned Søren Christensen and Jens Bæk Jørgensen Department of Computer Science, University of Aarhus Aabogade 34, DK-8200 Aarhus N, Denmark {schristensen,jbj}@daimi.au.dk Abstract. In this paper, we describe and discuss three different courses in which Coloured Petri Nets (CPN) is used: (1) an introductory course on distributed systems and network protocols; (2) an advanced course on CPN; (3) a course on industrial application of CPN. Courses (1) and (2) are taught at the Department of Computer Science, University of Aarhus and course (3) is given for professional software engineers. For each course, we briefly present contents, format, and role of CPN. Then we describe a number of lessons learned from teaching the three courses. We have two aims in mind: In the first place, we want to share our specific experiences with other teachers. Secondly, we want to contribute to a more general discussion and exchange of ideas on Petri nets and education. 1 Introduction Coloured Petri Nets (CPN) [10] has had a place in the curriculum at the Depart- ment of Computer Science, University of Aarhus (henceforth abbreviated with the Danish acronym DAIMI [32]) for the last twenty years. The main reason is that formal modelling languages like CPN are suitable for many educational activities within computer science. Another contributing factor is the presence of professor Kurt Jensen [28], whose PhD work around 1980 defined the first version [9] of the CPN language and laid the foundation for the research of the CPN Group [26] at DAIMI. In the 1980’s, CPN was used at DAIMI as a general system description lan- guage in the introductory first-year course taken by 150-200 students each year. One of the main purposes of using CPN was to teach students that making abstract system descriptions (or models) is an important activity in computer science. A number of lectures on CPN were given, the students read some intro- ductory material, and they were required to solve exercises on CPN. Examples of exercises were to model the flow of customers through the local canteen and to model a traffic light. These were non-trivial exercises, especially because at that time, tool support for CPN (and other kinds of Petri nets) was scarce. Mod- els were drawn on paper and simulations were carried out by playing the token game with coins or drawing pins on sheets of paper. Another main purpose of using CPN was to introduce the students to formal semantics of programming J. Desel, W. Reisig, and G. Rozenberg (Eds.): ACPN 2003, LNCS 3098, pp. 402–412, 2004. c Springer-Verlag Berlin Heidelberg 2004