CIS505 Fall 2009, Syllabus
CIS505: Programming-Language Paradigms
Lecture: MWF 2:30pm, Nichols Hall, room 122
-
Instructors:
Torben Amtoft
-
219C Nichols Hall; 532-7917; tamtoft at ksu dot edu;
office hours (tentatively): 1-2pm, Mon & Wed, and by appointment
-
David Schmidt
-
219A Nichols Hall; 532-7912; das at ksu dot edu;
office hours ???pm, ??? & ???, and by appointment
Teaching Assistant: Vijay Sankar Kolli; vijayk at ksu dot edu;
Course web pages:
Amtoft:
http://www.cis.ksu.edu/~tamtoft/CIS505/09Fall
Schmidt:
http://www.cis.ksu.edu/~schmidt/505f09
Mailing list:
cis505-l@listserv.ksu.edu serves for
class announcements, as well as questions and issues of general interest
(note that you cannot mail attachments).
K-State Online:
is used to report grades,
and to upload material relevant for the course
(slides, assignments, model solutions, etc.)
Important: Schmidt will teach the first quarter
of the course, Amtoft will teach the middle half, and Schmidt
will finish. Please consult the course web page of the
instructor in charge for assignments and announcements.
|
Textbook:
The course uses an on-line text, found at the
Lectures
page at http://www.cis.ksu.edu/~schmidt/505f09.
There is also a hard-copy text,
ML for the working programmer
by Larry Paulson, Cambridge Univ. Press, 1996.
Course Structure:
We meet for lecture Mon-Wed-Fri.
There will be regular homeworks, usually programming exercises.
Assignments that are late will not be graded,
unless in case of documented medical or family emergencies.
During the semester,
there will be two written in-class exams,
tentatively on Wednesday, September 30, and on Wednesday, November 11.
We may decide to replace the final exam by a major project.
Grading:
Final grades are not based on strict percentage
cutoffs but are ``curved'' by taking into account
the difficulty of the exercises and exams.
Our approach to grading is expressed well by
this
piece by S.A. Miller.
Prerequisites:
CIS300 and CIS301
or equivalent experience. Please see the instructor if you
have questions. A computer is not required for the course;
you may do the exercises in any of the CIS labs.
Objectives and Topics:
The primary objectives are to understand the fundamental
programming paradigms and to understand why it is important to understand
them. Along the way, we will master parser and interpreter construction
with an eye towards designing and implementing our own
domain-specific languages.
Here is a summary of the topics to be covered:
-
survey of software architectures and domain-specific languages
-
survey of programming paradigms
-
syntax and grammar notation; introduction to parser and interpreter
construction
-
characteristic semantic domains; control, data, and component structures
-
the imperative programming paradigm; parser and interpreter
construction in an imperative language
-
the functional paradigm;
parser and interpreter construction in a functional language
-
the logical paradigm; query- and puzzle-solving in a logical
language
-
domain-specific modelling and programming languages;
designing one's own domain-specific language
Class conduct:
Because of past problems with cell phones and noise-making devices,
you must silence
phones, pagers, and computers before lecture starts. If any device sounds an
alarm during lecture, then the instructor can choose to end
lecture immediately for that day.
Academic honesty policy:
Please read
http://www.ksu.edu/Honor
for the University's policy regarding academic honesty; it is based on
personal integrity which is presumed to be sufficient assurance that one's academic work is performed honestly and without unauthorized
assistance.
The homework exercises are meant to develop your skills; it is OK to discuss
them with others and to ask for help with the tricky bits, but
what you submit must be written/typed by you, and you must be
able to reproduce it from memory, from scratch, whenever asked.
That is, whatever you submit on paper must be saved in your brain as well.
If you are in doubt about what is permissible, please ask an instructor.
Attendance policy: You are responsible for the material
presented in class. If you miss
a lecture, consult
a fellow student or the instructor
to learn what you missed.
Drop policy: It is your responsibility to drop the course
if you are enrolled but decide not to complete the course --- there are no
``automatic'' drops due to nonattendance. Deadlines are:
September 13 to drop a course and get 100 % refund;
September 28
to drop a course without a "W" recorded on your
transcript; October 30 to drop a course (with a
"W"). KSU allows a retake of a course with removal of the
prior grade, at most once per course, for a maximum of five courses.
Academic accommodation for students with disabilities: If you
have a physical or learning disability
that requires special accommodation, please notify the instructor(s)
within the first two weeks of the course.
Grievances:
If you think an instructor or TA made an oversight
when grading your test or homework, you are
very welcome to ask for clarification. But complaints about
judgment calls, like how much credit to give for a partially
correct solution, are not encouraged---it is like
arguing balls and strikes. In particular this holds
for homeworks (since each question contributes very little
towards the final grade).
Notice of Copyright:
During this course students are prohibited from selling notes to, or
being paid for taking notes by, any person or commercial firm without
the express written permission of the professor teaching this course.