Computer Science 170
Analysis Of Programming Languages
Spring 2003, Clark University
D Joyce
This course page is obsolete. I'll prepare another next time I teach the course.
Office Hours
793-7421
TTh 9:30-10:20, 1:30-2:30
also by appointment
If you have any questions about the course,
feel free to stop by my office, Carlson Hall, room 125, or call me at 793-7421.
Catalog copy
Deals with the issues of the design and implementation of programming languages from both the syntactic and the semantic point of view. Topics include: the representation of rules of syntax, using
context-free grammars, parsing, semantic constructs, control structures, implementation of procedures and parameters, implementation of recursion, and an introduction to the organization of
compilers. A typical group term project may be to design and implement a compiler or interpreter for the actual implementation of some language. Prerequisites: CSci 102 and Math 114. Offered every
year
Text
The text for the course is Programming Languages: concepts & constructs, second edition, by Ravi Sethi.
About this course
This class will cover various topics in the design and implementation of programming languages. In particular, we will discuss what is involved in specifying the syntax and semantics of programming
languages, look at how languages are compiled or are interpreted, and discuss some paradigms on which languages can be based. One goal is to help you become more efficient and effective programmers
by building an understanding of how programs become code, by broadening the students' base of program ming constructs, and by developing skills to rapidly learn or design new languages that might be
suitable for particular tasks. Also, scattered throughout the course, you'll learn a bit about the history of programming languges.
After an introduction, the course is divided into five parts. The first part, on imperative programming, discusses the kind of language you already know; C, Pascal, and FORTRAN are all imperative
programming languages. The second discusses object-oriented languages, and you already know at least one of these; C++ and Java are OOLs. Next, functional programming languages, which some of you
may have seen in our AI course; Lisp is one, another is Smalltalk. Then miscelaneous languages, and you may have seen some of that, too; Prolog is a "logic programming" language; and you may have
done some concurrent programming in Java. The last part is on descriptions of languages, something we'll have seen throughout the course, but go into greater depth then.
Thus, you're going into this course already knowing parts of it. And those parts which may be new will connect into courses you'll take later. This course really connects to so many of the other
courses you've taken or are yet to seeprogramming courses, AI, compilers, operating systems, automata theory.
The relative emphsis on the parts of the course depend in large part on the student population. We changed to Java in the introductory programming courses a couple of years ago, and that makes
this course easier since Java is not only object-oriented, but allows you to easily write programs with a nice graphics interface, include threads for concurrent programming, and write network
applications. Not everyone, however will know Java, but they'll know C++ instead. The two languages are similar in many respects, and in this course we'll compare them frequently. You'll use your
knowledge of one to learn the other well. You'll also see languages of the other types mentioned above and write some programs in them.
Assignments and Tests
You will do several assignments during the semester, take an in-class midterm,
and take a 2-hour final during finals week. Homework will generally be
given every week or two and will be a mixture of written assignments and
programming assignments.
You're course grade will be determined by your homework grades (about 30%),
midterm grade (about 30%), and final grade (about 40%).
Concerning Late Work
Your best course is to hand in work when it is due (reasonable excuses such as illness are acceptable provided they can be documented). All graded assignments are due at the beginning of the class
period on the due date. Homework will be accepted after that time with a penalty (10% off for the first class, 20% for each subsequent class). If you find you just cannot finish an assignment on
time, please hand in whatever you have done anyway. I would rather see evidence that you are trying than nothing at all. If you are having trouble with any assignment, please do not hesitate to
discuss it with me, either in person or via e-mail.
Related course pages
This page is located on the web at http://aleph0.clarku.edu/~djoyce/cs170
David E. Joyce,
djoyce@clarku.edu