CS 3304 : Syllabus

Comparative Languages

Instructor:
Office:
Office Hours: 
Office Phone: 
E-Mail:
GTA:
Office:
Office Hours: 
E-Mail:
Prerequisite: CS 2604 and programming experience
Text: Concepts of Programming Languages, 5th Ed., Robert W. Sebesta, Addison-Wesley, 2002.
Reference: The Little Lisper, Daniel P. Friedman and Matthias Felleisen, MIT Press, 1987.
Programming in Prolog, 3rd Ed., William F. Clocksin and Christopher S. Mellish Springer-Verlag, 1987.
Optional: CS 3304 Course Notes are available at A-1 Copies, University Mall
Web Information: http://courses.cs.vt.edu/~cs3304
Final Exam:

This course provides an in-depth study of current and historical issues in the design, implementation, and application of programming languages. Topics will vary from basic to advanced in areas such as syntax, semantics, binding, data abstraction, exception handling, concurrency, and functional, logic and object-oriented programming. Some programming will be required to help you get the feel for different types of languages. In particular, you will be expected to develop programs in two new paradigms with which you may not be familiar.

Among the primary goals of this course are (1) to give you the background to be able to evaluate the appropriateness of a programming language to an application, (2) to expose you to different types of languages, and (3) to get you to the point where learning a new programming language is not an effort to be feared.

Grading for the course is on a 1000-point scale as shown below. If you have questions about the way an assignment was graded, you should ask the GTA first and then consult the instructor.

Activity Number of points
Programming Assignments (4 worth 100 pts. ea.) 400
Homework Assignments (12 worth 25 pts. ea.) 300
Midterm 120
Final Exam 180
Total 1000

Homework Assignments: Your solutions for each homework assignment must be prepared with a word processor (e.g., LaTeX or Word), and are due at the beginning of class on the due date specified unless otherwise noted on the assignment itself.

Programs: For each assignment, you will submit an electronic copy of your program to the Curator for automated testing. Once you receive full credit from the Curator on a submission, that is the version that will be graded. Full submission guidelines are posted on the course web site describing Curator submission and grading criteria.

Assignments are due at the beginning of class, unless otherwise specified in the assignment. Work is late if it is not turned in at the beginning of class.

Homework Assignments: Late homework assignments may be submitted before the end of class on the specified due date for a 10% penalty. No other late homework assignments will be accepted.

Programs: Late program assignments may be submitted before the end of class on the specified due date for a 10% penalty. In addition, late programs will be accepted up to 2 days late for a penalty of 20% per day (personal catastrophes should be discussed with the instructor); additionally, you must arrange in advance (i.e., the day the program is due) with the instructor where/when to turn in your late program assignment.

All assignments are to be submitted in class unless you have made prior arrangements for submission with the instructor. Alternative exam times are only available when prior arrangements have been made with the instructor.

You are expected to attend class always--please arrive on time. If you miss a class, it is your responsibility to find out what was discussed, what assignments were made, or what handouts were given. Note that job interviews are not considered an acceptable reason to miss class.

Topic(s)Chapter
Introduction and Language Evaluation Chapter 1
Programming Language Paradigms  
History and Evolution Chapter 2
Imperative Programming (Pascal)  
Functional Programming (Lisp/Scheme) Chapter 14
Logic Programming (Prolog) Chapter 15
Object-Oriented Programming Chapter 11
Syntax and Semantics Chapter 3
Names and Typing Chapter 4
Data Types Chapter 5
Expressions and Assignment Chapter 6
Control Structures Chapter 7
Subprograms Chapters 8 & 9
Abstract Data Types (ADTs) Chapter 10

All graded assignments must be your own work. When writing up homework or programming assignments, you may seek help during office hours from the GTA or the instructor. You should also feel free to raise questions during class. Any other assistance in writing up an assignment is a violation of the honor code, i.e., you cannot work with anyone else.

Because you are expected to learn new programming languages outside of class, I encourage student interaction regarding the understanding of a programming language and the system under which it operates, so long as there is no direct help in completing an assignment. If you want to form groups in order to help each other learn a language, I have no objection.

If any student needs special accommodations because of a disability, please contact the instructor during the first week of classes.