Programming Language Structure I
CS471
Software and Programming
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.
January 10, 2002 through May 2, 2002
Science Hall 113
TTh
2:35 to 3:50 pm.
CS370, CS371
Roger Hartley
rth@cs.nmsu.edu
Science Hall 123
By appointment only
646-1218
Dr. Hartley is Department Head of Computer
Science and has been teaching for 27 years, the
last 17 of which were at NMSU.
Emad Hussein, 646-6152. Science Hall room 149 (email emsaad@cs.nmsu.edu.)
To become familar with the major paradigms
among programming languages. To be able to
read and understand the major constructs of FORTRAN, Pascal, Algol, C, C++,
Java, Smalltalk,
Lisp, ML, and Prolog.
Required reading
Concepts of Programming Languages, Robert
Sebesta, Addison Wesley, 5th. Edition, 2001.
(4th. Edition OK), 0-201-75295-6
There will be a mid-term test and a final examination. Both exams will be closed-book. The final will cover material discussed in class since the mid-term. 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, at the instructor's discretion. The first day of
exam week is the last day for handing in work for credit.
[1] Introduction: models of computation,
real and virtual machines, taxonomy of languages. The
major languages.
[2] Description methodologies: syntax, semantics, pragmatics.
[3, 4] Elements of programming languages:
expressions, functions, declarations, values,
recursion, scope, types.
[5, 6] Subprograms: environments and stores, parameter passing.
[7] Implementing subprograms: activation
records, block structure, dynamic scoping. First test
on material from weeks 1-7.
[8] Encapsulation: ADTs, modules and information hiding, classes in C++. Java.
[9] Object-oriented languages: methods and messages, inheritance.
[10, 11] Functional programming: Scheme and Lisp, list processing, ML and type checking.
[12, 13] Logic programming: Prolog.
Relations and declarative programming, backtracking goal
evaluation.
[14, 15] Exceptions. Concurrency: semaphores, monitors, rendezvous in Ada.
[16] Review
[17] Final examination.
Policies regarding academic conduct are stated in the NMSU Student Handbook. Any violations of the code as stated in the handbook will result in a grade of F for the course in addition to any further sanctions imposed by the university.
Accomodations for disabilities that may interfere with your academic progress are handled through Services for Students with Disabilities (646-6840) in Garcia Annex, Room 102. Current documentation is required to receive services.