home search a-z help
University of Cambridge Computer Laboratory
Concepts in Programming Languages
Computer Laboratory > Course material 2006-07 > Concepts in Programming Languages

Concepts in Programming Languages
2006-07

Principal lecturer: Dr Marcelo Fiore
Taken by: Part IB, Part II (General), Diploma

Syllabus
Past exam questions

Lecture slides (lectures I-VII and lecture VIII)
  • Introduction and motivation.
          Additional reading material:
  • K. Zuse. Plankalkül.
  • 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) --- 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, data abstraction and modularity --- Concepts and constructs: SML Modules (1984-97).
          Introduction to SML Modules by C. Russo.
          Additional reading material:
  • A. Koenig. An anecdote about ML type inference.
        USENIX Symp. on Very High Level Languages, 1994.
  • L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism.
        Computing Surveys, Vol 17 n. 4, pages 471-522, 1985.
  • M. Tofte. Four Lectures on Standard ML.
        LFCS Report Series ECS-LFCS-89-73, 1989.
  • The state of the art: Java (1996) and C# (2000) by A. Kennedy.
          Additional reading material:
  • G. Bracha, M. Odersky, D. Stoutamire, and P. Wadler. Making the future safe for the past: Adding genericity to the Java programming language.
        Conference on Object-Oriented Programming Systems, Languages, and Applications, 1998.
  • A. Kennedy and D. Syme. Design and implementation of generics for the .NET Common Language.
        Conference on Programming Language Design and Implementation, 2001.
  • A. Kennedy and C. Russo. Generalized Algebraic Datatypes and Object-Oriented Programming.
        Conference on Object-Oriented Programming Systems, Languages, and Applications, 2005.
  • Books
  • Main:
  • 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.
  • 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.
  • 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.
  • 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.
  • Feedback
  • Please provide feedback through the online lecture course feedback form.