A study of three programming paradigms and their associated languages: the functional paradigm with Scheme, the logical/declarative paradigm with Prolog, and the concurrent processing paradigm with Java.
The objective of this course is to learn three major programming models that complement the procedural and object-oriented models:
The functional paradigm
The declarative/logic paradigm
The concurrent paradigm Each of these models is based on a body of theory and each can be implemented in various programming languages—in this course Scheme, Prolog, and Java respectively. Although this course introduces the theoretical basis of each model, the emphasis is on the practice of programming.
A paradigm is a pattern of thinking that is frequently difficult to change. For example, the procedural and object-oriented models are based on the concept of state, as exemplified by the ubiquitous assignment statement. It may be difficult to imagine programming without an assignment statement, but the pure functional and declarative/logic models have no assignment statement. In both of these models, you will have to make a paradigm shift to thinking without assignment statements as you contemplate various programming solutions. Similarly, the procedural model is concerned with a single thread of control. It will take a paradigm shift to think about several processors executing several threads of control concurrently to solve a single problem.
In this course, we will immerse ourselves completely in each of the three paradigms. That is, rather than discuss the ideas abstractly and concurrently we will attempt to experience them sequentially through programming. The course is thus divided into three distinct parts, one for each of the programming models in which we will program with each of the three programming languages. The goal is not to make you an expert programmer in any of the three languages. Each language has far too many advanced features and nuances to be learned in one third of a single semester. However, you should be equipped from this introduction to extend your expertise in each model.