Course Information

INFO3420 Programming Languages

COURSE CODE:         INFO 3420

COURSE TITLE:         Programming Languages

CREDITS:                     4

LEVEL:                          3

PRE-REQUISITES:            INFO 2420 OR COMP 2500

COURSE DESCRIPTION:

The aim of this course is to provide a conceptual framework that will enable students to understand already-learned programming languages more deeply and to learn new languages effectively as they will require skills in adopting new programming languages. Students will gain an understanding of the fundamental concepts and design issues of programming languages and become familiar with the major programming paradigms.

COURSE RATIONALE:

Students will learn programming languages appropriate for each paradigm and understand the similarities and differences between the various paradigms.

CONTENT:

1. Introduction: concepts and paradigms, syntax, semantics and pragmatics. Language processors.

2. Values and types: primitive types, composite types, recursive types, type systems and expressions.

3. Variables and storage: simple variables, composite variables, copy semantics, reference semantics, lifetime, pointers, commands, expressions with side effects.

4. Bindings and scope: bindings and environments, scope, declarations and blocks.

5. Procedural abstraction: procedures and functions, parameters and arguments, copy and reference parameter mechanisms.

6. Data abstraction: program units, packages and encapsulation; abstract types; objects and classes.

7. Control flow: sequencers, jumps, escapes and exceptions.

8. Programming language paradigms – case studies illustrating the following paradigms:

imperative, object-oriented programming, functional, logic and scripting.

  • Language selection: criteria and evaluation.

LEARNING OUTCOMES:

At the end of this course, students should be able to:

  • Describe the various programming language paradigms
  • Write programs that use the different programming languages
  • Discuss the relative merits of using  different programming languages for a particular task

ASSESSMENT:

Method of Evaluation

Percentage of Grade

Restriction

Coursework

        3 Assignments (24%)

          (programming)

 

        1 1-hr Examination (16%)

 

 

40 %

 

Final Examination

     One 2-hours written paper

     (Covers entire course – all           

       lectures, readings and  

       tutorials.)

 

60%

Fail Theory Regulation

Students must get a passing grade on final examination to pass the course.

TEACHING STRATEGIES:

The course is delivered using a combination of lectures and case studies.

RESOURCES:

Tucker, A.E. and  R.B. Noonan. 2001.Programming Languages: Principles and Paradigms. New York: Mc Graw-Hill.

COURSE CALENDAR:

TIME PERIOD

TOPIC

WEEK 1

Introduction: concepts and paradigms, syntax, semantics and pragmatics. Language processors.

WEEK 2

Values and types: primitive types, composite types, recursive types, type systems and expressions

WEEK 3-4

Variables and storage: simple variables, composite variables, copy semantics, reference semantics, lifetime, pointers, commands, expressions with side effects.

Bindings and scope: bindings and environments, scope, declarations and blocks.

Assignment 1

WEEK 5-7

Procedural abstraction: procedures and functions, parameters and arguments, copy and reference parameter mechanisms.

Assignment 2

WEEK 8-9

Data abstraction: program units, packages and encapsulation; abstract types; objects and classes.

Exam

WEEK 10

Control flow: sequencers, jumps, escapes and exceptions.

Assignment 3

WEEK 11-12

Programming language paradigms – case studies illustrating the following paradigms: imperative, object-oriented programming, functional, logic and scripting.

Language selection: criteria and evaluation

WEEK 13

Revision