Syksy 2009
Ryhmä: Ohjelmistojärjestelmät (ohjelmointikielet ja ohjelmointitekniikka)
| Ohjaaja: | Arto Wikla |
| Valvoja: | Juha Vihavainen |
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
- Periytyminen oliokielissä [Lisk88, Taiv96, Kosk00, Stro97]
- periytymisen lajit ja tekniikat (C++:n private inheritance)
- moniperintä oliokielissä. puhtaat oliokielet vs. hybridikielet - Prototyyppikielet [SmUn95, Unga92]
- Self-kieli, Kevo, luokattomuus, delegaatio perintämekanismina - Smalltalk-kielen synty ja kehitys
[Gold95, DeSc84, HPLII, Lewi95]
- oliokäsite, metaoliot, ohjelmointi simulointina
- toteutustekniikat (virtuaalikone, dynamic dispatch, olioiden hallinta)- Funktionaalinen ohjelmointi [Back78, AbSS96, Huda89, HuFa92, HPLII, Scot06]
- listojen käsittely, funktiot arvoina, lambdakalkyyli, Scheme, ML, Haskell- Logiikkaohjelmointi [Brat00, HPLII, Scot06, AbSS96]
- loogiset termit, samastus, resoluutio, Prolog- Dataflow-ohjelmointi [JoHM04, MSAG83, WJHM04]
- implisiittinen rinnakkaisuus, moniprosessorikoneet, SISAL- Geneerisyys ja luokkamallit oliokielissä [Bato04, Ghos04]
- Ada, C++, Eiffel, Java 1.5,- Lua-skriptikieli [IeFC06, Ieru06]
- upotettu, laajennettava skriptikieli- Sovellussuuntautuneet ohjelmointikielet [Huda96, Spin01, MeHS05]
- DSL: domain-specific language
- AWK, Prolog, Yacc, Lex, SQL, UNIXin sed- Esimerkkikieli ja sen kehitys, arviointi ja vertailu [Arms07, FlMa08, Ruby09, O'Sul09, Hall09]
- Erlang, Ruby, Haskell, Clojure (tai joku muu) - Funktionaalinen ohjelmointi [Back78, AbSS96, Huda89, HuFa92, HPLII, Scot06]
Ohjelmointikielten määrittely ja toteutus
-
Ohjelmointikielten virtuaalikoneet
[Wirt81, Nori81, Budd87, LiYe96, LiYe97, Ayco03, Crai06, ALSU07]
- tulkkaus, virtuaalikoneet, ajoaikainen suoritusympäristö
- P-koodi, Javan tavukoodi, ohjelman linkitys/lataus -
Roskankeruu
[ScWa67, DeBo76, Cohe81, BoWe88, HeMo92, Wils92]
- muistinvaraukset, viitelaskurit, mark-and-sweep, sukupolvet
-
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 -
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 -
Dataflow-analyysi
[ALSU07, luku 9]
- ohjelmakoodin optimointi: redundanssin poisto, dead-code elimination
- ohjelman kulkukaavio (flow graphs), dataflow-yhtälöt
Ohjelmistotekniikka
-
Geneeriset luokkakirjastot [Wise96, MuSa96, Stro97]
- periytyminen vs. geneerisyys (luokkamallit)
- C++ STL, Javan geneerinen luokkakirjasto, Ada-95, Eiffel -
Olioarkkitehtuurit ja niiden ylläpito [Fowl99, Gamm95, Kosk00, Busc96]
- refaktorointitekniikat (refactoring), refaktoroinnin automatisointi
- uuskäyttö, sovelluskehykset, oliosuunnittelun ratkaisumallit -
Oliojärjestelmien testaus ja vianetsintä [Bind99]
- testaustekniikat, toiminnallinen vs. rakenteinen testaus
- testauksen automatisointi, itseään testaavat ohjelmat
- assert (C, Java), programming-by-contract (Eiffel) -
Komponenttien käyttö ohjelmistotuotannossa
[Szyp02, Press05, KoMi05, Kosk00]
- komponentit, Corba, JavaBeans -
Aspektiohjelmointi [Kicz97]
- ohjelmien modularisointi, aspektikääntäjät -
Arkkitehtuurityylit ohjelmarakenteen perustana [Busc96, Bass98, KoMi05]
- arkkitehtuurin kuvaus, rajapinnat, systeemitason ratkaisumallit
- kerrosarkkitehtuuri, tietovuoarkkitehtuurit, asiakas-palvelin -arkkitehtuuri
- arkkitehtuurien arviointi -
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.
| 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

