CS 3411

Programming Language Concepts

Winter 1998

Instructor: Richard LeBlanc

Suite 150, College of Computing
E-mail: rich@cc.gatech.edu
Phone: 894-2592
 
TA: Brian McNamara (lorgon@cc)
Office hrs T/Th 2-3:30, 154 CCB

Catalog Description:

3-0-3. Prerequisites: CS 2360, CS 2390, and CS 2430.
A study of the history, conceptual basis, and fundamental constructs of high-level programming languages and models.
This a 3000-level course, Programming Language Concepts is offered primarily as a core requirement for undergraduates majoring in Computer Science. Other students with appropriate backgrounds in programming languages (described below) are welcomed.

Programming languages have been an important area of study in computer science for many years. Although most programming is done in a relatively small number of languages, many very important software development concepts and other key ideas in computer science have been incorporated into programming languages over the last 30 years. The primary goal of this course is to enable you to develop a well-organized conceptual understanding of programming languages, building on your prior concrete experience with several diverse languages.

Teaching/Learning Goals for the Course

I expect you to have the following knowledge and skills as prerequisites to this course:
  1. ability to understand and write algorithms in a programming language-independent form;
  2. ability to develop substantial programs in Pascal and/or C;
  3. experience with object-oriented programming in a language such as Smalltalk;
  4. experience with functional programming in a language such as Lisp.
The primary objectives of this course are for you to develop the following abilities:
  1. to learn new languages more easily and quickly;
  2. to evaluate programming languages with respect to their suitability for particular applications;
  3. to recognize language design choices;
  4. to describe language features within a conceptual framework;
  5. to understand the relationship between language features and implementation requirement;
  6. to write and debug programs in C++ and Prolog.

Readings and Lecture Schedule

Required Text: Programming Languages Design and Implementation, 3rd Edition, Terrence Pratt and Marvin Zelkowitz (Prentice-Hall, 1996).

You are expected to have a copy of the text and read all assigned material. Any changes in the readings listed below will be announced in class.

Following is an approximate lecture schedule; changes are quite possible, depending on how talkative I am about various topics and how inquisitive you are. (Please ask lots of questions -- it's much more fun than me just standing there talking!)

Lecture Schedule:
 
Class Date Topic Readings
Jan 7 Introduction -- studying programming languages Chapter 1
Jan 9 History of programming languages Chapter 2
Jan 12 More history; Language design issues Chapter 2
Jan 14 Translation: specifying and analyzing syntax Chapter 3
Jan 16 Translation: specifying and analyzing syntax Chapter 3
Jan 19 Holiday -- no class
Jan 21 Translation: specifying and implementing semantics Chapter 3
Jan 23 Logic programming handout
Jan 26 Logic programming in Prolog Chapter 14
Jan 28 Logic programming in Prolog
Jan 30 Type concepts; elementary data types and variables Chapter 4.1-2
Feb 2 Midterm Exam
Feb 4 Structured data types Chapter 4.3
Feb 6 Abstract data types snd storage management Chapter 5
Feb 9 Abstract data types snd storage management Chapter 5
Feb 11 Expressions and sequence control Chapter 6
Feb 13 Expressions and sequence control Chapter 6
Feb 16 Subprograms, parameters, and their implementation Chapter 7
Feb 18 Subprograms, parameters, and their implementation Chapter 7
Feb 20 C++
Feb 23 C++
Feb 25 C++
Feb 27 C++
Mar 2 C++
Mar 4 Java
Mar 6 Exception handling Chapter 9.1
Mar 9 Concurrency and parallel programming Chapter 9.2
Mar 11

Mar 13Ý Review

Grading

Examinations

There will be two exams, a midterm and the final. Most exam questions will reflect the material covered in lectures, the readings and homework. They will consist mostly of short answer questions, with a few longer essay questions and a little code writing or interpretation.

Assignments

There will be two programming assignments required during the quarter, one in Prolog and one in C++. Each will be worth 10% of the final grade. Programs will be graded on a 100 point basis, with 95 being the grade for a plain functional programs that meets the requirements of the problem statement. The other 5 points may be awarded for an especially outstanding job, such as including extensive error-checking, additional features, and so forth. Programs should be written in a readable coding style with descriptive variable names and informative comments.

Programs are to be turned in electronically (details to be provided later). To be on time, the electronic submission must be done by 11:59pm of the due date. Programs will be accepted up to three days late, with a penalty of 10 points for each day. On-time submissions are strongly encouraged, but getting the programs working is obviously important.
In addition to the programs, there will be five written homework assignments. They will involve questions pertinent to material covered in class and in the readings. They will be assigned in class a due at the beginning of class on their due dates. Each will be worth 5% of your grade.

Grading Summary
Component
Non-graduating
Graduating
Five HWs
25%
35%
Two programs
20%
30%
Midterm exam
20%
35%
Final exam
35%
*

* Graduating seniors will have an additional homework assignment due during the last week of class that may result in modification of the grade computed by the formula given above.

Finally, incompletes will be given only in truly exceptionål circumst`nces, not simply beåause you h`ve not managed to geå the work `one. 


Lecture Notes

Click here for class lecture notes

Homework Assignments

  • Homework assignment #1
  • Homework assignment #2
  • Homework assignment #3
  • Homework assignment #4 (Optional)

  • Programming Assignments

    Program 1 - Prolog
    Program 2 - C++

    Groups for Program 2


    Additional Documents

    You will need GhostView or similar software to view these Postscript documents. You also should be able to print most Postscript documents to a Postscript printer.