CS 3411

Programming Language Concepts

Fall 1998



Contact Info

Instructor  Phil Hutto  pwh@cc.gatech.edu 119 CCB  T/Th 3-4
TA  Brian McNamara  lorgon@cc.gatech.edu 148A CCB MWF 1-2
TA  Dan Singhal  death@cc.gatech.edu   MWF 11-12
TA  Shanda Harper  shanda@cc.gatech.edu   MWF 2-3

The TAs will hold office hours in the common area on the first floor of the College of Computing Building (CCB). Look for us at the tables/benches, or in one of the nearby labs.

Lecture meets T/Th 1:30-3pm in IC 205. The class newsgroup is git.cc.class.3411; you are required to be aware of any information posted there by the instructor or TA.


About the course

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

You are expected to have the following knowledge and skills as prerequisites to this course: The primary objectives of this course are for you to develop the following abilities:

Grading

Component Normal Weighting Graduating Seniors
Homeworks (5) 25% 35%
Programs (2) 20% 30%
Midterm 20% 35%
Final 35% N/A

Examinations

There will be two exams: a midterm and the final. Most exam questions will reflect the material covered in lectures, the readings and the 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++. 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). 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 and due at the beginning of class on their due dates.

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.


Assignments

Homework assignments must be turned in at the beginning of class (hardcopy). Please look here for information about the format for homework assignments. Programming assignments will be turned in online. Look here for more info about assignment submission.

Lecture schedule and readings

The class textbook is Programming Languages Design and Implementation, 3rd Edition, by 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.

The lecture schedule is tentative and subject to change.
Date Reading Topic Other Lecture Notes
Th Sept 24  Chapters 1-2 Programming Language Landscape     
Tu Sept 29  handout: Sebesta Ch 2 Brief History of Language Design    
Th Oct 1  Chapter 3 Language Translation - Syntax (pdf)    
Tu Oct 6  Chapter 3 Language Translation - Semantics (pdf)    
Th Oct 8  Chapter 14  Prolog -- Logical Basis (pdf)    
Tu Oct 13  Chapter 14  Prolog -- Getting Things Done (pdf)    
Th Oct 15  Chapter 14  Prolog -- Adv Techniques/Difficulties (pdf)    
Tu Oct 20  Chapter 4 Types 1 (pdf)
Types 2 (pdf)
   
Th Oct 22    MIDTERM    
Tu Oct 27  Chapter 5 Structured Types (pdf)    
Th Oct 29  Chapter 5 Encapsulation
Abstract Data Types (pdf)
ADT Examples (pdf) 
   
F Oct 30     DROP DAY  
Tu Nov 3  Chapter 6  Expressions, Assignment (pdf)    
Th Nov 5  Chapter 6 Control Flow (pdf)    
Tu Nov 10  Chapter 7 Procedures (pdf)    
Th Nov 12  Chapter 7 Procedures    
Tu Nov 17    C++ Notes 1     
Th Nov 19    C++ Notes 2     
Tu Nov 24    C++ Notes 3 
C++ Notes 4 
   
Th Nov 26      HOLIDAY  
Tu Dec 1    Java    
Th Dec 3    Exceptions, Concurrency    
F Dec 11    FINAL EXAM  11:30-2:20   


Other materials

You can run prolog from either acme or the CoC machines by typing prolog at your shell prompt. (Prolog is in /usr/local/bin/prolog.) The C++ compiler is g++.

Last updated on Sat Oct 10 03:16:27 EDT 1998 by Brian McNamara