Course analysis for 2D1455 Theoretical Foundations of Object-Orientation
for D Period 4 2007
Up to Course home page period 4 2007.
Below is a course analysis for the course Theoretical Foundations of Object-Orientation for D.
|Course||2D1455 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
|| 64% have completed the course (completed all labs and passed exam) (2006 50%)
|| 64% have passed the exam, either as tenta or omtenta. (last year 50%?)
|Course teacher|| Karl Meinke
|Exercise class teachers||
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.)
- Do you feel you were adequately informed about the course goals?: 75% yes 25% no
- LSCs: Can you formalise using LSCs the important use-cases in a requirements docuyment? Can you distinguish between normal and exceptional scenarios?: 100% yes 0% no/don't know
- LSCs: Can you draw LSCs using the Play-Engine, given a pre-existing user interface model? Can you exercise a set of LSCs using the simulator to study their interaction?: 50% yes 50% no/don't know
- Floyd's method: Can you translate a simple imperative program into a flowchart, and understand a valid labelling of it by means of first-order invariants?: 100% yes 0% no/don't know
- Floyd's method: Can you construct a valid labelling of a flowchart by means of dragging a pre-condition forwards, or a postcondition bacwards. Can you synthesize loop invariants for simple programs? : 100% yes 0% no/don't know
- Seqool Language: Can you understand the syntax of a simple object-oriented language, and correctly add extra features to it?: 100% yes 0% no/don't know
- Seqool Language: Can you understand the operational semantics of a simple object-oriented language, and correctly add extra features to it, such as garbage collection, exceptions etc?: 75% yes 25% no/don't know
- Lectures: Do you think that the lectures helped you to achieve the course goals?: 75% yes 25% no/don't know
- Lab Work: Do you think that the lab work helped you to achieve the course goals?: 25% yes 75% no/don't know
- Course Literature: Do you think that the course literature helped you to achieve the course goals?: 50% yes 50% no/don't know
- General: What overall grade would you give the course (1 min - 5 max)?: 3.
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
"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:
- 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.
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
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
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.
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.
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.
Understand the syntax of a simple sequential object-oriented programming language and be able to correctly add extra features to the syntax.
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.
Understand the logic of a simple sequential object-oriented programming language and be able to explain the meaning of rules of inference.
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
- This year I cut down on LSC/Play-Engine material to reduce this troublesome part of the course.
- I introduced some simple material about object calculus from Abadi and Cardelli's book "A Theory of Objects". This material worked well, though it made the course even more theoretical.
- I introduced extra labs about object calculus to give alternatives to the Play Engine lab. Some students took these new labs succesfully.
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
- I will remove the LSC/ Play Engine since although the material is good, the software is too unreliable.
- I will introduce more material on object calculus, since this eems to be really central to the course.
Upp till kurssidan VT07.
Last changed 16 June 2008
Tekniskt stöd: <firstname.lastname@example.org>