Syllabus
CSCI 6220
Topics in Programming Languages
Fall 1999
Instructor: | Karl Abrahamson |
Office: | Austin 233 |
Office hours: | M-F9:35--10:35 |
Phone: | 328-1879 |
Email: | karl@cs.ecu.edu |
Course web page: | www.cs.ecu.edu/~karl/6220/fall99/ |
Emergency Numbers
The following web pages and phone number are
available for emergency information.
-
severe weather
-
http://www.ecu.edu/oehs/emergency/SEVERE.HTM
-
university emergency notices (included closings)
-
http://www.ecu.edu/services/weatherpage.html
-
emergency information hotline
- 252-328-0062
Prerequisites
You should have had a course in data structures and be familiar
with at least one procedural programming language, such as C, C++ or Pascal.
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.
- Declarative programs tend to be 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.
- 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.
- 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.
- Functional programming.
- The formal underpinnings of functional programmings, including
the lambda-calculus.
- Logic programming.
- 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 and
two exams.
Astarte
One of the languages that we will use is Astarte. A
manual is available at
http://www.cs.ecu.edu/astarte.