CS471 Programming Language Structure I

Fall, 1997

Instructor

Roger Hartley, SH 148, telephone 646-1218

Office Hours: Mondays, Tuesdays, Wednesdays 10:00 am - 12:00 noon; also by appointment.

Email: rth@cs.nmsu.edu

Internet: http://www.cs.nmsu.edu/~rth/cs

Where and when

Room: SH113 Time: TTh 1:10 - 2:25 pm

Textbook:

Programming Languages, Concepts and Structures. Ravi Sethi, Addison Wesley, 2nd. Edition, 1996.

Course outline

This course presents a survey 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

Sun

Mon

Tue

Wed

Thu

Fri

Sat

 

 

 

 

 

 

1

2

 

3

4

5

6

7

8

9

 

10

11

12

13

14

15

16

 

17

18

19

20

21

22

23

20th : classes start

24

25

26

27

28

29

30

20th : last day to add

31

 

 

 

 

 

 

 

 

September

Sun

Mon

Tue

Wed

Thu

Fri

Sat

 

 

1

2

3

4

5

6

1st : Labor day

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

Sun

Mon

Tue

Wed

Thu

Fri

Sat

 

 

 

 

1

2

3

4

 

5

6

7

8

9

10

11

10th : first exam.

12

13

14

15

16

17

18

15th : last day to drop

19

20

21

22

23

24

25

 

26

27

28

29

30

31

 

 

 

November

Sun

Mon

Tue

Wed

Thu

Fri

Sat

 

 

 

 

 

 

 

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

29

26th to 28th : thanksgiving holiday

30

 

 

 

 

 

 

 

 

December

Sun

Mon

Tue

Wed

Thu

Fri

Sat

 

 

1

2

3

4

5

6

5th : Last day of classes

7

8

9

10

11

12

13

Exam week, 12th : Last day

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, which may be take-home. 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: 40%

Homework: 40%

 

My grading is always flexible, but justice will also be done! The penalty for late work is that it receives a maximum B grade for up to one week late and a maximum C grade after that.