CIS 505/705
(Introduction to) Programming Languages
Fall 2021
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
While we strongly encourage in-person class participation,
all necessarily material will be available on Canvas.
-
A few days before each class, detailed lecture notes will be uploaded
for each topic to be covered.
-
After each class, a recording will be uploaded.
-
Immediately after each class, a quiz will be posted,
to be completed within a week.
-
The labs (small programming exercises)
are due Friday before class time.
-
Projects are due Monday before class time
(but you should not expect help from instructors during the weekend).
-
There will be three exams, with the final comprehensive.
Students enrolled in the distance sections (labeled Z)
may take these exams remotely,
probably (details to follow later) proctored using the Examity system.
Personnel
-
Instructor:
Torben Amtoft,
tamtoft hat ksu dot edu
-
Teaching Assistant:
Nikesh Gyawali, gnikesh hat ksu dot edu
-
Teaching Assistant:
Chandra Sharma, ch1ndra hat ksu dot edu
Weekly Schedule
Event | Location | Monday | Tuesday |
Wednesday | Thursday | Friday |
Classes | Durland 1107 | 8:30- 9:20am | |
8:30- 9:20am | | 8:30- 9:20am |
Torben Office Hours |
Engineering 2179
|
| | 10-11am 2-3pm | | |
Torben Office Hours |
Zoom 995 6721 9644
435166
|
| 10-11am | | | |
Nikesh Office Hours |
Engineering 1118A
|
| 1:30-3:00pm | | 1:30-3:00pm | |
Chandra Office Hours |
Engineering 1118A
|
1-2pm | | 1-2pm | | |
Chandra Office Hours |
Zoom 692 983 6958 CIS505
|
| | | | 1-2pm |
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
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
Additional information sources
The uploaded lecture notes will provide all the material
needed to successfully complete the course.
Still, you may benefit from some optional readings:
-
Elements
of ML Programming by Jeffrey D. Ullman,
2nd edition (based on Standard ML '97).
-
The author is an excellent textbook writer.
-
Programming Languages: Application and Interpretation,
Shriram Krishnamurthi (2nd edition).
-
This online textbook
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.
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: 28% (disregarding the lowest score)
-
Labs: 18%
-
After-class quizzes: 15%
-
Exam 1: 12%
-
Exam 2: 12%
-
Exam 3: 15%
-
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 10.2%, 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 a little more than 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 (there will be 6 such),
typically given when we start on a new language (paradigm)
so as to make you acquainted with it.
Exams
will be open book/notes, given in class,
with the final (third) 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
up to 20% (proportional to the delay) of the score you earned.
-
Missing Deliverables:
Given that also this semester, the circumstances
are somewhat unusual, 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 5% of the total grade (for example if you fail to submit
two projects),
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.
-
Copyright 2021 (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.
-
Mandatory Statement Defining 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.
-
Mandatory Statement on Mutual Respect and Inclusion in K-State Teaching and Learning Spaces
At K-State, faculty and staff are committed to creating and maintaining an inclusive and supportive learning environment for students from diverse backgrounds and perspectives. K-State courses, labs, and other virtual and physical learning spaces promote equitable opportunity to learn, participate, contribute, and succeed, regardless of age, race, color, ethnicity, nationality, genetic information, ancestry, disability, socioeconomic status, military or veteran status, immigration status, Indigenous identity, gender identity, gender expression, sexuality, religion, culture, as well as other social identities.
Faculty and staff are committed to promoting equity and believe the success of an inclusive learning environment relies on the participation, support, and understanding of all students. Students are encouraged to share their views and lived experiences as they relate to the course or their course experience, while recognizing they are doing so in a learning environment in which all are expected to engage with respect to honor the rights, safety, and dignity of others in keeping with the K-State Principles of Community https://www.k-state.edu/about/values/community/.
If you feel uncomfortable because of comments or behavior encountered in this class, you may bring it to the attention of your instructor, advisors, and/or mentors. If you have questions about how to proceed with a confidential process to resolve concerns, please contact the Student Ombudsperson Office. Violations of the student code of conduct can be reported here https://www.k-state.edu/sga/judicial/student-code-of-conduct.html. If you experience bias or discrimination, it can be reported here https://www.k-state.edu/report/discrimination/.
-
Mandatory Statement Regarding Wearing of Face Masks
All students are expected to comply with K-State's face mask policy. As of August 2, 2021, everyone must wear face masks over their mouths and noses in all indoor spaces on university property, including while attending in-person classes. This policy is subject to change at the university's discretion. For additional information and the latest on K-State's face covering policy, see https://www.k-state.edu/covid-19/guidance/health/face-covering.html.
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.