Yliopiston etusivulle Suomeksi Inte på svenska No english version available
Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Tieteellisen kirjoittamisen kurssi
Syksy 2009
Ryhmä: Ohjelmistojärjestelmät (ohjelmointikielet ja ohjelmointitekniikka)
Ohjaaja: Arto Wikla
Valvoja:   Juha Vihavainen
Sivun tulostettava versio

Työaiheet

Työaiheet on alla määritelty antamalla aihealueen nimi tai otsikko, luettelemalla esimerkkilähteitä sekä antamalla joukko avainsanoja, jotka luonnehtivat aiheen tarkennuksia tai erilaisia aiheeseen sopivia teemoja.

Ohjelmointikielet ja -paradigmat

  1. Periytyminen oliokielissä [Lisk88, Taiv96, Kosk00, Stro97]
    - periytymisen lajit ja tekniikat (C++:n private inheritance)
    - moniperintä oliokielissä. puhtaat oliokielet vs. hybridikielet
  2. Prototyyppikielet [SmUn95, Unga92]
    - Self-kieli, Kevo, luokattomuus, delegaatio perintämekanismina
  3. Smalltalk-kielen synty ja kehitys [Gold95, DeSc84, HPLII, Lewi95]
    - oliokäsite, metaoliot, ohjelmointi simulointina
    - toteutustekniikat (virtuaalikone, dynamic dispatch, olioiden hallinta)
  4. Funktionaalinen ohjelmointi [Back78, AbSS96, Huda89, HuFa92, HPLII, Scot06]
    - listojen käsittely, funktiot arvoina, lambdakalkyyli, Scheme, ML, Haskell
  5. Logiikkaohjelmointi [Brat00, HPLII, Scot06, AbSS96]
    - loogiset termit, samastus, resoluutio, Prolog
  6. Dataflow-ohjelmointi [JoHM04, MSAG83, WJHM04]
    - implisiittinen rinnakkaisuus, moniprosessorikoneet, SISAL
  7. Geneerisyys ja luokkamallit oliokielissä [Bato04, Ghos04]
    - Ada, C++, Eiffel, Java 1.5,
  8. Lua-skriptikieli [IeFC06, Ieru06]
    - upotettu, laajennettava skriptikieli
  9. Sovellussuuntautuneet ohjelmointikielet [Huda96, Spin01, MeHS05]
    - DSL: domain-specific language
    - AWK, Prolog, Yacc, Lex, SQL, UNIXin sed
  10. Esimerkkikieli ja sen kehitys, arviointi ja vertailu [Arms07, FlMa08, Ruby09, O'Sul09, Hall09]
    - Erlang, Ruby, Haskell, Clojure (tai joku muu)

Ohjelmointikielten määrittely ja toteutus

  1. Ohjelmointikielten virtuaalikoneet [Wirt81, Nori81, Budd87, LiYe96, LiYe97, Ayco03, Crai06, ALSU07]
    - tulkkaus, virtuaalikoneet, ajoaikainen suoritusympäristö
    - P-koodi, Javan tavukoodi, ohjelman linkitys/lataus
  2. Roskankeruu [ScWa67, DeBo76, Cohe81, BoWe88, HeMo92, Wils92]
    - muistinvaraukset, viitelaskurit, mark-and-sweep, sukupolvet
  3. Staattinen ja vahva tyypitys oliokielissä [Wels77, CaWe85, Seth96, Sebe99]
    - staattinen vs. dynaaminen tyypitys, heikko vs. vahva tyypitys
    - kovarianssi ja kontravarianssi parametrien välityksessä, C++, Java, Eiffel
  4. Automaatit ja formaalien kielten käsittely* [McYa60, Thom68, HoMU06, ALSU07, YoWo07]
    - tila-automaatit ja säännölliset kieliopit
    - säännölliset lausekkeet ja niiden tunnistus
    - kääntäjän selaajan toteutus tila-automaattina
  5. Dataflow-analyysi [ALSU07, luku 9]
    - ohjelmakoodin optimointi: redundanssin poisto, dead-code elimination
    - ohjelman kulkukaavio (flow graphs), dataflow-yhtälöt

Ohjelmistotekniikka

  1. Geneeriset luokkakirjastot [Wise96, MuSa96, Stro97]
    - periytyminen vs. geneerisyys (luokkamallit)
    - C++ STL, Javan geneerinen luokkakirjasto, Ada-95, Eiffel
  2. Olioarkkitehtuurit ja niiden ylläpito [Fowl99, Gamm95, Kosk00, Busc96]
    - refaktorointitekniikat (refactoring), refaktoroinnin automatisointi
    - uuskäyttö, sovelluskehykset, oliosuunnittelun ratkaisumallit
  3. Oliojärjestelmien testaus ja vianetsintä [Bind99]
    - testaustekniikat, toiminnallinen vs. rakenteinen testaus
    - testauksen automatisointi, itseään testaavat ohjelmat
    - assert (C, Java), programming-by-contract (Eiffel)
  4. Komponenttien käyttö ohjelmistotuotannossa [Szyp02, Press05, KoMi05, Kosk00]
    - komponentit, Corba, JavaBeans
  5. Aspektiohjelmointi [Kicz97]
    - ohjelmien modularisointi, aspektikääntäjät
  6. Arkkitehtuurityylit ohjelmarakenteen perustana [Busc96, Bass98, KoMi05]
    - arkkitehtuurin kuvaus, rajapinnat, systeemitason ratkaisumallit
    - kerrosarkkitehtuuri, tietovuoarkkitehtuurit, asiakas-palvelin -arkkitehtuuri
    - arkkitehtuurien arviointi
  7. Tuoterunkoarkkitehtuurien käyttö ohjelmistokehityksessä [Dikel97, BacBa01]
    - product-line architecture, uuskäyttö, sovelluskehykset
    - arkkitehtuurin rooli ohjelmistokehityksessä, tuoterunkojen edut/ongelmat

Ryhmän työskentelystä  
 

  • referaatti (tiivistelmä), aine ja tutkielma, kypsyysnäyte
  • referaatista edetään prosessimaisesti muokaten ja täydentäen aineeseen ja tutkielmaan
  • tekstinäyte (n. puoli sivua) tarkastetaan erikseen ennen kunkin työn jättämistä
  • rakenne: (1) kansilehti, (2) tiivistelmä (ei ref.), (3) sisällysluettelo (ei ref.), (4) varsinainen teksti, (5) lähteet ja (6) liite: kirjallisuus; liitteenä on erillinen täydentyvä kirjallisuusluettelo, lähdeluettelossa vain viitatut
  • arvostelun perusteena esityksen johdonmukaisuus, ymmärrettävyys, oikeakielisyys, viimeistely, asiasisältö; yleisaiheessa kokonaisnäkemys ja ratkaisujen vertailu; ongelma ja peruskäsitteet selostettava huolellisesti
  • ulkoasu- ja muotoilumalleja (jaettu luennoilla) on noudatettava yksityiskohtaisesti
  • referaatti jätetään neljänä (4) kappaleena, aine kolmena (3) ja tutkielma yhtenä (1): jokainen ryhmässä tarkastaa ja kommentoi kolme referaattia ja kaksi ainetta (ei tutkielmia); tarkastetusta työstä laaditaan kirjalliset kommentit (vahvat kohdat ja avoimet kysymykset); kommentit käsitellään yhteisissä palautetilaisuuksissa
  • tutkielmasta esitelmät: käsitteet, jäsentely, työn vaihe, ongelmat (asiat kalvoilla)
  • tutkielman arvostelee myös yksi ulkopuolinen tarkastaja (LuK-tutkielman hyväksyminen)
  • J. Coplienin kuvaus kirjallisuuspiiri-tyyppisestä työskentelystä: A pattern language for writers' workshops

Lähdemateriaalia

Alla on lueteltu esimerkkejä töiden lähdemateriaalista.

Kirjoittajan tulee itse ylläpitää aiheestaan täydentyvää kirjallisuusluetteloa. Kirjallisessa esityksessä on lähdeluettelon lisäksi aina mukana erillisenä liitteenä kirjallisuusluettelon viimeisin versio.

online
AbSS96 H. Abelson, G.J. Sussman, with J. Sussman, Structure and Interpretation of Computer Programs, 2nd Ed. MIT Press, Cambridge, Mass., 1996.
ACLPS98 A-R. Adl-Tabatabai, M. Cierniak, G-Y. Lueh, V. Parikh & J. Stichnoth, Fast, effective code generation in a just-in-time Java compiler. ACM SIGPLAN '98 Conference of Programming Language Design and Implementation, ACM SIGPLAN Notices 33, 5 (1998), 280-290.
ACM89 Special Issue on Programming Language Paradigms. ACM Computing Surveys 21, 2 (1989).
ACM93 ACM History of Programming Languages Conference II. ACM SIGPLAN Notices 28, 3 (1993).
AgHö95 Ole Agesen & Urs Hölzle, Type feedback v. concrete type inference: A comparison of optimization techniques for object-oriented languages. OOPSLA'95 Conf. Proc., 91-107.
Amma81a U. Ammannn, The Zürich implementation. In Pascal - The Language and Its Implementation[Barr81], 63-82.
Amma81b U. Ammannn, Code generation for a Pascal compiler. In Pascal - The Language and Its Implementation[Barr81], 83-123.
AhKW88 A.V. Aho, B.W. Kernighan, P.J. Weinberger, The AWK Programming Language. Addison-Wesley, USA, Reading, Mass., 1988.
ALSU07 A.V.Aho, M.S.Lam, R.Sethi, J.D.Ullman, Compilers: Principles, Techniques & tools. Addison-Wesley, 2007.
ALSU07 A.V. Aho, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques, & Tools 2nd Edition. Addison-Wesley, USA, Boston, 2007.
ArGo98 Ken Arnold, James Gosling, The Java Programming Language. 2nd Ed. Addison-Wesley, USA, 1998.
Arms07 Armstrong Joe, Programming Erlang: Software for a Concurrent World. Series: Pragmatic programmers. Pragmatic Bookshelf, 2007.
Ayco03 John Aycock, A brief history of just-in-time. CM Computing Surveys 35, 2 (June 2003), 97-113.
BacBa01 F.Bachmann, L.Bass, "Managing Variability in Software Architectures". Symposium on Software Reusability, Toronto, Canada, 18-20 May 2001.
Back78 J.W.Backus, Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM 21, 8 (1978), 613-641.
BaKo79 B. Baker & S. Kosaraju, A comparison of multilevel break and next statements. Journal of the ACM 26, 3 (1979), 555-566.
Barr81 D.W. Barron (Ed.). Pascal - The Language and Its Implementation. John Wiley, New York, 1981.
BaGS94 David Bacon, Susan Graham & Oliver Sharp, Compiler transformations for high-performance computing. ACM Computing Surveys 26, 4 (1994), 345-420.
Bass98 Len Bass et al., Software architecture in practice. Addison-Wesley, 1998.
Bato04 Vladimir Batov, Java generics and C++ templates. C/C++ User's Journal 22, 7 (July, 2004), 16 - 20.
Beck99 K. Beck, Extreme Programming Explained: Embrace Change. Addison-Wesley, 1999.
Bind99 R. Binder, Testing Object-Oriented Systems: Models, Patterns, and Tools. Addison-Wesley, 1999.
BoWe88   Hans Juergen Boehm & Mark Weiser, Garbage collection in an uncooperative environment. Software - Practice and Experience 18, 9 (1988), 807-820.
Brat00   I. Bratko, Prolog Programming for Artificial Intelligence.(3rd Ed.) Addison-Wesley, 2000.
BrCo93 Peter Bumbulin & Donald Cowan, RE2C: A more versatile scanner generator. ACM Letters on Programming Languages and Systems 2, 1-4 (1993), 70-84.
Budd87 T. Budd, A Little Smalltalk. Addison-Wesley, USA, 1987.
Busc96 Frank Buschmann et al., Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., 1996.
Card84   Luca Cardelli, Compiling a functional language. ACM Symposium on Principles of Programming Languages/ on LISP and Functional Programming, ACM Press, USA, 208-217.
Carg96   Tom Cargill, An overview of Java for C++ programmers. C++ Report 8, 2 (1996), 46-49.
CaWe85   Luca Cardelli & Peter Wegner, On understanding type, data abstraction, and polymorphism. ACM Computing Surveys 17, 4 (1985), 471-522.
CFRW91   Ronalt Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman & F.Kenneth Zadeck, Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13, 4 (1991), 451-490.
ChMi84   K. Mani Chandy & J. Misra, The drinking philosophers problem. ACM Transactions on Programming Languages and Systems 6, 4 (1984), 632-646.
ChUn91   C. Chambers & D. Ungar, Making pure object-oriented languages practical. ACM SIGPLAN Notices 26, 1 (1991), 1-15.
ClWW84   L. Clarke, J. Wileden & A. Wolf, Nesting in Ada is for the Birds. ACM SIGPLAN Notices 15, 11 (1980), 139-145.
Cohe81   Jacgues Cohen, Garbage collection of linked data structures. ACM Computing Surveys 13, 3 (1981), 341-368.
Cohe88   Jacgues Cohen, A view of the origins and development of Prolog. Communications of the ACM 31, 1 (1988), 26-36.
Coro93   A. Colmerauer & P. Roussel, The birth of Prolog. ACM SIGPLAN Notices 28, 3 (1993), 37-52.
Crai06   Craig, Iain, Virtual machines. Springer-Verlag, 2006.
DeBo76   L.Peter Deutsch & Daniel Bobrow, An efficient incremental automatic garbage collector. Communications of the ACM 19, 9, (1976), 522-526.
DeSc84   L. P. Deutsch and A. M. Schiffman, Efficient implementation of the Smalltalk-80 system, Conf. Eleventh Symposium on Principles of Programming Language, Jan 1984, 297-301.
Deut94   Alain Deutsch, Interprocedural may-alias analysis for pointers: beyond k-limiting. Proc. of the SIGPLAN '94 Conference of Programming Language Design and Implementation (in ACM SIGPLAN Notices 29, 6 (1994), 230-241.
Dijk68   Edsger Dijkstra, GoTo statement considered harmful. Communications of the ACM 11, 3, (1968), 147-148.
Dikel97 D.Dikel et al., Applying software product-line architecture. In IEEE Computer 30 (1997), 8, 49-55.
Dikel01 D.M. Dikel et al., Software architecture : organizational principles and patterns. Prentice Hall PTR, 2001.
DiMM98   Amer Diwan, Kathryn McKinley & J.Eliot Moss, Type-based alias analysis. Proc. of the SIGPLAN '98 Conference of Programming Language Design and Implementation, in ACM SIGPLAN Noticess 33, 5 (1998), 106-117.
Dolb97   Julian Dolby, Automatic inline allocation of objects. Proc. of the SIGPLAN '97 Conference of Programming Language Design and Implementation, in ACM SIGPLAN Notices 32, 5 (1997), 7-17.
Dyad95   Lev Dyadkin, Multibox parsers: No more handwritten lexical analyzers. IEEE Software, 12, 5 (1995), 61-67.
Earl70   Jay Earley, An efficient context-free parsing algorithm. Communications of the ACM, 13, 2 (1970), 94-102.
EaSt70   Jay Earley & H. Sturgis, A formalism for translator interactions. Communications of the ACM, 13 (1970), 607-617.
FaSJ99a M.E. Fayad, D.C.Schmidt, R.E.Johnson, Building application frameworks : object-oriented foundations of framework design. Wiley, 1999.
FaSJ99b M.E. Fayad, D.C.Schmidt, R.E.Johnson, Implementing application frameworks : object-oriented frameworks at work. Wiley, 1999.
FeYo69   Robert Fenichel & Jerome Yochelson, A Lisp garbage collector for virtual memory systems. Communications of the ACM, 12, 11 (1969), 611-612.
Fink96 R.A. Finkel, Advanced Programming Language Design. Addison-Wesley, 1996.
FiLe80 Charles Fischer & Richard LeBlanc, Jr., Implementation of runtime diagnostics in Pascal. IEEE Transactions on Software Engineering 6, 4 (1980), 313-319.
Flec76 A. Fleck, On the impossibility of content exchange through the by-name parameter transmission technique. ACM SIGPLAN Notices 11, 11 (1976), 38-41.
FlMa08 Flanagan D. & and Matsumoto Y., The Ruby programming language. O’Reilly, 2008.
Fowl99 M. Fowler et al., Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
Gamm95 Erich Gamma et al., Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, USA, 1995.
GaFH82 Mahadevan Ganapathi, Charles Fischer & John Hennessy, Retargetable compiler code generation. ACM Computing Surveys 14, 4 (1982), 573-592.
GDDC97 David Grove, Greg DeFouw, Jeffrey Dean & Craig Chambers, Call graph construction in object-oriented languages. OOPSLA '97 Conf. Proc., ACM SIGPLAN Notices 32, 10 (1997), 108-124.
Ghos04 Debasish Ghosh, Generics in Java and C++ - a comparative model. ACM SIGPLAN 39, 5 (May, 2004), 40 - 47.
GiMu86 Phillip Gibson & Steven Muchnick, Efficient instruction scheduling for a pipelined architecture. Proc. of the SIPLAN '86 Symposium on Compiler Construction ACM SIGPLAN Notices 21, 7 (1986), 11-16.
Glas97 Graham Glass, The Java Generic Library. C++Report 9, 1 (1997), 70-74.
GlGr78 R.Steven Glanville & Susan Graham, A new method for compiler code generation. Conf. Record of the 5th Annual ACM Symposium on Principles of Programming Languages, Tucson, AZ, 1978, 231-240.
Gold95 Adele Goldberg, Why Smalltalk. Communications of the ACM 38, 10 (1995), 105-107.
Good75 John Goodenough, Exception handling: Issues and a proposed notation. Communications of the ACM 18, 12 (1975), 683-696.
Hall09 Halloway S., Programming Clojure. Pragmatic Bookshelf, 2009.
Hans81 David Hanson, Is block structure necessary? Software - Practice and Experience 11, 8, (1981), 853-866.
HeDa89 Robert Henry & Peter Damron, Algorithms for table-driven code generators using tree-pattern matching. Technical Report 89-02-03, Computer Science Dept., Univ. of Washington, Seattle, WA, Feb. 1989.
HeMo92 Maurice Herlihy & J.Elliot Moss, Lock-free garbage collection for multiprocessors. IEEE Transactions on Parallel and Distributed Systems 3, 3, (1992), 304-311.
Hoar74 C.A.R. Hoare, Monitors: an operating system structuring concept. Communications of the ACM 17, 10 (1974), 549-557.
Hoar89 C.A.R. Hoare, Hints on programming language design. Essays in Computing Science, Prentice-Hall, 1089, 193-216.
HoMU06 J.E.Hopcroft, R.Motwani, J.D.Ullman, Introduction to Automata Theory, Languages, and Computation (3rd Edition), Addison Wesley, 2006.
HOOl91 W. Wilson Ho & Ronald Olsson, An approach to genuine dynamic linking. Software - Practice and Experience 21, 4 (1991), 375-390.
HPLII History of Programming Languages II. ed. by T. Bergin & R. Gibson. ACM Press, Addison-Wesley, USA, 1996. (Also as ACM Conf. Proc. SIGPLAN Notices 28, 3 (1993))
Huda89 P. Hudak, Conception, evolution, and application of functional programming languages. ACM Computing Surveys 21, 3 (1989), 359-411.
Huda96 P.Hudak, Building domain-specific embedded languages. ACM Computing Surveys 28, 4es (Dec 1996).
HuFa92 P. Hudak, J. Fasel, A gentle introduction to Haskell. ACM SIGPLAN Notices 27, 5 (1992), 1-53.
HuHN94 Joseph Hummel, Laurie Hendren & Alexandru Nicolau, A general data dependence test for dynamic, pointer-based data structures. Proc. of the SIGPLAN '94 Conference of Programming Language Design and Implementation, Orlando FL. ACM SIPLAN Notices 29, 6 (1994), 218-229.
IeFC06 R. Ierusalimschy, L. H. de Figueiredo, W. Celes, Lua 5.1 Reference Manual. Distributed by Ingram and Baker & Taylor, Lua.org, August 2006.
Ieru06 Roberto Ierusalimschy, Programming in Lua (2nd edition). Distributed by Ingram and Baker & Taylor, Lua.org, March 2006.
Inge61 Peter Ingerman, Thunks: A way of compiling procedure statements with some comments on procedure declarations. Communications of the ACM 4, 1 (1961), 55-58.
JoHM04 Johnston, W. M., Hanna, J. R. P. & Millar, R. J., Advances in dataflow programming languages. ACM Computing Surveys, 36, 1 (2004), 1-34.
John75 S. Johnson, YACC: yet another compiler compiler. CS Technical Report 32, AT&T Bell Laboratories, USA, 1975.
JoRi81 S. Johnson & D. Ritchie, The C language calling sequence. CS Technical Report 102, AT&T Bell Laboratories, USA, 1981.
JPAR68 Walter Johnson, James Porter, Stephanie Ackley & Douglas Ross, Automatic generation of efficient lexical processors using finite state techniques. Communications of the ACM 11, 2 (1968), 805-813.
KePi84 B. Kernighan & R. Pike, The UNIX Programming Environment. Prentice-Hall, USA 1984.
Kicz97 G. Kiczales et al., Aspect-Oriented Programming. ECOOP'97, 220-242. Springer Lecture Notes in CS, 1997.
Kirb98 G. Kirby et al., Linguistic Reflection in Java. Software-Practice and Experience 28, 10 (1998), 1045-1077.
Knut74 D. Knuth, Structured programming with GOTO statements. ACM Computing Surveys, 6, 4 (1974), 261-301.
KoMi05 Kai Koskimies & Tommi Mikkonen, Ohjelmistoarkkitehtuurit. Talentum, 2005.
Kosk00 Kai Koskimies, Oliokirja. Suomen ATK-kustannus, 2000.
Kowa88 R. Kowalski, The early years of logic programming. Communications of the ACM 31, 1 (1988), 38-43.
LeMa75 H. Ledgard & M. Marcotty, A genealogy of control structures. Communications of the ACM 18, 11 (1975), 629-639.
Lea00 Doug Lea, Concurrent Programming in Java: Design Principles and Patterns, 2nd Ed. Addison-Wesley, USA, 2000.
LeSc75 M. Lesk & E. Schmidt, LEX - a lexical analyzer generator. UNIX Programmer's Manual 2, AT&T Bell Laboratories, USA, 1975.
Levi95 J. Levine, T. Mason & D. Brown, lex & yacc. O'Reilly & Associates, Inc., USA, 1995.
Lewi95 S. Lewis, The Art and Science of Smalltalk. Prentice-Hall, 1995.
LiYe96 T. Lindholm & F. Yellin, The Java Virtual Machine Specification. Addison-Wesley, USA, 1996.
LiYe97 T. Lindholm & F.Yellin, Inside the Java Virtual Machine (adapted from LiYe96). UNIX Review 15, 1 (1997), 31-39.
Lisk88 Barbara Liskov, Data abstraction and hierarchy. ACM SIGPLAN Notices 23, 5 (1988), 19.
LiSn79 Barbara Liskov & Alan Snyder, Exception handling in CLU. IEEE Transactions on Software Engineering 5, 6 (1979), 546-558.
LiZi74 Barbara Liskov & S. Zilles, Programming with abstract data types. ACM SIGPLAN Notices 9, 4 (1974), 50-59.
LiSn79 Barbara Liskov, Alan Snyder, Russel Atkinson & J. Craig Schaffert, Abstraction mechanisms in CLU. Communications of the ACM 20, 8 (1979), 564-576.
LuPo80 D. Luckam & W. Polak, Ada exception handling: An axiomatic approach. ACM Transactions of Programming Languages and Systems 2, 2 (1980), 225-233.
Mart97 Robert Martin, C++ and Java: a critical comparison. C++ Report 9, 1 (1997), 42-49.
MacL77 M.Donald MacLaren, Exception handling in PL/I. Proc. of an ACM Conf. on Language Design for Reliable Software, ACM SIGPLAN Notices 12, 3 (1977), 101-104.
McCa60 John McCarthy, Recursive functions of symbolic expressions and their computation by machine, Part I. Communications of the ACM, 3, 4 (1960), 184-195.
McYa60 R.McNaughton, Yamada H., Regular expressions and state graphs for automata. IRE Transactions on Electronic Computers EC-9:1 (1960), 38-47.
MeHS05 Marjan Mernik, Jan Heering & Anthony M. Sloane, When and how to develop domain-specific languages. ACM Computing Surveys 37, 4 (2005), 316 - 344.
MOSS96 Stephan Murer, Stephen Omohundro, David Stoutamire & Clemens Szyperski, Iteration abstraction in Sather. ACM Transactions on Programming Languages and Systems 18, 1 (1996), 1-15.
MSAG83 McGraw, J., Skedzielewski, S., Allan, S., Grit, D., Oldehoeft, R., Glauert, J., Dobes, I. & Hohensee, P., SISAL: Streams and iteration in a single-assignment language. Livermore National Laboratory, Livermore, CA, USA, July 1983.
MuSa96 David Musser & Atul Saini, STL Tutorial and Reference Guide. Addison-Wesley, USA, 1996.
Nori81 K.V. Nori et al., Pascal-P implementation notes. In Barr81, 125-170.
O'Sul09 O’Sullivan B., Goerzen J. & and Stewart D. Real world Haskell. O’Reilly, 2009.
Parn85 D.L.Parnas, P.C.Clements, and D.M.Weiss, The modular structure of complex systems. IEEE Transactions on Software Engineering 11, 3 (1985), 259-266.
PeKa91 D. Perry & G. Kaiser, Models of software development environments. IEEE Transactions on Software Engineering 17, 3 (1991), 283-295.
Pren72 C. Prenner et al., An implementation of backtracking for programming languages. Special issue: Control Structures in Programming Languages, ACM SIGPLAN Notices 7, 11 (1972).
Press05 Roger S Pressman, Software Engineering: A Practitioner's Approach (6/e). McGraw-Hill, 2005.
Ritc93 D. Ritchie, The development of the C language. ACM SIGPLAN Notices 28, 3 (1993), 201-208.
Rubi87 F. Rubin, "GOTO statement considered harmful" consider harmful (letter to the editor). Communications of the ACM 30, 3 (1987), 195-196.
Ruby09 Ruby S., Thomas D & Heinemeier D., Agile Web Development with Rails. Pragmatic Bookshelf, 2009.
Scot06 M.L. Scott, Programming Language Pragmatics, 2nd Edition. Morgan Kaufmann, 2006.
ScFi88 M.L. Scott & Raphael Finkel, A simple mechanism for type security across compilation units. IEEE Transactions of Software Engineering 14, 8 (1988), 1238-1239..
ScWa67 H. Schorr & W. Waite, An efficient machine-independent procedure for garbage collection in various list structures. Communications of the ACM 10, 8 (1967), 501-506.
Sebe99 R.W. Sebesta, Concepts of Programming Languages (3rd Ed.). Addison-Wesley, Reading, Mass., 1999.
Seth81 Ravi Sethi, Uniform syntax for type expressions and declarators. Software - Practice and Experience 11, 6 (1981), 623-628.
Seth96 R. Sethi, Programming Languages - Concepts and Constructs (2 Ed.). Addison-Wesley, Reading, Mass., 1996.
ShGa96 M. Shaw, D. Garlan, Software architecture : perspectives on an emerging discipline. Prentice Hall, 1996.
SmUn95 Randall Smith & David Ungar, Programming as experience: the inspiration for Self. ECOOP'95 Object-Oriented Programming, 9th European Conf., Åarhus, Denmark, Aug. 1995, 303-330.
Spin01 Diomidis Spinellis, Notable design patterns for domain specific languages. Journal of Systems and Software, 56, 1 (Feb 2001), 91–99.
SrEu94 Amitabh Srivastava & Alan Eustace, ATOM: A system for building customized program analysis tools. Proc. of the SIGPLAN '94 Conference on Programming Language Design and Implementation. ACM SIGPLAN Notices, 16, 6 (1994), 196-205.
Stro83 Bjarne Stroustrup, Adding classes to C: An exercise in language evolution. Software - Practice and Experience 13 (1983), 139-161.
Stro97 Bjarne Stroustrup, The C++ Programming Language (3rd ed.). Addison-Wesley, USA, 1997.
Szyp02 Clemens Szyperski, Component software: beyond object-oriented programming. Addison-Wesley, 2002.
Taiv93 Antero Taivalsaari, On the notion of object. Journal os Systems and Software 21, 1 (1993), 3-16.
Taiv96 Antero Taivalsaari, On the notion of inheritance. ACM Computing Surveys 28, 3 (1996), 438-479.
Thom68 K.Thomson, Regular expression search algorithm. Communications of the ACM 11, 6 (1968), 419-422.
Tich86 Walter Tichy, Smart recompilation. ACM Transactions on Programming Languages and Systems 8, 3 (1986), 273-291.
Turn79 D. Turner, A new implementation technique for applicative languages. Software - Practice and Experience 9, 1 (1979), 31-49.
Unga92 David Ungar et al., Object, message, and performance: How they coexist in Self. IEEE Computer 25, 10 (1992), 53-64. (Reprinted in D.Rice, Readings in O-O Systems and Applications. IEEE Computer Society Press, USA, 1995, 78-90.)
WaCS96 L. Wall, T. Christiansen, R.L. Schwartz, Programming Perl, 2nd Ed. O'Reilly & Associates, Inc., Sebastopol, CA., 1996.
Wadl97 Philip Wadler, How to declare an imperative. ACM Computing Surveys 29, 3 (1997), 240-263.
WaPP77 D. Warren, L. Pereira & F. Pereira, Prolog: The language and its implementation compared to LISP. ACM SIGPLAN Notices 12, 8 (1977) and ACM SIGART Newsletter 6, 4 (1977).
Wegn76 Peter Wegner, Programming languages - the first 25 years. IEEE Transactions on Software Engineering 9, 4 (1976), 1207-1225.
Wegn90 Peter Wegner, Concepts and paradigms of object-oriented programming. OOPS Messenger 1, 1 (1990), 7-87.
Wels77 J. Welsh et al., Ambiquities and insecurities in Pascal. Software-Practice and Experience 7, 6 (1977), 685-696.
Wexe81 R.L. Wexelblat, History of Programming Languages. Academic Press, New York, 1981.
WiHo66 Niklaus Wirth & C.A.R. Hoare, A contribution to the development of ALGOL. Communications of the ACM 9, 6 (1966), 413-431.
WiJo93 Paul Wilson Mark Johnstone, Real-time non-copying garbage collection. OOPSLA '93 Workshop on Memory Management and Garbage Collection, Washington, DC, Sep 1993.
Wils92 Paul Wilson, Uniprocessor garbage collection techniques. International Workshop on Memory Management, St. Malo, France, September 1992. Published as Springer-Verlag Lecture Notes in Computer Science no. 637. (An extended paper available at http://www.cs.utexas.edu/users/oops/papers.html).
Wirt71 N. Wirth, The design of a Pascal compiler.
Wirt80 The module: A system structuring facility in high-level programming languages. Proc. Language Design and Programming Methodology, Sydney, Australia, 1979. Vol. 79 of Lecture Notes in Computer Science, Springer-Verlag, 1980, 1-24.
Wirt81 N. Wirth, Pascal-S: a subset and its implementation. In Barr81, 199-259.
Wirt86 N. Wirth, Microprocessor architectures - a comparison based on code generation by compiler. Communications of the ACM 29 (1986), 978-990.
Wirt93 N. Wirth, Recollections about the development of Pascal. In ACM History of Programming Languages Conference II [ACM93]. ACM SIGPLAN Notices 28, 3 (1993), 333-342.
Wise96 G. B. Wise, An overview of the Standard Template Library. ACM SIGPLAN Notices 31, 4 (1996), 4-10.
WJHM04 Wesley M. Johnston, J. R. Paul Hanna, Richard J. Millar, Advances in dataflow programming languages ACM Computing Surveys 36, 1 (Mar 2004), 1-34.
WuSh73 W. Wulf & M. Shaw, Global variables considered harmful. ACM SIGPLAN Notices 8, 2 (1973), 80-86.
YoWo07 Yo-Sub Han, Derick Wood, Obtaining shorter regular expressions from finite-state automata. Theoretical Computer Science, Elsevier 370 (2007), 110–120. (online 11.01.2008)
Zhou96 Neng-Fa Zhou, Parameter passing and control stack management in Prolog implementation revisited. ACM Transactions on Programming Languages and Systems 18, 6, (1996), 752-779.

Tärkeimpiä julkaisuja ja konferensseja

  • IEEE Software
  • Computer/IEEE
  • Software - Practice & Experience
  • Software - Concepts & Tools (Structured Programming)
  • ACM Computing Surveys
  • ACM Letters on Programming Languages and Systems
  • ACM Transactions on Programming Languages and Systems
  • ACM SIGPLAN Notices
  • IEEE Transactions of Software Engineering
  • Communications of the ACM
  • ECOOP-konferenssit
  • Programming Language Design and Implementation -konferenssit
  • Principles of Programming Languages -konferenssit
  • OOPSLA-konferenssit
  • Theory and Practice of Object Systems
  • JOOP
  • C++ Report
  • Java Report

Valid HTML 4.01!