CIS 505/705
(Introduction to) Programming Languages
Fall 2020
Summary
This course teaches important concepts
involved in the design
and implementation of programming languages.
-
Credits: 3
-
Prerequisites: you should have successfully completed
the courses (or their equivalent)
-
CIS 300 (Data and Program Structures), and
-
CIS 301 (Logical Foundations of Programming)
Logistics
This semester, this course can be successfully completed online, without ever showing up on campus!
Lecture notes and video lectures will be posted on Canvas, as will quizzes, projects & labs, and exams.
Personnel
-
Instructor:
Torben Amtoft,
tamtoft hat ksu dot edu
-
Teaching Assistant:
Nasik Nafi, nnafi hat ksu dot edu
-
Teaching Assistant:
Soudabeh Taghian Dinani, soudabehtaghian hat ksu dot edu
Weekly Schedule
Meeting agendas
At least 24 hours before regular class time,
the instructor will have posted lecture notes and video lectures.
Our 3 weekly meetings will therefore not contain lectures but instead
be conducted as follows:
-
the instructor may talk about recent, or upcoming, assignments
-
along the way, or afterwards, students may ask questions,
about the assignments, about current or recent course material, etc
-
while answering those questions, the instructor may elaborate on
his lectures, in particular work out further examples
-
when the agenda for the meeting is exhausted, and there are no more questions,
the meeting will end (therefore aim to join from 8:30am!)
Zoom meetings will not be recorded, in the hope that
you will feel more free to ask questions. But when important points
of general interest are raised, the instructor will post a summary on Canvas.
The instructor, and each of the TAs, will host office hours
at the times listed above. Depending on the number of students
attending, the waiting room facility may be used. These office hours
will not close prematurely; you may enter at any time during the listed
interval.
The Zoom meetings require passwords which will be posted on Canvas.
Communication
Use the email address
help-505@santoslab.org for all questions about lectures, homeworks, etc. Do not email the TAs or instructor directly
(unless there is a very good reason),
and do not use Canvas messaging to contact us.
We make efforts to keep up with email, even though we may not check our inboxes all the time (to decrease disruption of productivity, the instructor usually reads his email only twice or thrice a day). It is our goal that you should expect an email answer no later than on the next business day. So if you send an email on Friday, we will aim to get back to you the next day the university holds classes (which will typically be Monday), and often even earlier.
For questions (or comments) of general interest,
we strongly encourage that you post in the Canvas discussion forum
so that also other students will benefit from the answers.
We even encourage you to answer questions from other students
(of course you should not give more hints towards solutions
than you would reasonably expect the instructor to give).
Course Material
Textbooks
-
Elements
of ML Programming by Jeffrey D. Ullman,
2nd edition (based on Standard ML '97).
-
This book is optional reading,
but many may find it helpful, and the author is an excellent writer.
-
Programming Languages: Application and Interpretation,
Shriram Krishnamurthi (2nd edition).
-
This online textbook is optional reading
(it provided much inspiration to the instructor
when he first prepared for this course).
-
CIS505 Lecture Notes: Introduction to Programming-Language Paradigms, David Schmidt.
-
This online textbook is for reference only;
it provides an excellent perspective.
Software Tools
We shall use 3 languages, illustrating diverse paradigms:
-
Standard ML
-
which can be downloaded from
http://www.smlnj.org
which also contains links to documentation
- Racket
-
which is documented in
http://docs.racket-lang.org
- Prolog
-
where we shall use SWI-Prolog from
www.swi-prolog.org
Objective and Topics
Students should know and understand important concepts,
such as scope and types,
involved in the design
and implementation of programming languages.
-
To help master the material, the students will write
a number of interpreters (and parsers) for various languages.
-
The implementation will be done in languages following a variety of
paradigms,
such as the functional (Standard ML) and logical (Prolog), as well
as a quite eclectic language (Racket).
Graduate work
To merit graduate credit,
CIS705 students must
towards the end of the semester
do some extra work, to be specified later
(in previous semesters, they had to
read and summarize a research paper).
Also, the exams (and some projects) may be somewhat more challenging
than for undergraduate students.
Grading
-
CIS505 students:
-
-
Projects: 30%
-
Labs: 15%
-
After-class quizzes: 15%
-
Exam 1: 10%
-
Exam 2: 10%
-
Exam 3: 20%
-
Small extra project after Thanksgiving: a bit of extra credit
-
CIS705 students:
-
The graduate work after Thanksgiving will count
around 15% of the total score.
The remaining 85% will be distributed
between projects, labs, quizzes and exams, according to the
weights used for CIS505 students
(so that Exam 1 counts 8.5%, etc).
Final letter grades are not based on strict percentage cutoffs but are
"curved" by taking into account the difficulty of the exercises and
exams.
As a rule of thumb, however, you should expect
(cut-offs may be a bit higher for CIS705 students than for CIS505 students)
-
to earn an A will require almost 90%
-
to earn a B will require around 75%
-
to earn a C will require around 60%.
In general, my approach to grading is expressed well by
this
piece by S.A. Miller.
Programming Assignments
are due regularly
and are to be submitted through Canvas. There are two kinds:
-
Projects
-
which are major exercises (there will be 5 such); the aim is that
you appreciate some of the challenges involved in the implementation
of various programming languages, and that you apply standard techniques
to solve them
-
Labs
-
which are minor exercises, given when we start on a new language (paradigm)
so as to make you acquainted with it.
Exams
will be open book/notes, and will be
given online (as Canvas quizzes).
The third exam will be
-
proctored (using Examity; details to follow later)
-
comprehensive
(but with some emphasis on the latter part of the course).
Grievances
If you think the instructor or the TAs have made an error when grading your test or your homework, you are of course 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).
Kansas State University has an Honor and Integrity System based on personal integrity, which is presumed to be sufficient assurance that, in academic matters, one's work is performed honestly and without unauthorized assistance. Undergraduate and graduate students, by registration, acknowledge the jurisdiction of the Honor and Integrity System. The policies and procedures of the Honor and Integrity System apply to all full and part-time students enrolled in undergraduate and graduate courses on-campus, off-campus, and via distance learning. A component vital to the Honor and Integrity System is the inclusion of the Honor Pledge which applies to all assignments, examinations, or other course work undertaken by students. The Honor Pledge is implied, whether or not it is stated: "On my honor, as a student, I have neither given nor received unauthorized aid on this academic work." A grade of XF can result from a breach of academic honesty. The F indicates failure in the course; the X indicates the reason is an Honor Pledge violation.
You are very welcome to discuss the course material, as well as
specific questions, with your fellow students.
However, all submitted
answers must be your own work:
-
You are not allowed to consult previous model solutions that
may be around, or solicit the Internet for solutions to
specific homework problems
(but you are very welcome
to search for general material that gives alternative presentations
of the topics of the course!)
-
You are not allowed to show your
answers to, or look at the answers of, any other student --- this of course
excludes any student that you have been allowed to team up with,
but in such a case each of you must be able to understand and explain
all parts of the submitted work.
If you are in doubt about what is permissible, please ask me.
I very much hope that it will not be
necessary to file any honor pledge violation reports during the
semester!
Other Administrative Issues
-
Lateness:
Late deliverables will not be graded,
with one exception: if you submit a project (not a lab) less than 12 hours
after the deadline, we will grade it, but afterwards subtract
20% of the score you earned.
-
Missing Deliverables:
Given the highly unusual circumstances this year, we will not ask for
documentation for medical conditions, family emergencies,
official university activities, etc.
If you do not submit a deliverable, we will disregard it, that is, it
will not influence the final grade (which will be determined by the
scores on the deliverables that you do submit).
However, if you miss a number of deliverables that together count more
than 10% of the total grade, please contact the instructor. Depending on the
situation, he may in such cases assign a score of zero for some or all
of the missing deliverables,
or (if the bulk of course work has been completed in passing fashion)
assign you an Incomplete (I) for the course.
-
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.
-
Students with Disabilities
who need classroom accommodations, access to technology, or information about emergency building/campus evacuation processes should contact the Student Access Center and/or their instructor. Services are available to students with a wide range of disabilities including, but not limited to, physical disabilities, medical conditions, learning disabilities, attention deficit disorder, depression, and anxiety. If you are a student enrolled in campus/online courses through the Manhattan or Olathe campuses, contact the
Student Access Center
at accesscenter@k-state.edu, 785-532-6441.
-
Expectations for Classroom Conduct:
All student activities in the University, including this course, are governed by the
Student Judicial Conduct Code
as outlined in the Student Governing Association By Laws, Article V, Section 3, number 2. Students who engage in behavior that disrupts the learning environment may be asked to leave the class.
-
Copyright 2020 (Torben Amtoft) as to this syllabus and all lectures.
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. In addition, students in this class are not authorized to provide class notes or other class-related materials to any other person or entity, other than sharing them directly with another student taking the class for purposes of studying, without prior written permission from the professor teaching this course.
Wearing of Face Coverings
To protect the health and safety of the K-State community, students, faculty, staff and visitors must wear face coverings over their mouths and noses while on K-State campuses in all hallways, public spaces, classrooms and other common areas of campus buildings, and when in offices or other work spaces or outdoor settings when 6-feet social distancing cannot be maintained. In addition, all students, faculty, and staff are required to take the
COVID-19 and Face Mask Safety training.
Employees who need reasonable accommodations and assistance related to required face coverings may contact the ADA coordinator at charlott@k-state.edu, and students needing accommodations may contact the Student Access Center at accesscenter@k-state.edu.
In classrooms, faculty have the right to deny a student entry into the room if the student is not wearing a face covering. Students not wearing a face covering will be reminded to do so and offered a clean face covering, if one is available. If the student does not comply, the faculty member will ask the student to leave the space, and if available, join the class remotely. As a last resort, campus police will be called. The faculty members will complete the
Code of Conduct form
and the Office of Student Life will look further into the issue and take the non-compliance with the request to leave into consideration of further accountability measures.
At no point should the professor or other students put themselves into an unsafe situation while attempting to enforce the face-covering policy. Manhattan campus police: 785-532-6412
Acknowledgments
Much of the material presented in this course
was developed over the last several years,
and by several people; in addition to the instructor, in particular
John Hatcliff,
David Schmidt,
Sam Procter, and
Gary Leavens.
They all deserve credit for the merits of this course.
The instructor must take the sole blame for any deficiencies
in the material.
Torben Amtoft