CISC 670 Programming Languages (Fall 2002)

Time and Place

Lectures: Tuesday and Thursday 9:30 - 10:45am; Smith Hall 204

Web page: http://www.cis.udel.edu/~lliao/cis670

Course Catalog Description

Selection, use and implementation of appropriate language(s) for given problems. Syntax, semantics, pragmatics, parameter passing and abstract data types.

Detailed Description

Programming languages are central to computer science. They lie between the algorithms and the hardware to get computation done. This role determines that a programming langauge has to strike a balance between the intricacies of both sides; A programming language need to be expressive to easily formulate understandable program and at the same time to be able to compile efficient executable code.

This course is not meant to teach any specific language (although we will mention many of them), nor is meant to teach you how to craft a compiler (although you should know how to build a simple compiler after this course). This course is more about teaching you the general principles, concepts and pragmatics in designing and implementing a programming language. You will encounter many terms and concepts; some are obvious, some are not. You may find it helpful to approach the concept from different perspectives: is the concept dictated by hard science, engineering purpose, or human factors? For example: Is it possible for compilers to detect all bugs of our programs up front? Which garbage collection algorithm is more efficient? Why do not we all agree to use just ONE programming language?

Specifically, you will learn:

Prerequisites

Programming skill in a general purpose language; an understanding of basic data structures (e.g., CISC 220) and computer hardware at assembly level (e.g., CISC 260) is assumed.

Required Textbook

Programming Language Pragmatics, by Michael Scott, (Morgan Kaufmann Publishers, 2000) is the only required book for the course.

As Standard ML is the required language for all assignments, you may find the following books on ML useful.

There are plenty of materials about ML free on-line, including

Assignments and Grading

There will be 5 homework assignments. Each homework is mainly a programming assignment using some toy languages that let you practice with the important concepts and/or techniques of language design and implementation. Standard ML is the required language for all assignments unless otherwise stated. The programs handed in should be well-documented, so that the logic can be understood and thus credited properly even if the programs may not run 100% correctly.

All late assignments are subject to 20% penalty for the first 24 hours past the due time, 10% per 24 hours thereafter (Saturdays and Sundays do not count). Assignments are not accepted one week past due time (e.g., if it is due at 9:30AM of Tuesday, it is not accepted after 9:30AM of next Tuesday).

Homeworks 40%, Mid-term 25%, and Final 35%

Policy on Academic Dishonesty

The assignments in this class should be performed individually. You are permitted to discuss with other students on any conceptual problems but not for concrete code and implementation on any programming assignments. The work handed in must be entirely your own. Any evidence of academic dishonesty will be handled as stated in the Official Student Handbook of the University of Delaware. If you are in doubt regarding the requirements, please consult with me before you complete any requirement of this course.

Course Staff and Contact

Staff Name Office Email Phone Office Hours
Instructor Li Liao Rm 204, 77 E. Delaware Ave. lliao@cis.udel.edu 831-3500 1:30-3:00pm Tuesdays and Thursdays, or by appointment
TA Ilknur Aydin 051 East Main Street, Room 005 aydin@cis.udel.edu 12:00-2:00pm Wednesdays