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.
August 19, 2002 through December 6, 2002
Science Hall 113
MWF
10:30 to 11:20am.
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.
There is no TA assigned to this course.
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.