Programming Language Concepts,
4003-450-02
Spring 2012-2013 (2123)

Course Web Page

http://www.cs.rit.edu/~fxk/courses/450.01.html

Instructor

Fereydoun Kazemian
Bldg. 70, room 3537
Email: fxk at cs.rit.edu
http://www.cs.rit.edu/~fxk

Office hours: Check my schedule.

Asking questions via email seems to work well for many students.

Lectures

M, W, 6:00 - 7:50 PM, 70-2690.

Required Text

Concepts of Programming Languages, Tenth Edition ,
Robert W. Sebesta,
Pearson (2012).

Prerequisites


4003-334 Computer Science 4 or
4003-263 Computer Science for Transfers and
1016-265 Discrete Mathematics I.

Attendance

Attendance is optional. However, if you miss a class it is your responsibility to get notes from another student. Lectures will not be repeated during office hours for someone who missed class. .sp In accordance with Institute policy you may withdraw from the course until 04/26/2013. That is a Friday. I follow the official CS department policy regarding Incomplete grades.

Course 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.

Intended Learning Outcomes

After successful completion of this course, students will be able to:

Evaluation

There will be two tests, one in-class test and a final exam. The tests will be cumulative, closed notes, closed books, and given on the following dates:
Tests Dates
Test 1 03-April-2013
Test 2 13-May-2013
Tests CANNOT be made up except for real emergencies, in which case, proper documentation will be required.

Your grade for the course will be computed based on the following: Programming Projects: There will be 3 programming projects, one on each of the major languages covered in the course. These are Lisp, Prolog, and Haskell. The projects will vary in difficulty and may involve more than one program.

These projects are NOT group projects and you should submit only work that is completely your own and you should be able to explain all of your code when asked.

Projects must be completed and submitted by the due date at 6:00pm. Late projects will NOT be accepted. A zero will be given to the project that is not submitted or submitted late. No exceptions will be made.

You know that computer systems have a propensity to go down just before projects are due so take this into account when planning your work.

Assignments: There will also be a number of assignments based on the topics discussed in class. The answers to these assignments must be typed and handed in at the start of the class on the due date. Unless it is specifically stated otherwise, you may work on and submit your homeworks in groups of 1 or 2. If you choose to work as a group of 2, both of you should contribute significantly to the solution. You should submit only one copy of the assignment with both of your names on it.

Disputing Your Grade

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

Course Content

The goal is to cover most of the material in the required text plus the four languages. To this end, a preliminary schedule is given in the table below. It is expected that you read the material assigned for a given week \fIbefore\fR the first class on Monday.
Week Topics Readings
1 Preliminaries Ch. 1
1 Evolution of Major Prog. Lang. Ch. 2
2 Describing Syntax and Semantics Ch. 3
3 Introduction to Lisp Ch. 15, Notes and Refs
4 Lexical and Syntax Analysis Ch. 4
4 Names, Bindings, and Scope Ch. 5
5 Introduction to Prolog Ch. 16, Notes and Refs
7 Subprograms and Parameter Passing Ch. 9 & 10
8 Introduction to Haskell Notes and Refs
9 Type Systems Ch. 11, Notes and Refs
10 Concurrency Ch. 13, Notes and Refs

Department of Computer Science

Policy on Academic Honesty

The DCS Policy on Academic Honesty will be enforced.

As an institution of higher learning, RIT expects students to behave honestly and ethically at all times, especially when submitting work for evaluation in conjunction with any course or degree requirement. The Department of Computer Science encourages all students to become familiar with the RIT Honor Code (a general statement that sets high standards of behavior for all members of the RIT community), which may be found online at:

RIT Honor Code

and with RIT's Academic Honesty Policy, which may be found online at:

RIT Academic Honesty Policy

As RIT's Academic Honesty Policy points out, "Academic Dishonesty falls into three basic areas: cheating, duplicate submission, and plagiarism [emphasis added]." While many occurrences represent clear violations, there are also many situations that can occur which are less clear cut. For every section of a course taught in the Department of Computer Science, the instructor will make known to students his or her expectations related to such matters as cheating, duplicate submission, or plagiarism.

Student behavior deemed by an instructor (in the Department of Computer Science) to violate RIT's Academic Honesty Policy will be subject to disciplinary action. Such behavior will be treated as follows:

  1. For a first offense the student involved will receive, at a minimum, a grade of zero for the assigned work.

  2. For a second offense, in the same or a different course, the student will receive, at a minimum, a failing grade for that course.

  3. For a third offense, a student will be suspended and their case will be referred to judicial affairs.

Stronger penalties may be exacted in cases (1) or (2) above if, in the judgment of the instructor, the offense involves a flagrant violation of policy. Furthermore, both undergraduate and graduate students may incur additional, non-academic penalties. Graduate students in cases (1) or (2) above will lose financial aid, although the graduate program coordinator, at his or her discretion, may choose to override this penalty. The undergraduate program coordinator, at his or her discretion, may choose to impose academic actions in cases (1) or (2) above for undergraduate Computer Science majors.

According to section D5.0 (Grades) of the RIT Institute Policies and Procedures Manual, "A student may not withdraw from a course ... to avoid charges of academic dishonesty." The Department of Computer Science will enforce this policy. Finally, for each student involved in an incident of dishonest academic behavior, the course instructor will file an academic dishonesty report detailing the incident. If the student is a Computer Science major, a copy of the report will be placed in the student's departmental file; otherwise, a copy of the report will be forwarded to the student's department chair or program coordinator.