Principles of Programming Languages

Contents:

We will examine the ideas and concepts that are used and seen in programming languages. In this it is NOT important to us how a feature is implemented, but only how to *use* a language idea/paradigm.

We will examine both current and past programming language concepts and approach the lecture by catagorization over ideas and with lots of languages to examplify the ideas.

Sample language concepts we will examine include: logic, functional, fuzzy logic, statistical, imperative, object-oriented, specification/modeling, annotational dialects, access-oriented, etc, etc, etc. Sample languages that will will look at: Occam, Haskel, Ada, Chuck, C, Spec#, Pascal, Modula, Basic, NuSMV, Sisal, Promela, Python, Icon, sh, etc, etc, etc.

Rationale 1: it turns out that there is no single programming language 'to rule them all'. For each problem domain, there is a programming language that is best suited.

Rationale 2: many applications currently written use multiple interacting programming languages.

Rationale 3: language and thought are tightly interwoven. Using/thinking in another language might give you new insights in how problems can be solved. This course may give you some new views.

Prerequisite: knowledge/experience with atleast one programming language.

Exercises

We write a series of small programs in different programming languages, each program suited to the language to implement it in. NOTE: the list below is preliminary. Languages may change and I may add a 5th exercise.
Exercise 1 ueb01.pdf
Exercise 2 ueb02.pdf
Exercise 3 ueb03.pdf
Exercise 4 ueb04.pdf gauss.tar.gz
watermark seal