Syllabus
1 Instructor Details
Instructor: Sankha Narayan Guria (he/him)
Office Hours: Tuesday, 11:00 - 12:00pm
Office: 2034 Eaton Hall
sankha@ku.edu
Teaching Assistant: Bryan Richlinski (he/him)
Office Hours: Monday and Friday, 2:30 - 3:30pm
Office: 3015 Eaton Hall
b748r023@ku.edu
Please email to set an appointment if standard office hours times do not work for you.
2 Class Time and Location
Lectures: Tuesday and Thursday, 9:30 - 10:45am, LEEP2 G415
3 Course Hours
Credit Hours: 3
A credit hour is a way to measure the amount of work you’re expected to do for a class. It’s based on the learning goals of the course and how much time you’ll spend on it. During a full length (15-week) semester, you can expect to spend about one hour in class and another two hours on homework or studying each week for each credit hour.
For classes completed in other formats, like an 8-week semester, the time commitment may be different. The exact hours can vary, but you can generally expect to spend a similar amount of time in class and on coursework in total, adjusted for the shorter timeframe.
4 Instructional Methods
All lectures will be held in-person, unless other wise notified. If the instructor is traveling alternative classes may be organized on Zoom.
5 Course Description
Programming Languages is an introduction to basic principles of defining, describing and implementing programming languages and their interpreters. The fundamental goal is establishing a vocabulary for discussing what programming languages and programs written in them do. Topics covered to accomplish this are data representation and types; declarations, bindings and variable assignment; parameter passing and function evaluation; statements; and objects and types. The course uses an implementation-based approach with students developing interpreters for languages that demonstrate features presented in class.
6 Topics
Introduction
Expression Interpreters
Programs as Data Structures
Identifiers and Substitution
Functions and Scoping
Recursion
State
Types and Type checking
Objects
Laziness
7 Learning Outcomes
For those of us who write software, the programming language is our primary tool. Some languages make it easier to write certain kinds programs, while others prevent us from writing certain kinds of bad programs altogether. Some languages prioritize freedom and flexibility, while others seek a balance between expressiveness and limitations. Understanding these trade-offs not only deepens our understanding of computation but also makes us better programmers.
This course offers a framework to help you gain this understanding. The goal is to help you: explore the fundamental components of modern programming languages, use these components to compare and contrast different languages (and prepare you to create your own!), and reflect on the relationship between languages, programming, and, in some cases, programmers themselves.
8 Course Materials
This class has no required textbook. All course materials can be found in the Notes. A few references (all available for free) are listed in Texts.
9 Minimal Technical Skills Needed
The class has a prerequisite of EECS 368 or EECS 468 and EECS 330 or EECS 560.
10 Course Assignments and Requirements
Midterm Exam 20%
Final Exam 20%
Assignments 60%
11 Student Survey of Teaching
You will have multiple opportunities to provide feedback on your experience in this course. Suggestions and constructive criticism are encouraged throughout the course and may be particularly valuable early in the semester. To that end, I may use surveys and/or reflection assignments to gather input on what is working well and what could be improved. You will also be asked to complete an end-of-semester, online Student Survey of Teaching, which could inform modifications to this course (and other courses that I teach) in the future.
12 Grading
Homework assignments, quizzes, and exams will be graded and returned to the class via Gradescope. Students have one week from when an item is returned in class to request a regrade.
Your final grade in the class will be computed by using the weighted average given above, and the following scale:
A = 92-100%
A- = 90-92%
B+ = 88-90%
B = 82-88%
B- = 80-82%
C+ = 78-80%
C = 72-78%
C- = 70-72%
D+ = 68-70%
D = 62-68%
D- = 60-62%
F = 0-60%
Your total scores will not be rounded up. If you are on the boundary, you will be given the higher grade. For example, if your total is exact 88, you will get B+. However, if your total is 87.9 you will get B.
Depending on overall student performance in the course, I reserve the right to lower (but not raise) the above grade cutoffs. However, this is not something you should count on.
13 Attendance Policy
I do not take attendance. You are however, expected and encouraged to attend and participate in class. If you have any problems which will cause you to miss a class or an assignment deadline please email me.
The University Excused Absence Policy is a good reference for allowed reasons.
14 Academic Integrity
Academic misconduct of any kind will automatically result in a 0 score on the homework, lab, project, or exam in question and your actions will be reported to the department chair. Your homework, exams and projects must be individually prepared unless otherwise noted. Posting your assignments to internet discussion lists is considered academic misconduct. Sharing your solutions with others is considered academic misconduct. Turning in solutions from previous semesters is considered academic misconduct. Paying people to prepare solutions is academic misconduct. Automated mechanisms are available for checking the originality of source code.
15 Subject to Change Statement
The schedule for the class beyond next week is subject to change. Please consult the course website to know the latest version of the schedule and syllabus. Any changes in assignments and syllabus policies will conveyed via Canvas announcements.
16 Student Resources and University Policies
Please visit the Student Resources website (KU Academic Success) for a list of student resources and university policies.
17 Accommodation
The Student Access Center (SAC) coordinates academic accommodations and services for all eligible KU students with disabilities. If you have a disability for which you wish to request accommodations and have not contacted SAC, please do so as soon as possible. They are located in 22 Strong Hall and can be reached at 785-864-4064 (V/TTY). Information about their services can be found at access.ku.edu. Please contact me privately in regard to your needs in this course.