Kandidaatintutkielma
Kevät 2018
Ryhmä: 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

  1. Reaktiivinen ohjelmointi [Bain13]
    - interactive event-driven web applications
    - automatic propagation of changes via data flows
    - deklaratiivinen ohjelmointi, vs. tarkkailija-ratkaisumalli
    - Reactive Extensions (Rx) for .NET, JavaScript, Clojure, Scala.React
  2. Periytyminen oliokielissä [Lisk88, Taiv96, Kosk00, Stro97]
    - periytymisen lajit ja tekniikat (C++:n private inheritance)
    - moniperintä oliokielissä. puhtaat oliokielet vs. hybridikielet
  3. Dynaaminen tyypitys ohjelmointikielissä [Scot09, AlAl10, Gude93, Card91]
    - staattinen vs. dynaaminen tyypitys/sidonta: edut ja haitat
    - tekniikoiden yhdistäminen ja hybridiratkaisut (C# 4.0)
  4. Prototyyppikielet [SmUn95, Unga92]
    - Self-kieli, myös: Kevo, Lua, JavaScript
    - luokattomuus ja delegaatio perintämekanismina
  5. Moniparadigmaohjelmointi [Back78, AbSS96, Huda89, HPLII, Scot09]
    - funktiot arvoina, lambdalausekkeet, sulkeumat, C#, Go, C++
  6. Logiikkaohjelmointi [Brat00, HPLII, Scot09, AbSS96]
    - loogiset termit, samastus, resoluutio, Prolog
  7. Geneerisyys ja luokkamallit oliokielissä [Bato04, Ghos04]
    - Ada, C++, Eiffel, Java, Scala, C#
  8. Iteraattorit ja vuorottaisrutiinit [Lisk77, Moss96, Scot09]
    - ratkaisumalli vs. kielen mekanismi (abstraktio)
    - Clu, C++, Eiffel, Sather, Java, Scala, C#, Unity
  9. Smalltalk-kielen synty ja kehitys [Gold95, DeSc84, HPLII, Lewi95]
    - oliokäsite, metaoliot, ohjelmointi simulointina
    - toteutustekniikat (virtuaalikone, dynamic dispatch, olioiden hallinta)
  10. Javascript [Ecma11, Croc08]
    - dynaaminen skriptikieli: synty, kehitys, sovellukset ja käyttö
    - kirjastot ja työkalut: jQuery, meteor.js
    - kilpailijoita: TypeScript, Dart, CoffeeScript
  11. Swift [Appl14]
    - Apple, hybridikielet, synty, kehitys, sovellukset ja käyttö, mobiiliympäristöt
  12. Sovellussuuntautuneet ohjelmointikielet [Huda96, Spin01, MeHS05]
    - DSL: domain-specific language
    - AWK, Prolog, Yacc, Lex, SQL, UNIXin sed
  13. Esimerkkikieli ja sen kehitys, arviointi ja vertailu [Arms07, FlMa08, Ruby09, IeFC06, Ieru06, O'Sul09, Hall09]
    - mm. C++14, C#, F#, Ruby, Go, Clojure (tai muu kiinnostava)

Ohjelmointikielten määrittely ja toteutus

  1. Kääntäjätekniikan historia ja kehittyminen [Baue74, Sest14]
    - formaalit kielet perustana, vyörytys (bootstrapping), metakääntäjät
    - kääntäjän vaihejako, tulkkaus vs. kääntäminen, sidonta (binding)
  2. Just-in-Time -kääntäjätekniikka [Ayco03]
    - suoritusaikainen koodinluonti ja optimointi
    - HotSpot, CLR, LLVM, GNU
  3. Funktioarvot ja sulkeumat: käyttö ja toteutus [Scot09, ALSU07]
    - first-class functions, lambdalausekkeet, non-local variables and closures
    - functional/hybrid languages, Lisp, Ruby, C# etc.
    - ks. mm. Compilers, Programming Languages -oppikirjat mm. [ALSU07], function-valued parameters
  4. SSA-muotoinen välikoodi [Cytr91], ks. myös Kääntäjät-oppikirjat, mm. [ALSU07]
    - kääntäjän vaihejako, välikoodimuodot, koodin optimointi
    - SSA-muodon käyttö, edut, ongelmat
  5. Ohjelmointikielten virtuaalikoneet
    [Wirt81, Nori81, Budd87, LiYe96, LiYe97, Ayco03, Crai06, ALSU07, Scot09]
    - tulkkaus, virtuaalikoneet, ajoaikainen suoritusympäristö
    - P-koodi, Javan tavukoodi, CIL (Common Intermediate Language), ohjelman linkitys/lataus
  6. Roskankeruu [ScWa67, DeBo76, Cohe81, BoWe88, HeMo92, Wils92, JoLi96]
    - muistinvaraukset, viitelaskurit, mark-and-sweep, sukupolvet
  7. Automaatit ja säännöllisten lausekkeiden (regex) tehokas tunnistaminen
    [McYa60, John68, Thom68, HoMU06, ALSU07, YoWo07]
    - tila-automaatit, säännölliset kieliopit ja niiden tunnistus
    - selaajan tehokas toteutus tila-automaattina
  8. Dataflow-analyysi [ALSU07, luku 9]
    - ohjelmakoodin optimointi: redundanssin poisto, dead-code elimination
    - ohjelman kulkukaavio (flow graphs), dataflow-yhtälöt

Ohjelmistotekniikka

  1. Olioarkkitehtuurit ja niiden ylläpito [Fowl99, Gamm95, Kosk00, Busc96]
    - refaktorointitekniikat (refactoring), refaktoroinnin automatisointi
    - uuskäyttö, sovelluskehykset, oliosuunnittelun ratkaisumallit
  2. Sutjakka (lean) ohjelmistotuotanto [Midd01, MiJo12, IEEE12, esitelmiä, opinnäytteitä..]
    - tehokkuus, joustavuus, turhan hukan välttäminen
    - Lean-lähestymistavan käyttö alunperin teollisuustuotannossa
  3. Oliojärjestelmien testaus ja vianetsintä [Bind99]
    - testaustekniikat, toiminnallinen vs. rakenteinen testaus
    - testauksen automatisointi, itseään testaavat ohjelmat
    - debuggaus ja assert (C, Java)
    - programming-by-contract (Eiffel, D)
  4. Komponenttien käyttö ohjelmistotuotannossa [Szyp02, Press05, KoMi05, Kosk00]
    - komponentit, Corba, JavaBeans
  5. Arkkitehtuurityylit ohjelmarakenteen perustana [Busc96, Bass98, KoMi05]
    - arkkitehtuurin kuvaus, rajapinnat, systeemitason ratkaisumallit
    - kerrosarkkitehtuuri, tietovuoarkkitehtuurit, asiakas-palvelin -arkkitehtuuri
    - arkkitehtuurien arviointi

Ryhmän työskentelystä  
 

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.
AhKW88 A.V. Aho, B.W. Kernighan, P.J. Weinberger, The AWK Programming Language. Addison-Wesley, USA, Reading, Mass., 1988.
AlAl10 Joseph Albahari, Ben Albahari, C# 4.0 in a Nutshell, 4th Ed. O'Reilly, 2010.
ALSU07 A.V.Aho, M.S.Lam, R.Sethi, J.D.Ullman, Compilers: Principles, Techniques & tools. 2nd Edition. Addison-Wesley, 2007.
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.
Appl14 The Swift Programming Language. Swift Programming Series. Apple Inc., 2014. Link: https://developer.apple.com/swift/
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. ACM 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.
Bain13 E. Bainomugisha et al, A survey on reactive programming. ACM Computing Surveys, Vol. 45 (2013), 4 (Aug), Art. No. 52.
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.
Baue74 F. L. Bauer (ed.), Compiler Construction - An Advanced Course. Springer-Verlag, Berlin Heidelberg GmbH, 1974
BBBC95 Burnett, M. M., Baker, M. J., Bohus, C., Carlson, P., Yang, S. ja van Zee, P., Scaling up visual programming languages. Computer 28, 3, (March 1995), 45-54.
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.
Burn99 Margaret Burnett, Visual Programming. In Encyclopedia of Electrical and Electronics Engineering (John G. Webster, ed.), John WIley & Sons Inc., New York, 1999.
Burn01 Burnett, M. M. Visual Programming. John Wiley & Sons, Inc., 2001.
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.
Card91 Cardelli, Luca, "Typeful programming". In Formal Description of Programming Concepts, Eds. E.J.Neuhold, M.Paul Eds., Springer-Verlag, 1991, 431–507. (Revised Jan 1, 1993. At http://lucacardelli.name/Papers/TypefulProg.A4.pdf)
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.
CoxN91   Brad J. Cox & Andrew J. Novobilski, Object-oriented programming : an evolutionary approach. Addison-Wesley, 1991.
Cytr91 Cytron, Ron et al., Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13 (1991) ,4 (March), 451-490.
Crai06   Craig, Iain, Virtual machines. Springer-Verlag, 2006.
Croc08 Crockford D., JavaScript: The Good Parts. O'Reilly, 2008.
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.
DiMH11 J.P Diprose, B.A. MacDonald, J.G Hosking. Ruru: A spatial and interactive visual programming language for novice robot programming. In Visual Languages and Human-Centric Computing (VL/HCC), 2011 IEEE Symposium on, pp. 25-32, 18-22 Sept. 2011. doi: 10.1109/VLHCC.2011.6070374
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.
ECMA11 ECMAScript language specification. Standard ECMA-262, Edition 5.1 (June 2011). At http://www.ecma-international.org/publications/standards/Ecma-262.htm
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.
Gude93 Gudeman, D., "Representing type information in dynamically typed languages" Tech. Rep. TR 93-27, Department of Computer Science, University of Arizona, 1993.
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.
HoGR06 K. Howland, J. Good, J. Robertson. Script Cards: A Visual Programming Language for Games Authoring by Young People. In Visual Languages and Human-Centric Computing, 2006. VL/HCC 2006. IEEE Symposium on, pp. 181-186, 4-8 Sept. 2006. doi: 10.1109/VLHCC.2006.42
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.
IEEE12 IEEE Software, Vol. 29 (2012), Issue 5 (Sep). Special Issue on (e.g. Lean) Software Development.
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.
John68 Johnson W. et al., Automatic generation of efficient lexical processors using finite state techniques. Communications of the ACM Vol 11 (1968), 12 (Dec), 805-813 .
JoLi96 R. Jones & R. Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, 1996.
JoMc08 Johnsgard, K. ja McDonald, J., Using Alice in overview courses to improve success rates in programming. In Software Engineering Education and Training 2008. IEEE 21st Conference on, April 2008, 129 –136.
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.
KiHA97 Kiper, J. D., Howard, E. ja Ames, C., Criteria for evaluation of visual programming languages. Journal of Visual Languages & Computing 8, 2 (April 1997), 175–192.
Kirb98 G. Kirby et al., Linguistic Reflection in Java. Software-Practice and Experience 28, 10 (1998), 1045-1077.
Knut65 Knuth D.E., On the translation of languages from left to right. Information and control 8 (1965), 6, 607-639.
Knut74 Knuth D.E., 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.
LeSt68 Lewis II, P., Stearns, R., Syntax-directed transduction. Journal of the ACM 15 (1968), 3 (July), 465-488.
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.
Lisk77 Barbara Liskov et al., Abstraction mechanisms in CLU. Communications of the ACM CACM 20 ((1977) 8 (Aug), 564-576.
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.
Luca61 Lucas P., The Structure of Formula-Translators. Journal ALGOL Bulletin Supplement 16 (September 1961), 1-27.
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.
McKi03 McKinney, A. L., A recent radical graphical approach to programming. Journal of Computing Sciences in Colleges 18, 6 (June 2003), 28-35.
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.
Midd01 Middleton, Peter P., Lean Software Process. The Journal of Computer Information Systems, Vol 42 (2001), 1, 21-25
MiJo12 Middleton, P. ja Joyce, D., Lean Software Management: BBC Worldwide Case Study. IEEE Transactions on Engineering Management, Vol. 59 (2012) , 1 (Feb), 20 - 32.
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.
MRRS10 Maloney, J., Resnick, M., Rusk, N., Silverman, B. ja Eastmond, E., The Scratch programming language and environment. ACM Transactions on Computing Education 10, 4 (Nov 2010), 16:1–16: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.
NaCa01 Navarro-Prieto, R. ja Canas, J. J., Are visual programming languages better? The role of imagery in program comprehension. International Journal of Human-Computer Studies, 54,6 (June 2001), 799–829.
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.
Scot09 M.L. Scott, Programming Language Pragmatics, 3rd Edition. Morgan Kaufmann, 2009.
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.
Sest14 Peter Sestoft, A history of compilers. Public lecture, Dansk Datahistorisk Forening, Copenhagen, 23 January 2014. Slides in PDF.
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