University of Information Technology

Programming Languages Principles

Course Description

A programming language is a programmer’s principal interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. The topic covered will include Abstract Machines, How to Describe a Programming Language, Names and The Environment, Memory Management, Control Structure, Control Abstraction and Structuring Data.

This course aims two different programming styles, imperative and functional programming. Its primary intention is to develop key programming and problem-solving skills but it has a secondary aim, which is to build students’ confidence in their ability to take on and learn new programming languages within a short space of time.

Intended Learning Outcomes (ILO)

After taking this course, student will be able to demonstrate their knowledge and understanding about principles of programming languages. Especially, students will be able to:

  • Describe the fundamental concepts of abstract machine
  • Explain the syntactic and semantic analysis of programing languages
  • Specify the syntax of programming languages using context free grammars
  • Draw a parse tree for a sentence in a language, given its grammar
  • Derive a sentence in a language, given its grammar
  • Demonstrate that a specific grammar is ambiguous
  • Write simple lexical and syntax analyzers
  • Describe subprogram call/return semantics and its stack implementation
  • Differentiate between static and dynamic scope
  • Differentiate between static and dynamic binding
  • List and describe the major parameter passing mechanisms for subprogram calls
  • Analyze the scopes of variables, control structure, control abstraction
  • Distinguish among various constructions and mechanisms for structuring data

Text and References Books


  1. Programming Languages: Principles and Paradigms, by Maurizio Gabbrielli, Simone Martini, Undergraduate Topics in Computer Science, Springer; 2010 edition


  1. Principles of Programming Languages: Design, Evaluation, and Implementation, by Bruce J. MacLennan, Oxford University Press, USA; 3 edition (March 25, 1999)
  2. Programming Languages: Principles and Practices by Kenneth C. Louden , Lambert, Cengage Learning; 3 edition (January 26, 2011)

Assessment System

Evaluation Marks Percentage
Class Participation 10 Marks 10%
Tutorial 10 Marks 10%
Assignments/Discussion/Presentation 20 Marks 20%
Final Examination 60 Marks 60%