MENU
PRINCIPLES OF PROGRAMMING LANGUAGES (JUL - NOV 2023) MAIN MENU

About the Course


Programming languages are the means by which humans solve problems on computers. They express algorithms in a sufficiently precise manner for execution on computers.

Humans use a variety of strategies to solve problems that range from search to logic. Programming languages too are designed to reflect such strategies. For example, today's popular languages such as Java, C++ and Python give a sequence of instructions which together solve a problem; LISP uses a functional approach while Prolog is designed for logic.

In this course, students learn the general concepts that are common to all programming languages so that they learn the underlying abstractions and problem-solving strategies. Further, they learn to understand and appreciate the salient features of many programming languages. They learn how to make a critical choice of the level of abstraction needed to solve a problem and pick a suitable language. The assignments will use languages familiar to a typical CS UG student for illustration and self-exploration.

Prerequisites:
Introductory programming course, Object-oriented programming/design

Syllabus


Unit Weeks
I. Introduction
  • Why so many programming languages
  • What is programming?
  • How do humans solve problems?
  • A wee bit of history
1 - 2
II. Programming Life Cycle
  • Problem definition
  • Generalise and specialise
  • Find a suitable algorithm
  • Design data structures and functions
  • Write and execute code
  • Test and debug
  • Analyse performance
  • Write user and technical documents
2 - 4

Reading Material
How to Program

III. What makes successful programming langauge?
  • Readability and efficiency
  • Suitability and naturalness
  • Ease in compiling and debugging
  • Availability and access
  • Some case studies: Fortran, LISP, C, C++, Java, Python
4 - 5
IV. Design Features
  • Binding times
  • Operator precedence
  • Control flow between statements
  • Block structure: named and unnamed blocks
  • Subprogram control and parameter passing
  • Static and runtime structures
5 - 13
V. Scope and Runtime Environments
  • Associations and referencing operations
  • Local, non-local and global environments
  • Functional, objected oriented and logical programs
  • Garbage collection
13 - 18

Assignments


  1. Minor 1 (15 September 2023)
  2. Minor 2 (Due: 10 November 2023)
  3. Minor 3 (Last week of November)
School of Computer and Information Sciences