CS 341 Programming Languages
Fall 2001

Official Course Description. This course examines the major paradigms underlying modern programming languages. The course currently focuses on object-oriented and logic programming. The rationale of the paradigms is discussed along with typical programming idioms used with them. Programming exercises are used to illustrate concepts--the course does not aim to make students proficient programmers in all the language that will be studied.

This semester, we will use Java and C++ to illustrate object-oriented concepts. You'll be free to use either language for the programming assignments. The language Prolog will be used to illustrate logic programming.

Prerequisites. CS142 or consent of instructor.

Location and Times. Snell 213, MWF 2:00-3:00.

Instructor. Alexis Maciel. Science Center 379, 268-2385, alexis@clarkson.edu.

Office Hours. Monday to Friday 3:00-4:00, and by appointment.

Required Texts.

Course Objectives.

  1. To give you a solid introduction to logic programming.

  2. To deepen your understanding of object-oriented programming.
Demonstrable outcomes. By the end of the semester,

  1. You will be able to write small Prolog programs.

  2. You will have a good understanding of how the Prolog interpreter works.

  3. You will be able to design and implement object-oriented programs of a moderate size.

  4. You will understand the main object-oriented concepts, their advantages and disadvantages, and how they can be realized differently in different languages.

Topics to be covered. Logic programming: basic Prolog syntax, unification and variable instantiation, backtracking, input/output, file handling, arithmetic, lists, conditional execution, cuts, repetition through backtracking, tail recursion, trees, and sorting. Object-oriented programming: object-oriented design, inheritance, polymorphism, software reuse, and, if time permits, design patterns.

Grading. Final grades in the course will be computed according to the following scheme:

Logic OOP
Homework assignments 5% 12%
Quizzes 15% 8%
Test 1 15%
Test 2 15%
Test 3 10%
Final exam 20%

The average grade on Tests 1 and 2 will replace any lower grade on a logic programming quiz. The average grade on Test 3 and the final exam will replace any lower grade on an object-oriented programming quiz. Tentative dates for the tests: September 26, October 24 and November 16. All students are required to write the final exam (no A or B exemptions).

Policy for missed work. There will be no make-up assignments or quizzes. Late assignments may be accepted if a good excuse is provided and if arrangements are made at a reasonable time, in advance, if possible. Make-up tests can be arranged under the same conditions. Other special arrangements can be made for students forced to miss more than a few days of class.