King Fahd University of Petroleum and Minerals

Department of Information and Computer Science

ICS 313-02: Fundamentals of Programming Languages (3-0-3)

First Semester 1999-2000 (991)

Instructor:

Dr. Talal Maghrabi

Office:

22-308

Phone:

4216

E-mail:

maghrabi@kfupm.edu.sa

Homepage: http://www.ccse.kfupm.edu.sa/~maghrabi/course.htm

Class Time:

10:00 - 10:50 A.M. S. M. W.

Room:

24-137

Section:

3

Office Hours:

9:00-9:50 A.M.  S. M. W. or by appointment by calling 3900.

Catalog Description: Concepts of Programming Languages: Syntax and semantics, Data types, control structures, subprograms, exception handling, run-time storage management. Programming paradigms: Imperative, functional, logical, object-oriented and concurrent

Course Objectives: The objectives of this course are:

  1. [Concepts & Design Principles]
  2. To introduce the basic concepts and design principles of programming languages

  3. [Programming Language Paradigms]
  4. To expose the students to four major programming language paradigms and their features

  5. [Syntax and Sematic Description Techniques]
  6. To enable the precise understanding of programming language syntax and semantics through the study of different widely-used syntax and semantic description techniques.

  7. [Practice with Programming in Important Languages]

          To allow the student obtain a first hand experience in using contemporary languages through programming
          assignments.

Textbook: Concepts of Programming Languages, By. R. Sebesta, 1996, 3rd Ed.

Additional References:

  1. See the file bibliography.rtf from the programming languages course page. Appropriate articles will be referred from it as the course progresses.
  2. Programming Languages Resource Reference Material as available from the instructor’s home page and the numerous documents and links to sources contained therein.
  3. Java Reference Material as available from the instructor’s home page and the numerous links to sources contained therein.

Grading Policy:

Attendance & Participation

05 %

Quizzes (individual; best 3 of 4)

15 %

Homework Assignments (mainly non-Programming)

10 %

Two Programming Projects with Reports

20 %

Major Exam I (5th October 1999)

15 %

Major Exam II (13th November 1999)

10 %

Final Exam (Comprehensive)

25 %

Course Contents:

Material

Topic

# of Lectures

(Tentative)

Chapters 1 & 2

Introduction

Motivation for studying programming languages.

Evolution of the major programming languages.

2

Chapter 3

Description of Syntax and Semantics

Formal Methods of Describing Syntax.

Major Approaches for the Description of Semantics of Programming Languages.

3

Homework Assignment # 1

Chapters 4 – 9

Basic Concepts and The Imperative Paradigm

Naming and Binding: Names, Bindings, Type Checking, and Scopes

Data Types

Expressions and the Assignment Statement

Statement Level Control Structures

Subprograms

Implementing Subprograms

9+1

Major Language: C

Quiz # 1

Homework Assignment # 1

Major Exam # 1

Chapters 10, 15

The Object-Oriented Paradigm

Abstract Data Types

Inheritance and Polymorphism

Message Passing

10

Major Language: Java

Quiz # 2

Programming Assignment # 1

Chapters 12, 13

The Functional Paradigm

Functions

Composition

Functionals

Exception Handling

9

Major Language:< to be decided>

Quiz # 3

Major Exam # 2

Programming Assignment # 2

Chapter 14

The Logic Programming Paradigm

Predicate Calculus

Theorem Proving

Horn Clauses and Unification

8

Quiz # 4

Homework Assignment # 3

Chapter 11

Concurrency

Threads

Statement level versus Subprogram level concurrency

1

Additional

Additional Topics

Persistence.

Constraint, Scripting and Pattern Programming Languages.

1+1

 

Additional Notes

Tips to the Student:

In order to do well in this course the following points are to be noted and considered in your planning: