Design and Implementation of
Programming Languages
Top Lectures Assignments Noticeboard

Design and Implementation of Programming Languages
CpSc 428/628 -- Spring 2001
Department of Computer Science
Syllabus

It is the responsibility of all students enrolled in this course to be familiar with the contents of this document.

Administration

Instructor: Dr. Alan Kaplan
Office: 421 Edwards Hall
Phone: 656-7678
Email: kaplan@cs.clemson.edu
WWW: http://www.cs.clemson.edu/~kaplan
Office Hours: Wednesday 2:00-3:00pm, Thursday 11:00-12:00pm (or by appointment)
Class WWW: http://www.cs.clemson.edu/~kaplan/cs428
TA: Ms. Laura Knipfer laurann@cs.clemson.edu
Credits: 3
Prerequisites: CP SC 231 and 241 or equivalent.

Catalog Description

Programming paradigms and their basic characteristics. Overview of programming language structures and features, and their implementation. Control and data structures found in various languages will be studied. Runtime organization and environments also will be included.

Aims and Objectives

This course aims to provides students with a fundamental understanding of the design and implementation of modern programming languages. From the design point of view, we will study language features as tools for expressing algorithms. From the implementation point of view, we will study compilers as tools to map those features efficiently onto modern computer hardware. The course will touch on a wide variety of languages, both past and present, with an emphasis on such modern Algol descendants as C++, Java, Ada 95, and Modula-3. Rather than dwell on the features of any particular language, it will focus instead on the differences between languages, the reasons for those differences, and the implications those differences have for compiler implementation. The course also aims to broaden the student's perspective of programming/programming language paradigms such as procedural, functional, object-oriented, and logic, as well as expose students to emerging capabilities and extensions in next-generation programming languages.

Topics to be covered include:

After this course, students should be able to:

Course Organization

Class meetings will mostly be lectures, but some discussion and student presentations may take place. Students are encouraged to ask any pertinent questions and participate actively in discussions. There will be several assignments consisting of written homework problems and programming exercises, two midterms and a final exam. There will also be in-class short-answer quizzes.

This is an intensive but rewarding course - you work hard, but learn a lot and gain considerable experience.

Assessment

Scaled components for assessment:
1.
10% - Quizzes
2.
20% - Homework assignments
3.
75% - Three major exams (25% each)

Grading System

The grading system is based on university guidelines:
A - Excellent
(90-100) Indicates that the student is doing work of a very high character, the highest grade given.
B - Good
(80-89) Indicates work that is definitely above average, though not the highest quality.
C - Fair
(70-79) Indicates work of average or medium character.
D - Pass
(60-69) Indicates work below average and unsatisfactory, the lowest passing grade.
F - Failed
(0-59) Indicates that a student knows so little of the subject that it must be repeated in order that credit may be received.

CpSc 628 Students

Students enrolled in CpSc 628 (i.e., graduate students) will be assigned additional work. In addition, their work (assignments and exams) will be analyzed at a much higher level than 428 students.

Textbooks and Reserved Readings

Required reading material for this class:

Optional reference books:

Additional readings will placed on reserve in the library. Other resources - interesting papers, language reference manuals, FAQs, etc. - will be made available on the class WWW page.

Exams

There are three exams. Two exams are given in class. The third exam will be given during the final examination period. Exams generally consist of short answer and multiple choice questions. There are also problems that require writing code.

Assignments

Several problem-solving and programming assignments (opportunities) will be given. All work should be completed independently unless explicitly stated otherwise in the assignment. Unless otherwise stated, assignments are due at the beginning of class on the specified due date. No credit will be given for assignments submitted late, since solutions may be handed out or discussed in class. All written work must be typed!

Quizzes

Short (generally five-minute) quizzes will be given periodically. Missed quizzes cannot be taken at a later time.

Policies

Attendance
Regular attendance is mandatory. Being absent, excused or not, does not change the responsibility for assigned work, or material covered during the class. Students are expected to give at least one week advance notice for excused absences when graded work is involved (if possible).

Announcements
The official means of communication for this course will be in-class announcements. Missing class is not an excuse for failure to act as required by these announcements.

Grading
If at any time during the semester you are concerned about your performance in the course, please set up an appointment to discuss this matter with the instructor as soon as possible. Do not, however, wait until the end of the semester or after the final exam to address this issue. Please note:

I will attempt to return grades as quickly as possible after they have been submitted. You are responsible for monitoring your own progress - concerns about a grade for an assessed piece of work should be addressed within one week of receiving the grade for that piece of work. Do not wait until the final weeks or after the final exam.

I am willing to discuss specific concerns about grades. I am unwilling to discuss questions or comments along the lines of:

Office Hours
I will normally be available in my office during the posted office hours. Outside of those hours, or times arranged on an appointment basis, I cannot be assumed to be available for Computer Science 428/628 matters, even if I happen to be in my office. Particularly if you have substantial questions, it is best to come see me during my office hours or make an appointment if those times are not convenient. If you cannot reach me in my office, you may send me email or leave a message with any of the secretaries in the Computer Science office. You may also e-mail the class TA with questions.

Email and the Web
As noted above, the official means of communication for this course will be in-class announcements. In addition, many announcements will be made electronically. In particular, identification of files you will need to access, changes to due dates, etc. will be posted regularly. These announcements will be sent by email to all students (using your Clemson e-mail address) registered for this course. It is your responsibility to check these announcements regularly.

Class Lateness
In the event no prior arrangements have been made, students should wait for ten minutes after the class start time before leaving if the instructor is late for class.

Plagiarism and Academic Dishonesty

Plagiarism occurs whenever you explicitly or implicitly assert that someone else's work is your own. Such actions are clearly unacceptable in the context of a degree in which you are receiving certification from the University that you have reached a certain level of achievement in various areas of the field concerned (Computer Science, in this case). Other forms of academic dishonesty include showing your work to another student in a context in which it is reasonable to believe that they may submit it as their own. In summary, the University rules on academic dishonesty apply.

Of course, I encourage students to assist one another in learning and overcoming difficulties with the material, but discussing or sharing answers to specific homework questions or programming assignments, except in cases of explicit group assignments or projects, is considered dishonest. With the widespread use and accessibility of the WWW, re-use of some software (e.g., a commonly used data structure) is permitted as long as you cite the source.

If you have questions as to what I consider honest, please ask!

Clemson University Official Statement on Academic Integrity

As members of the Clemson University community, we have inherited Thomas Green Clemson's vision of this institution as a high seminary of learning. Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form.

Clemson Computer Science Department Academic Honesty Policy

http://www.cs.clemson.edu/html/academics/honest_policy.shtml


Alan Kaplan
Last modified: Wed Jan 10 09:52:21 EST 2001