Course analysis for 2D1455 Theoretical Foundations of Object-Orientation

for D Period 4 2007

Author: Karl Meinke, Nada

^ Up to Course home page period 4 2007.

Below is a course analysis for the course Theoretical Foundations of Object-Orientation for D.

Course data

Course2D1455 Theoretical Foundations of Object-Orientation for D. (4p)
Examination Lab1 G/U (1p)
Course period Period 4 2007
Lectures 28 h
Exercises 4 h (2 st)
Labs (timetabled, unsupervised) 14 h
Coursebook David Harel and Rami Mirelly, Come Let's Play, Scenario Based Programming Using LSCs and the Play-Engine
Number of students 11 (2006 12)
Number of exercise groups 1
Finished lab 8 080616 73%
Prestationsgrad 080616 64% have completed the course (completed all labs and passed exam) (2006 50%)
Examinationsgrad 080616 64% have passed the exam, either as tenta or omtenta. (last year 50%?)
Course teacher Karl Meinke
Exercise class teachers Karl Meinke,

Course Evaluation Form

4 students completed a course evaluation during the second to last lecture. (Paper format). This represents 36% of students taking the course, so the results are only somewhat representative. The course evaluation form this year was designed to test alignment between course content and student learning from a students perspective. (This was advocated in pedagogy courses I took.)

The course evaluation indicates student confidence about most of the course goals in general. Poor confidence centres around use of the Play-Engine Tool, which is rather unreliable and crashes frequently. This is also visible in direct responses to the lab work question. Note that the course literature .


Here are a selection of comments, several of these, e.g shortage of lab assistants, came up many times:

"Det verkar vara svårt att formulare målsättningen"
"Floyd's method was very interesting. That subject should have had more time dedicated to it"
"Labbarna har ej krävt att man anväder designmöster. Ingen genomgång på övningarna samt för kort genomgång på föreläsningeSeqool was a bit messy, should have had more documents about it"
"Program (Play-Engine) crashed far too many times"
"En praktist demo av Play-Engine skulle vara bra"


The exam performance performance was quite good for those who took it. Only 2 out of 9 students failed to pass. The performance of the Play-Engine continues to trouble, and next year I will remove it from this course.


The course goals are:
  1. Critically assess an informal text-based software requirements document, identifying ambiguities, omissions and inconsistencies. Translate such a document into object-oriented requirements using a Noun/Verb/Relational-Phrase methodology. Construct a data dictionary, and relate this to the original requirements document using hypertext technology.

  2. Identify, express in text, and formalise using LSCs the important use-cases in a requirements document. You should be able to distinguish between normal and exceptional scenarios.

  3. Draw LSCs using the Play-Engine, given a pre-existing user interface model. You should be able to organise your charts within a project, using the Play-Engine. You should also be able to modify the different components of a project with an understanding of the technical effects of any changes

  4. Exercise a set of LSCs using the Play-Engine simulator to study their interaction, and how they co-operate to achieve the user requirements. You should understand what incomplete and inconsistent requirements are, and how to identify these by using simulation.

  5. Translate a short piece (less than 20 lines) of object-oriented code into a flowchart. You should understand the meaning of a valid labelling of such a chart by logical assertions according to Floyd's invariant assertion method.

  6. Construct a valid labelling of a flowchart by means of dragging a pre-condition forwards, or a postcondition backwards, and using basic logical transformations. You should be able to use your knowledge of programming to synthesize loop invariants and thus prove a program is mathematically correct with respect to a software requirement.

  7. Understand the syntax of a simple sequential object-oriented programming language and be able to correctly add extra features to the syntax.

  8. Understand the operational semantics of a simple sequential object-oriented programming language and be able to correctly add extra features to the semantics (for example garbage collection) that define the meaning of new syntactic features.

  9. Understand the logic of a simple sequential object-oriented programming language and be able to explain the meaning of rules of inference.

  10. Understand the concept of an abstract data type, how it relates to a class definition, and be able to define new simple data types.

Changes made to the course

Actual course contents

A class based object oriented language Seqool, its syntax and operational semantics. The logic of seqool (oncluding intro to Floyd-Hoare logic). Live sequence charts, and practical OO requirements capture using the Play-Engine. Introduction to object calculus, including type systems and assignment.

Reflections on this years course

  • Overall, student satisfaction and performance on the course are good. The main current weakness pedagogically seems to be around architectures and patterns.
  • Lab assistance went more smoothly than in previous years.
  • Generally the lab exercises are well appreciated.
  • Intended Changes for next year

    Appendix: Course Description

    ^ Upp till kurssidan VT07.

    Sidansvarig: <>
    Last changed 16 June 2008
    Tekniskt stöd: <>