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:
-
Learn new programming paradigms and languages on their own.
-
Describe formal syntax and high-level semantics of a programming language.
-
Identify appropriate programming languages to use to address the specific
needs of a stated problem.
-
Explain and apply different programming language paradigms.
-
Explain and apply basic constructs and concepts used in common programming
languages.
-
Describe a historical perspective of programming languages.
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:
-
First test (30%),
-
Second test (final exam) (30%),
-
Programming projects (30%), and
-
Homework assignments (10%).
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:
and with RIT's Academic Honesty Policy, which may be found online at:
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:
-
For a first offense the student involved will receive,
at a minimum,
a grade of zero for the assigned work.
-
For a second offense, in the same or a different course, the student
will receive,
at a minimum, a failing grade for that course.
-
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.