SEMANTICS (Q1,'05)

[ semantics | relevance | roles | structure | schedule | exercises | project | exam | re-exam | materials | classes | webboard ]

Relevance

WHY SEMANTICS?!?

  • Why bother with semantics?!?

PHILOSOPHY

The whole purpose of (for you to learn) semantics can be illustrated by the following three diagrams:

Figure a) abstraction vs. concretization Example b) property satisfaction Example c) program relationship

What discerns a really good programmer from one that is not so good is the capability of moving (consciously or unconsciously) between the concrete world of programs and the abstract world of semantic models (via abstraction and concretization). Specifically, such a programmer is capable of (consciously or unconsciously):

  • 1) abstracting programs into models;
  • 2) reasoning about the models;
  • 3) concretizing the insights back into the world of programs.

In the two examples, the dotted lines represent the tasks (1 to 7) undertaken at an unconscious level. This is what you should strive for as a programmer; and this is what I will teach you - ...and expect you to learn! :)

/Claus.

NOTE ON SKILL AQUISITION

During acquision of relevant semantic skills and insights, you will progress according to the following cognitive steps:

  1. 1. unconscious incompetence;
  2. 2. conscious incompetence;
  3. 3. conscious competence;
  4. 4. unconscious competence;

Good news: If you have understood the diagram, you are already (at least) at level 2. :)

The whole purpose of this course is to get to level 3 and/or 4, in the sense that you are capable of using semantics (ideally, without being aware of it). At the exam at the end of the course, you will be measured at level 3 (and a bit at level 4).

Claus Brabrand (September 1, 2005)