Computer Laboratory Home Page Search A-Z Directory Help
University of Cambridge Home Computer Laboratory
Computer Science Tripos Syllabus - Comparative Programming Languages
Computer Laboratory > Computer Science Tripos Syllabus - Comparative Programming Languages

Comparative Programming Languages next up previous contents
Next: Compiler Construction Up: Lent Term 2005: Part Previous: Lent Term 2005: Part   Contents

Comparative Programming Languages

Lecturer: Dr M. Richards

No. of lectures: 16


The aims of this course are to introduce the principles and constraints that affect the way programming languages are designed. Linguistic features of several languages will be explored and compared, so that both the mistakes and good ideas from the past can contribute to improved design and use of computer languages in the future.


  • Introduction. A brief history of programming languages. Comparing languages: programming paradigms, language features, execution styles.

  • Why study programming languages. History. Changing influences. What makes a good programming language, application domains.

  • Language standardisation. Language standards, examples from C and PL/I.

  • FORTRAN and COBOL. History, example.

  • ALGOL. History, examples, argument calling, trouble spots, Algol W, arguments, records.

  • BCPL. History, summary, examples, functions, memory model, objects, coroutines.

  • C. History and importance, example, types, operators, statements, declarations, casts, functions, arrays and pointers. Strings, space allocation, structures and unions.

  • Representation of trees. In ML, BCPL and C.

  • Prolog. Introduction to the main features of the Prolog Language. Syntax of the language, unification, several example programs. [4 lectures]

  • Object Oriented Languages. Simula-67 example, class hierarchy and inheritance, SIMULA primitives.

  • Smalltalk. History, syntax, classes, declaration, example showing the definition of new classes and methods.

  • C++. Introduction to some of the features of C++, design philosophy. Data hiding, data abstraction. Initialisation and cleanup. Parameterised types, iterators. Multiple inheritance.

  • Standards.


At the end of the course students should

  • be familiar with several language paradigms and how they can be effective in different areas of application

  • have a reasonable understanding of the compromises that have to be made in a standard specification of a language in relation to machine independence and efficiency

  • appreciate the similarities and differences between various approaches taken by object oriented languages

  • be sufficiently familiar with C and C++ to be able to read and understand programs written in these languages

Recommended books

Mitchell, J.C. (2003). Concepts in programming languages. Cambridge University Press.
Pratt, T.W. & Zelkowitz, M.V. (1996). Programming languages, design and implementation. Prentice-Hall (3rd ed.).
Appleby, D. & VandeKopple, J.J. (1997). Programming languages, paradigm and practice. McGraw-Hill (2nd ed.).
Stroustrup, B. (1994). The design and implementation of C++. Addison-Wesley.
Mössenböck, H. (1993). Object-oriented programming in Oberon-2. Springer-Verlag.
Antonakos, J.L. & Mansfield Jr., K.C. (1998). Reference guide to C and C++. Prentice-Hall.
Kernighan, B.W. & Ritchie, D.M. (1988). The C programming language. Prentice-Hall (2nd ed.).

next up previous contents
Next: Compiler Construction Up: Lent Term 2005: Part Previous: Lent Term 2005: Part   Contents
Christine Northeast
Wed Sep 8 11:57:14 BST 2004