Computer Laboratory > Teaching > Course material 2008–09 > Concepts in Programming Languages


Concepts in Programming Languages

Principal lecturer: Dr Marcelo Fiore
Taken by: Part IB
Past exam questions
Another past exam question

Lecture slides

  • Introduction and motivation.
          Additional reading material:
  • K. Zuse. Plankalkul.
  • The first procedural language: FORTRAN (1954-58).
          Additional reading material:
  • Fortran.
  • The first declarative language: LISP (1958-62).
          Additional reading material:
  • J. McCarthy. Recursive functions of symbolic expressions and their computation by machine.
        Communications of the ACM, 3(4):184-195, 1960.
  • Block-structured procedural languages: Algol (1958-68) and Pascal (1970).
          Appendix: BCPL (1967) and C (1971-78)
          Additional reading material:
  • D. E. Knuth. The remaining trouble spots in ALGOL 60.
        Communications of the ACM, Volume 10, Issue 10, pages 611-618, 1967.
  • B. Kerninghan. Why Pascal is not my favorite programming language.
        AT&T Bell Laboratories. Computing Science Technical Report No. 100, 1981.
  • Object-oriented languages --- Concepts and origins: SIMULA (1964-67) and Smalltalk (1971-80).
          SML code: Objects in SML!?
          Programming language: Squeak.
          Additional reading material:
  • A. C. Kay. The early history of Smalltalk.
        ACM SIGPLAN Notices, Volume 28, No. 3, 1993.
  • P. Wegner. Concepts and Paradigms of Object-Oriented Programming
        Expansion of OOPSLA-89 Keynote Talk.
  • B. Stroustrup. What is Object-Oriented Programming? (1991 revised version).
        Proc. 1st European Software Festival. February, 1991.
  • Types in programming languages: ML (1973-1978).
          Additional reading material:
  • A. Koenig. An anecdote about ML type inference.
        USENIX Symp. on Very High Level Languages, 1994.
  • Data abstraction and modularity: SML Modules (1984-97).
          Additional reading material:
  • M. Tofte. Four Lectures on Standard ML.
        LFCS Report Series ECS-LFCS-89-73, 1989.
  • The state of the art: Scala (2004-2006).
          Programming language: Scala.
          Additional reading material:
  • M. Odersky et al. An overview of the Scala programming language.
        Technical Report LAMP-REPORT-2006-001, Second Edition, 2006.
  • M. Odersky et al. A Tour of the Scala Programming Language.
        Programming Methods Laboratory, EPFL, 2007.
  • M. Odersky. Scala By Example.
        Programming Methods Laboratory, EPFL, 2008.
  • Books
  • Main:
  • M. Scott. Programming Language Pragmatics (2nd edition).
        Morgan Kaufmann, 2006.
  • J.C. Mitchell. Concepts in programming languages.
        Cambridge University Press, 2003.
  • T.W.Pratt and M.V.Zelkowitz. Programming Languages: Design and implementation (3rd edition).
        Prentice Hall, 1999.
  • Other:
  • R. L. Wexelblat (ed.). History of Programming Languages.
        ACM Monograph Series, 1981.
  • N. Metropolis, J. Howlett, G.-C. Rota (eds.). A History of Computing in the Twentieth Century: A Colletion of Essays.
        Academic Press, 1980.
  • T.J. Bergin and R. G. Gibson (eds.). History of programming languages - II.
        ACM Press, 1996.
  • Further reading material
  • P.J. Landin. The next 700 programming languages.
        Communications of the ACM, Volume 9, Issue 3, 1966.
  • D. D. Clark. The structuring of systems using upcalls.
        Proceedings of the tenth ACM Symposium on Operating Systems Principles, pages 171-180, 1985.
  • L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism.
        Computing Surveys, Vol 17 n. 4, pages 471-522, 1985.
  • P. Canning, W. Cook, W. Hill, W. Olthoff, J.C. Mitchell. F-bounded polymorphism for object-oriented programming.
        Proceedings of the Fourth International Conference on Functional Programming Languages and Computer Architecture, 1989.
  • R. P. Draves, B. N. Bershad, R. F. Rashid, and R. W. Dean. Using Continuations to Implement Thread Management and Communication in Operating Systems.
        Proceedings of the thirteenth ACM Symposium on Operating Systems Principles, pages 122-136, 1991.
  • M. P. Jones. Using Parameterized Signatures to Express Modular Structure.
        In Proceedings of the Twenty Third Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 1996.
  • M. Odersky, C. Zenger, and M. Zenger. Colored local type inference.
        ACM SIGPLAN Notices archive. Volume 36, Issue 3, pages 41-53, 2001.
  • R. Garcia, J. Jarvi, A. Lumsdaine, J. G. Siek, and J. Willcock. A comparative study of language support for generic programming.
        ACM SIGPLAN Notices, Proceedings of the OOPSLA'03 Conference, 2003.
  • A. Kennedy and C. Russo. Generalized Algebraic Datatypes and Object-Oriented Programming.
        Conference on Object-Oriented Programming Systems, Languages, and Applications, 2005.
  • N. Wirth. Good Ideas --- Through the Looking Glass.
        IEEE Computer, pages 56--68, 2006.
  • P. Hudak, J. Hughes, S. Peyton Jones, P. Wadler. A History of Haskell: being lazy with class.
        The Third ACM SIGPLAN History of Programming Languages Conference (HOPL-III) San Diego, California, June 9-10, 2007.
  • A. Kennedy. Lecture slides on Java (1996) and C# (2000), 2007.
  • Feedback
  • Please provide feedback through the online lecture course feedback form.