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 see–programming 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