Kurssin yhteydessä kirjoitetaan ryhmissä tieteellisluonteinen artikkeli. Artikkeleissa sovelletaan suunnittelumallien (design patterns) dokumentoinnista tuttua kaavaa: valitusta aiheesta dokumentoidaan nimi, ongelma, ratkaisu ja seuraukset.
Gamma et al. kirjoittavat [GoF95, pp 4]:
Although design patterns describe object-oriented designs,
they are based on practical solutions that have been
implemented in mainstream object-oriented programming
languages like Smalltalk and C++ rather than procedural
languages (Pascal, C, Ada) or more dynamic object-oriented
languages (CLOS, Dylan, Self).
..
The choice of programming language is important because it
influences one's point of view. Our patterns assume
Smalltalk/C++-level language features, and that choice
determines what can and cannot be implemented easily. If we
assumed procedural languages, we might have included design
patterns called "Inheritance," "Encapsulation," and
"Polymorphism." Similarly, some of our patterns are supported
directly by the less common object-oriented languages. CLOS
has multi-methods, for example, which lessen the need for a
pattern such as Visitor. In fact, there are enough differences
between Smalltalk and C++ to mean that some patterns can be
expressed more easily in one language than the other. (See
Iterator for and example.)
Tämän vuoksi [Gamman ja kumppanien] suunnittelumalleja vastaan on esitetty kritiikkiä, esim [GL98]: nehän ovat vain olemassaolevien oliokielten puutteellisuuksien korjaamista - ja hyviä kandidaatteja uusien kielten ominaisuuksiksi.
Me käännämme asian toisinpäin: dokumentoimme olemassaolevien kielten ominaisuuksia suunnittelumalli-formaatissa. Artikkelien kirjoittamisessa sovelletaan (toivottavasti!) tuttua ja hyväksi havaittua dokumenttimallia ohjelmointikielten yksittäisten ominaisuuksien kuvaamiseen. Yhtenäisellä rakenteella yritetään toisaalta parantaa kirjoittajien mahdollisuuksia keskittyä 'itse pihvin' esittämiseen ja toisaalta helpottaa lukijoiden mahdollisuuksia tutustua materiaaliin.
Siinä missä Gamma & al olettavat lähtökohdakseen Smalltalk- ja C++-kielet, me suuntaamme kirjoituksemme laitoksen perus- ja jatko-ohjelmointikurssit Javalla käyneelle henkilölle. Kutakin dokumentoitavaa kielen ominaisuutta kuvaillaan Java-ympäristön termein, mahdollisesti esittäen mahdollinen toteutus ko. ominaisuuden simuloimiseksi.
Artikkeleiden valmistumis- ja esittelyajat ovat työryhmäkohtaisia, samoin opponointien päivämäärät. Artikkelin tulisi valmistua viikkoa ennen allokoitua esityspäivämäärää. Kunkin ryhmän esityksen ajankohta kootaan erilliseen luetteloon