Algoma University College
Computer Science 3127
Programming Languages
Fall 1996/97
(Wednesday: 7:00 - 9:45 pm)

Instructor: Dr. Pawan J. Lingras

Description:
This course is designed to introduce the student to the key concepts which underlie the design, implementation and run-time behaviour of modern programming languages.

Formal methods of programming language definition will be introduced and utilized throughout the course to clarify the difference between the syntax ("look" or grammar) of a language and its semantics (meaning or behaviour).

Run-time considerations such as dynamic storage allocation, parameter passing techniques, variable binding and control of recursion will be studied.

Comparative study of distinct paradigms of programming languages - imperative, functional and logical - will be used to give the student fresh perspectives on the tools all programmers take for granted - the languages themselves. This will lay a foundation for considering just what "all the fuss is" about object-oriented programming.

Programming examples in languages as diverse as Scheme, Prolog, FORTRAN, C, C++, Smalltalk, Java, and Pascal will provide the student with insight into the strengths and limitations of current programming tools.

Motivation
There is much more to programming language design than meets the eye. Designers are faced with different, often conflicting, objectives and purposes. Practice and theory are not always easy to match. Many theoretical issues remain unsolved. Many bright ideas have been tried. A few have succeeded so well that they have bred complacency.
Consider the following statement:

No computer program of any significant size and complexity has ever been delivered which was simultaneously on time, within budget, and correct.

To what extent is this deplorable situation the fault of our not yet having, or using, the right tools (languages) for the job? Where is the "Science" in Computer Science?

Brief Class Outline:
    READ		TOPIC
 1) Ch.1 & 10		Introduction and formal syntax definition
 2) Ch.2		Programming language elements
 3) Ch.3		structured programming
 4) Ch 4		Data representation
 5) Ch 5		Procedure Activation
 7) Ch 6		Data abstraction/encapsulation
 8) Ch 6		Inheritance and polymorphism
 9) Ch.7		Functional programming
10) Ch.8		Logic programming
Text:
Sethi, R. 1996. Programming Languages: Concepts & Constructs, Second Edition, Addison Wesley, Don Mills, Ontario.

Tentative Marking Scheme
Assignments 15
Research paper and presentation 15
Midterm (Oct. 23, 1996) 25
Quizzes (in class) 10
Final 40
________________________
Total 100