Syllabus

Programming Language Concepts 4003-455/4005-750

2007 Fall Quarter

 

Catalog Description

 

A study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

 

Contact Information

 

Instructor: Jessica D. Bayliss

Office: bldg. 70, room 2511

Email: my 3 initials @it.rit.edu

Web Page: http://www.it.rit.edu/~jdb

Office hours: Please see my main web page.

Asking questions via email seems to work best for many people.

 

Lectures

 

4 hours per week

 

Required Book

 

No required book. Optional books on specific programming languages will be recommended.


Other Materials

 

Course Web Page: http://www.it.rit.edu/~jdb/plc

 

I will distribute copies of other materials required for class. Information about reading and project assignments, exams, etc. will be linked from the course web page.

 

Prerequisites

 

4003-263: Computer Science for Transfers -or-

4003-334: Computer Science 4 -and-

1016-265: Discrete Math I

These prerequisites will be enforced.

 

 

Course Goals

 

-          To learn a framework for understanding the syntax of new languages.

-          To have the ability to understand that some languages are better to solve a given problem than others and to be able to state why when given a problem.

-          To be able to write small Lisp programs using lambda, mapcar, and recursion

-          To be able to write small programs in a scripting language.

-          To be able to write small programs in a logical language.

-          To understand why languages are constructed the way they are (choices have to be made somewhere!).

-          To know basic BNF and about the basic syntactical structure of a language.

-         To have a basic grasp of tokenizing/parsing.

-         To have a basic grasp of modern issues in language design.

-         To be able to find information and learn about a language on your own.

 

Project Assignments and Homework

 

Reading assignments will be given in class and may need to be completed by the next class time. Each written/coded homework assignment will be collected and graded. Written/coded homework assignments are posted at least 6 days before they are due and are due when stated in the assignment. The actual assignments will be available off of the course web page. For each day that a project is late I will remove 10% off whatever your grade on the project is up until 5 days past due. If you turn in your project more than 5 days late I will give you a 0 and will not look at the project. Please do not email me at the last minute before a due date. I am not on-line 24/7 and am very unlikely to answer your last minute questions.

 

Class Participation and Attendance

 

In order to aid you in learning various languages, some classes will be spent in a lab setting. Some of your attendance and participation grade will come from these activities.

Midterms

 

Two midterms lasting 50 minutes each will be given. While the midterm will be closed book and notes, you may bring one sheet of letter-sized paper with your own hand-written notes. Requirements and grading information for the poster will be available from the course web site. As part of the poster presentations you will also be required to write reviews of other student’s posters.

 

Poster Session

 

You will be required to present a poster on a language of your choice (it may not be C/C++, Java, or any of the languages concentrated on in this class). The poster must be done individually.

 

Final Exam

 

A cumulative final exam will be given. The exam is closed book and notes but you may bring one sheet of letter-sized paper with your own hand-written notes.

 

Exams cannot be made up except for real emergencies. If at all possible, you should contact me prior to the exam. Oversleeping, cars that don't start etc. do not constitute a valid excuse. If you lie to me or falsify documentation and I later find out about it, I will turn you in for academic dishonesty.

 

Evaluation

 

40% Projects

10% Homework (includes lab submissions)

10% Poster Presentation

5% Participation and attendance

20% Midterms

15% Final Exam

 

Numerical grades will be converted to letter grades according to the following scale:

> 90%: A; 80%-90%: B; 70%-80%: C; 60%-70%: D; < 60%: F.

 

Your final grade will never be more than one letter grade higher than your weighted average exam grade. In addition, if your weighted average exam grade is below 60%, you fail the course.

 

Disputing Your Grade

 

If you feel that an error was made in grading your project or exam, you have one week from the moment the graded work was handed back to dispute your grade.

 

Academic Dishonesty

 

The DCS Policy on Academic Dishonesty will be enforced.

You should only submit work that is completely your own. Failure to do so counts as academic dishonesty and so does being the source of such work. Submitting work that is in large part not completely your own work is a flagrant violation of basic ethical behavior and will be punished in accordance with the DCS Policy.