Computer Laboratory

Course material 2010–11

Concepts in Programming Languages

Principal lecturer: Dr Marcelo Fiore
Taken by: Part IB
Past exam questions: Concepts in Programming Languages, Comparative Programming Languages

Revision guide

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 on-line lecture course feedback form.