Syllabus
CSCI 6220
Topics in Programming Languages
Fall 2001

Class meeting 6:30-7:45pm TTh Austin 304
Instructor Karl Abrahamson
Office Austin 233
Office hours TTh 10:45-12:15 and 5:30-6:30pm or by appointment
Phone 328-1879
Email karl@cs.ecu.edu
Course web page www.cs.ecu.edu/~karl/6220/fall01/
My web page www.cs.ecu.edu/~karl/
Text Programming Languages: Concepts and Constructs by R. Sethi


Prerequisites

You should have completed a course in data structures and be familiar with at least one higher level programming language. Prior study of programming languages will be helpful but is not required.


Introduction

Programming languages are broadly broken into two categories, the imperative languages and the declarative languages.

Imperative languages include C, C++, Ada, Pascal, Basic, and many more. The defining feature of imperative language is that a program is based on commands (often called statements) that call for changing something, such as the value of a variable.

The defining feature of a declarative language is the absence of commands. Instead, a declarative program consists of a collection of facts. Examples of declarative languages are Standard ML, Haskell and Prolog.

Declarative languages have some advantages over imperative languages.

  1. Declarative programs are often easier to write than imperative programs, and consequently declarative programs tend to be less costly to develop and more reliable. Because of this, techniques of declarative programming are gradually finding their way into more traditional settings.

  2. The semantics (meaning) of declarative languages is much easier to study then the semantics of imperative languages. Even for imperative languages, the fundamental semantic concepts are rooted in a declarative programming framework.

  3. Declarative programs encourage the programmer to think in more conceptual, or abstract terms, and the best thought-out abstraction mechanisms are present in declarative languages. Learning to program in a declarative style helps in understanding abstraction, even as it is used in an imperative setting. An understanding of declarative programming helps immensely in understanding all programming languages.

This course will cover the fundamentals of declarative programming. We will discuss the following topics.

  1. Functional programming.

  2. The formal underpinnings of functional programmings, including the lambda-calculus.

  3. Logic programming.

  4. The formal underpinnings of logic programming, including first-order logic.

The student will learn not only the fundamental concepts, but also will learn to write working programs.


Grading

Grading will be on the basis of programming assignments, homework, a small project, two midterm exams and a final exam.


Weather emergencies

In the event of a weather emergency, information about ECU can be accessed through the following sources: ECU emergency notices http://www.ecu.edu/alert ECU emergency information hotline: 252-328-0062


Students with disabilities

East Carolina University seeks to fully comply with the Americans with Disabilities Act (ADA). Students requesting accommodations based on a covered disability must go to the Department for Disability Support Services, located in Brewster A-114, to verify the disability before any accommodations can occur. The telephone number is 252-328-6799.