 |
Contents
- Language Families PDF
file
- Defining Program Syntax PDF
file
- Where Syntax Meets Semantics
- Language Systems
- A First Look at ML
- Types
- Polymorphism
- A Second Look At ML
- Memory Locations For Variables
- A Fourth Look At ML
- A First Look At Java
- Object-Oriented Programming
- A Second Look At Java
- Parameters
- A Third Look At Java
- Memory Management
- A First Look At Prolog
- A Second Look At Prolog
- Cost Models
- A Third Look At Prolog
- Formal Semantics
- A History of Programming Languages
|
Overview
Typical undergraduate CS/CE majors have
a practical orientation: they study computing because they like
programming and are good at it. This book has strong appeal to
this core student group. There is more than enough material for
a semester-long course. The level of presentation does not require
a knowledge of computer architecture, operating systems, formal
languages and automata theory, mathematical logic, or inductive
proof techniques. A course using this book need not be placed
at the end of a long chain of prerequisites. This makes it more
useful in a wider variety of CS/CE curricula.
The challenge for a course in programming
language concepts is to help practical students understand programming
languages at an unaccustomed level of abstraction. To help meet
this challenge, the book includes enough hands-on programming
exercises and examples to motivate students whose primary interest
in computing is practical. It does not assume the reader has
a high level of mathematical maturity. It is designed to lead
students to think about abstract programming language concepts,
starting from a foundation of simple programming exercises.
The book has two distinct kinds of chapters:
practical and philosophical. The practical chapters are self-contained
primers in three programming languages. It is important for students
to experience programming in several different language families.
Therefore there are introductions to programming ML, Java and
Prolog. The philosophical chapters present the theoretical side:
the underlying principles of programming languages. They are
interleaved with the practical chapters in an order that allows
ideas to be illustrated using examples in the newly learned languages,
and allows theoretical topics to be covered when their relevance
to programming practice will be most evident.
|