CS471 Programming Language Structure I
Fall, 1997
Instructor
Roger Hartley, SH 148, telephone 646-1218
Office Hours: Tuesdays 10:00 am - 12:00 noon; Fridays 2:00 pm - 4:00 pm; also by appointment.
Email:
rth@cs.nmsu.eduInternet: http://www.cs.nmsu.edu/~rth/cs
Where and when
Room: SH113 Time: MWF 10:30 - 11:20 am
Textbook:
Concepts of Programming Languages. Robert Sebesta, Addison Wesley, 4th. Edition, 1998.
Course outline
This course presents an analysis of computer languages from a conceptual point of view. There are relatively few concepts which all computer languages have and most have them in common. The differences among them are mostly in their syntax and their model of computation, or their programming methodology. We will examine the basic concepts as they arise in a variety of different languages, and discuss how the
implementation of the concepts affect their usage as programming tools. When a major language is discussed, a language system that works in our domain will be used to help the discussion.
Syllabus, by week number
[1] Introduction: models of computation, real and virtual machines, taxonomy of languages
[2] Description methodologies: syntax, semantics, pragmatics. BNF and Extended BNF.
[3, 4] Elements of programming languages: expressions, functions, declarations, values, recursion, scope, types.
[5, 6] Imperative languages: the assignment statement. Algol60, Pascal, Modula 2, C, Ada. Structured programming. Control flow. Pointers.
[7] Procedures: environments and stores, parameter passing.
[8] First test. More on procedures: activation records, block structure, dynamic allocation.
[9] Encapsulation: modules and information hiding, classes in C++. Java.
[10] Inheritance: Smalltalk 80, methods and messages.
[11, 12] Functional programming: Scheme and Lisp, list processing, ML and type checking.
[12, 13, 14] Logic programming: Prolog. Relations and declarative programming, backtracking goal evaluation.
[15] Concurrency: parallel hardware, synchronization, deadlock, rendezvous in Ada.
[15, 16] Advanced topics: abstract and concrete syntax, operational semantics through an definitional interpreter, lambda calculus for types.
[17] Final examination.
Calendar
August 1998
S |
M |
Tu |
W |
Th |
F |
S |
|
1 |
|||||||
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
16 |
17 |
18 |
19 |
20 |
21 |
22 |
19th: First day of classes |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
28th: Last day to add |
30 |
31 |
September 1998
S |
M |
Tu |
W |
Th |
F |
S |
|
1 |
2 |
3 |
4 |
5 |
4th: Last day to drop |
||
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
13 |
14 |
15 |
16 |
17 |
18 |
19 |
|
20 |
21 |
22 |
23 |
24 |
25 |
26 |
|
27 |
28 |
29 |
30 |
October 1998
S |
M |
Tu |
W |
Th |
F |
S |
|
1 |
2 |
3 |
|||||
4 |
5 |
6 |
7 |
8 |
9 |
10 |
9th: Mid-term exam. |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
14th: Last day to withdraw |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
25 |
26 |
27 |
28 |
29 |
30 |
31 |
November 1998
S |
M |
Tu |
W |
Th |
F |
S |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
|
22 |
23 |
24 |
25 |
26 |
27 |
28 |
23rd: Moratorium |
29 |
30 |
December 1998
S |
M |
Tu |
W |
Th |
F |
S |
|
1 |
2 |
3 |
4 |
5 |
4th: last class |
||
6 |
7 |
8 |
9 |
10 |
11 |
12 |
7th: All assignments due, 9th: Final exam. 10:30 am |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
|
20 |
21 |
22 |
23 |
24 |
25 |
26 |
|
27 |
28 |
29 |
30 |
31 |
Assessment
There will be a mid-term test and a final comprehensive examination. There will also be a number of homework assignments (four or five) taken from the exercises in the textbook, or from other material. The proportion of credit is as follows:
Test 1: 20%
Final: 30%
Homework: 50%
My grading is always flexible, but justice will also be done! The penalty for late work is that it receives a maximum C grade, but there will be two cut-off dates. A moratorium date is included in the calendar after which, any work that is due but not handed in will receive a zero. The first day of exam week is the last day for handing in work for credit.