![]() |
|
|||||||||||
It is the responsibility of all students enrolled in this course to be familiar with the contents of this document.
| 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. |
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.
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:
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.
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.
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.
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!
Short (generally five-minute) quizzes will be given periodically. Missed quizzes cannot be taken at a later time.
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:
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