CIS 505/705
(Introduction to) Programming Languages
Fall 2020


Summary

This course teaches important concepts involved in the design and implementation of programming languages.

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

Course Schedule (click on link)

Weekly Schedule

EventLocation/
Zoom link
MondayTuesday WednesdayThursdayFriday
Torben
Remote
ksu.zoom.us/j/91261124609 8:30-
9:20am
8:30-
9:20am
8:30-
9:20am
Torben
OfficeHrs
ksu.zoom.us/j/99657106072 11am-noon
Nasik
OfficeHrs
ksu.zoom.us/j/95450925234 10-11am 10-11am
Soudabeh
OfficeHrs
ksu.zoom.us/j/93317836258 9-10am 9-10am

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:
  1. the instructor may talk about recent, or upcoming, assignments
  2. along the way, or afterwards, students may ask questions, about the assignments, about current or recent course material, etc
  3. while answering those questions, the instructor may elaborate on his lectures, in particular work out further examples
  4. 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.

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:
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) 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

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

Academic Honesty

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:

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

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