# CSCI 5106: Programming Languages Fall 2022

### Exam Dates and Times

Midterm Exam: October 26, 2022, 14:30 -- 15:45, Keller Hall 3-125

Final Exam: December 17, 2022, 8:00 -- 10:00, Location Keller Hall 3-125

## New Information

12/16/2022
• We calculated aggregates based on the following formula:
```  aggr := (hw1 * 3/40) + (hw2 * 7/44) + (hw3 * 7/23) + (hw4 * 5/13) +
(hw5 * 8/52) + (hw6 * 6/19) + (hw7 *8/61) + (hw8 *6/27) + mid/5
```
This aggregate is out of a total of 70 points. If we were forced to assign letter grades right now, we might draw the cutoff for some kind of A (i.e. A- or A) at 62, for some kind of B (i.e. B-, B or B+) at 51, and for some kind of C (i.e. C-, C or C+) at 38.

There are still 30 points to be determined, all of which will come from the final exam. Once the cutoffs have been decided, we will take into account what was turned in for the special problems and for the extra credit problem in hw8. Also to be taken into account is the "redo" of the mid term exam. Note also that there is a stipulation of satisfactory performance in homeworks for passing the course.

12/12/2022

• Practice questions for the final exam have been posted. Please try these and ask questions during office hours or over Piazza.

• There is a curtailment of grace days for hw8. Please make sure to submit anything you want to count towards a grade by 10:00 a.m. on Dec 16.

12/05/2022

• Reading assignment: As mentioned in class, you should be reading Chapter 11 in the text book.

• Homework 8, the last homework in the course, has been posted. It is due on Dec 14, 2022.

• Lecture slides and related code for logic programming, the last topic that we will be covering this term, have been posted. Look at the slides and consult the code as needed.

11/21/2022

Older postings worth retaining

• A note on the distinction between parse trees and abstract syntax has been posted to the notes section of the web page.

• I have made a paper on the Categorical Abstract Machine and another one on the SECD machine available in case you would like to read more about generalized compilation of expressions.

• I have made available a paper by John McCarthy that introduced Lisp that some of you might like to read.

• The course web page will be used extensively, especially for communication between lectures. Make sure to look at it regularly, perhaps every day. Any new information that has not been mentioned in class will be announced briefly here. However, you still have the responsibility of attending lectures to keep abreast of all that is going on in the course.

• We will use Piazza through the link provided above as a means for conducting class discussions. Please read the comments on etiquette for interactions that I have posted here and get ready to participate in discussions via Piazza as quickly as possible.

• Any code written for this course has to be submitted electronically as an accompaniment to hard copy submissions. Details on the protocol for submissions appear on the homeworks page. Sites will be set up for submitting the electronic components of homeworks as they become relevant during the semester.

## Contact Information

• Lecture Times and Place: MW 14:30 - 15:45, Keller Hall, Room 3-125.

• Instructor: Gopalan Nadathur (ngopalan atsign umn dot edu), KH Keller Hall 6-215, 612-626-1354.
Office Hours: MW 16:00 - 17:00.

• Teaching Assistant: Dawn Michaelson, (micha576 atsign umn.edu)
Office Hours: F 11:00-12:00
Room: KH Keller Hall 2-246

## Course Prerequisites

The formal prerequisite for this course is CSci 4011 or instructor consent. The conceptual prerequisites are that you should have programmed significantly in at least a couple of different kinds of programming languages (for example, OCaml and C/C++ would be a reasonable combination) and that you should have enjoyed this activity. This is a course in which you will learn to think abstractly about programming and programming languages. Please read the course objectives below to understand what this means in terms of course content. You need to be mentally prepared for this kind of introspective thinking. CSci 4011 and its prerequisite---CSci 2041---would have prepared you for this, but you could have gotten such a preparation from other courses as well.

## Required Text and Other References

The required text is Programming Languages: Concepts and Constructs (Second Edition), Ravi Sethi, ISBN 0-201-59065-4. This book is currently out-of-print. You should be able to get a second-hand copy via the internet. The library is also making an electronic copy available to students enrolled in the course. You will find a link to this copy on the Canvas page for the course and can also access it directly using this link. If this link does not work for you, you need to access the book through the Canvas site first, on the Library Course Materials page. You can find this on the left side of the Canvas site, although you may need to click on the hamburger menu to find it. Once you access it through the Canvas site, the link here should start working.

We will be reading a few research/expository papers during the term. These will be made available via the password protected papers and handouts page. Occasionally, when I cannot get an electronic copy of a paper, I will distribute xerox copies in class.

## Course Description and Objectives

This course provides an introduction to the area of programming languages. The focus will be on conceptual issues. Aspects relating to the structure, usability and implementation of a variety of programming languages and paradigms will be studied. Case studies from existing programming languages such as Pascal, C, C++, Java, ML, Scheme, Haskell and Prolog will be used to motivate and ground discussions at various points. Some programming in each of these languages will be needed in order to clearly understand the issues that we will study. However, the eventual purpose of the course is not to learn to program in a variety of different languages. Rather, the objective is to obtain a general understanding of the idea of a programming language; such an understanding might be useful at a later stage in quickly assimilating information about any new language that is encountered and in making judgements about its implementability and usefulness for specific programming tasks. Also, while you will not necessarily be ready at the end of this course to design or implement new programming languages, you should be adequately prepared at that point for advanced courses that address these aspects.

## Outline of Topics

The intention is, roughly, to cover the material in the first five parts of the text. Here is a list of topics I plan to cover:

• Introduction. The nature of programming languages and the forces that shape them. (Chapter 1.)

• Dealing with syntax. The description of syntax, the extraction of syntactic structure from text and the computer encoding of such structure. (Chapter 2.)

• Imperative programming. Computation based on state change, the need for structured control flow constructs, reasoning about programs with such constructs; data types; procedures, parameter passing mechanisms and scope rules, implementation issues; data abstraction, information hiding and modularity. (Chapters 3--6.)

• Object-oriented programming. The notion of an object, object-oriented thinking, issues such as inheritance and classes, information hiding. (Chapters 6--7.)

• Functional programming. Model of computation based on expression evaluation. Higher-order programming, approaches to expression evaluation, lazy evaluation and infinite structures, polymorphic typing, type checking and type inference. (Chapters 8-10, material from Chapter 14.)

• Logic Programming. Programming through specifying and enquiring about relationships. Unification and search as mechanisms for computing. Applications of the paradigm. Procedural issues related to search, aspects such as cut and negation-by-failure. (Chapter 11.)

• Concurrent Programming. Issues in concurrency and their reflection in programming language constructs. (Chapter 12.)

The text is a little superficial in its coverage of some important topics and so we will supplement it through lecture material and research papers. Also, going the other way, the syllabus indicated above is a little ambitious and time constraints may not permit us to cover all the topics in the mentioned parts of the text; in past offerings, discussions of object-oriented programming and concurrency have been casualities of time pressures.

There are four components to the required work: reading assignments, class participation, homeworks and exams.

### Reading Assignments and Class Participation

Readings will periodically be assigned from the text and from papers that will be made available as the semester progresses. Students will be responsible for having read and understood the material in these assigned readings even if they are touched on only briefly in the lectures, unless they are specifically designated as being optional. Questions about the readings can be raised in class or via the discussion forums on Piazza, the latter being the medium more suitable for a careful discussion.

Lectures will often cover material not directly available from the book or in the assigned papers. Students will be responsible for assimilating such material as well. Thus, attending lectures and keeping abreast of discussions is very important. Students who have skipped lectures have had difficulty with the course in the past.

While the reading assignments and class participation do not contribute directly to the grade, they will have an important indirect impact. Whether or not the reading assignments are done will show up in the quality of the responses to questions in the homeworks and exams. Further, class participation will be taken into account in determining borderline issues when translating an aggregate into a letter grade.

### Homework Assignments

Half the aggregate on which the letter grade will be based will be determined by homework assignments. These assignments will be given roughly every other week and they must be completed and turned in before the start of class on the due date. Every homework will have a hard copy component which must be turned in before the start of the lecture on the due date. When we expect programs to be written for the homework, we will also need an electronic version of the programs to be submitted via a suitable Canvas interface that will be set up. The weightage for each homework will be determined towards the end of the term, based on our assessment of how involved each of them is and how important they are to the focus of the course.

While we expect timely submissions, situations sometimes arise that prevent us from meeting deadlines. To accommodate for this, each student will be given a cumulative grace period of 5 days that can be used in the way they deem necessary across all the homeworks. Once this time has been exhausted, no credit will be given for any further late homework.

There is an exception to the grace days policy. The available grace time may be sharpened for homeworks that are due before exams, when we may have to return graded homeworks more quickly than normal or we might need to put out solution sketches to help students prepare for the exams. Any such sharpening of the policy for individual homeworks will be announced when the assignment is made available.

While each homework will contribute a specific amount to the final grade, students are expected to turn in all of them and exhibit reasonable effort (read: at least a 50% score) on each to obtain a passing grade in the course. Note that this requirement holds even if the grace period has been exhausted: all homeworks must be turned in, even if they do not accrue credit towards the aggregate.

### In-Class Exams

There will be two exams, a mid-term and a final. These will account respectively for 20% and 30% of the overall grade. The mid-term exam is scheduled for October 26, 2022 during class time and the final exam will take place on December 17, 2022 between 08:00 and 10:00 hours. The textbook may be used during the exam but no other material is permitted. Since most of you will probably have access only to an electronic version of the book, you will be allowed to use a laptop or tablet to access it. However, only the textbook may be perused through such a device during the exam.

The exam dates are firm: No changes or makeup exams will be considered except in the case of serious and documented illness. Also, the likely format for any officially sanctioned makeup exam will be an oral one.

### Letter Grade Determination and Miscellaneous Issues

A total score will be calculated at the end of the term based on the weighted sum of the homeworks and the exams. A curve will be plotted based on this score and this will be used to determine a letter grade. This method of grading is meant to be friendly and not to put students in competition with each other: meaningful homeworks and exams should involve some challenge and using a curve enables a normalization of the challenge that could otherwise be punitive.

I may put out a few "special problems" during the term that may involve learning things beyond what we will discuss explicitly in class and that may be more challenging than the usual homeworks in this sense. If I do this and if a student solves these problems successfully, then I will take the work into account in the process of determining the letter grade. As a rough calculation, such work may be thought of as cumulatively contributing an additional 15% to the aggregate. Note that only complete solutions will make a difference, i.e. taking a few steps towards solving these special problems will generally not count.

Issues such as presentation elegance, clarity and conciseness of expression and the insights offered are essential aspects of submitted work, not just optional ones. As such, these will be taken into account in grading. The Web page for homeworks discusses these points in more detail and also explains matters of protocol.

A last comment about how to approach this course. For most students, there will be a lot of new things to be learnt. New languages and new ways of thinking about programs will be encountered. Moreover, the focus will be on things that have a long term impact on your understanding. For example, we will not really be discussing how to program in Java, C++ or some other language but, rather, how to think about programs and the devices available in these and other languages. You may feel diffident at times doing this---all of us have an initial desire to stay with familiar things---but it can be very rewarding in the end. Also, know that the TA and the instructor are quite passionate about the subject and are more than willing to give you assistance. However, such assistance can be useful only if you have made the initial efforts to understand and if you keep a positive attitude towards learning despite the obstacles you may have encountered along the way.

## Policies and Related Information

Collaboration is strongly encouraged in this course insofar as this serves to improve understanding of the course material. As one indication of how seriously we mean this, we have set up Piazza forums for discussions related to various aspects of the material we will cover.

While collaboration is both natural and useful, carrying it too far can interfere with learning as well as with the assessment of what has been learnt. A specific requirement that should be adhered to strictly is that any work that is meant to be graded must be an indication of the student's own understanding and hence must be done completely independently. In the first instance, this means that a clear distinction must be made between a discussion that is meant to help understand a homework problem and the issues it might be highlighting and one that is about a solution to the problem; the latter is prohibited, the former is not. Similarly, if outside sources, such as resources available over the web, have been consulted in developing a solution then these must be clearly identified in the work that is turned in. Not doing so counts as plagiarism, one of the worst forms of cheating in the academic context. Using such sources is not by itself disqualifying, what is disqualifying is simply copying the solution. We will make a determination of whether this line has been crossed and will adjust the credit accordingly.

Our role as instructors for the course require us to deal strictly with collaborations that cross the lines described above, instances of plagiarism and other forms of cheating. There are lots of simple yet effective ways to determine if this is happening. If such violations are encountered, they will be dealt with as a breach of the academic honesty guidelines for this course. Penalties for such transgressions will range, at my discretion, from no credit for the assignment in question to a failing grade in the course. To ensure fairness and in keeping with University requirements, suspected breaches of the policy will be reported to the Office of Community Standards. At a personal level, this kind of dishonesty interferes seriously with intellectual development and it also sours relationships. I sincerely hope, therefore, that we will not have to get into a realm where we have to deal with such issues.

A comment on a related point. For those of you who seem to be understanding the material in the course well and are enthused by this, I would like to encourage your being helpful to others. However, please be aware that, if taken beyond a reasonable point, such help can be detrimental to someone else's learning. One particular situation to be aware of is when you respond to queries on the discussion fora. Give thought to whether or not you will be letting out solutions to problems that your colleagues should have a chance to think through for themselves. Dawn and I will try to monitor this aspect towards guiding you in deciding when responses and help you provide has the danger of crossing the boundary of legitimacy, but, for the situation to be manageable, they will need you to be cooperative and responsible as well.

Note: The department has a default set of policies regarding academic conduct that you will find here. These policies are effective for anything that is not explicitly covered above.

### COVID-19 Specific Policies

COVID-19 transmission and the dangers of contracting the disease continue worry many of us. The University has a set of policies related to this and the Senate Committee on Educational Policy has put together a "recommended syllabus language" that is relevant to the instructional environment. That document identifies three aspects as worthy of clarification: course modality, what to do in case of illness, and requirements concerning vaccination and masking.

The information specific to this course related to these three aspects is the following:

1. This course is being conducted in an in-person mode. Lectures will be delivered in the classroom and exams will be in-class. Since the course is being offered over UNITE, there is the provision as well as the possibility for a few lectures to be previously recorded and played in class during the lecture time. We intend also to conduct office hours in person. Note that there could be situations arising, for example, from the illness of the instructor or the Teaching Assistant that could result in office hours being held via Zoom and more than an odd lecture being delivered in a pre-recorded format or via Zoom.

2. You should stay at home if you are experiencing illness or have a positive COVID-19 test. The university has a policy for legitimate absences that will be applicable in such cases.

3. COVID-19 vaccinations or approved exemptions are required for all students and employees. Masking is not required. However, indoor masking continues to be an important tool in mitigating the spread of COVID-19 and I intend to wear a mask in class and during office hours myself for this reason. The university is supplying high-quality masks to those students who want them in Fall 2022. Check the Safe Campus website for information about where to obtain such masks.

### Appropriate Use of Class Notes and Course Materials

Material that is made available to the class during the term, such as notes and videos prepared by the instructor and solutions that may be provided to problems are meant only for the participants in the course and for the purpose of enhancing learning. All these materials remain the intellectual property of the instructor and must not be distributed outside the class without his expressed permission. For more information on this, check out the Administrative Policy on Student Responsibilities in Teaching and Learning.

### Makeup Work for Legitimate Absences

Students will not be penalized for absence during the semester due to due to officially sanctioned reasons. These reasons include verified illness, participation in intercollegiate athletic events, subpoenas, jury duty, military service, bereavement, and religious observances. For information on what constitutes a legitimate absence and the attendant policies, please check out the Administrative Policy on Makeup Work for Legitimate Absences .

### Equity, Diversity, Equal Opportunity, and Affirmative Action

The University is committed to providing equal access and opportunity to all in its programs and facilities, without regard to race, color, creed, religion, national origin, gender, age, marital status, disability, public assistance status, veteran status, sexual orientation, gender identity, or gender expression. For more information, please consult Board of Regents Policy on Equity, Diversity, Equal Opportunity, and Affirmative Action.

### Disability Accommodations

The University of Minnesota views disability as an important aspect of diversity, and is committed to providing equitable access to learning opportunities for all students. The Disability Resource Center (DRC) is the campus office that collaborates with students who have disabilities to provide and/or arrange reasonable accommodations.
• If you have, or think you have, a disability in any area such as, mental health, attention, learning, chronic health, sensory, or physical, please contact the DRC office on your campus (612.626.1333) to arrange a confidential discussion regarding equitable access and reasonable accommodations.
• Students with short-term disabilities, such as a broken arm, can often work with instructors to minimize classroom barriers. In situations where additional assistance is needed, students should contact the DRC as noted above.
• If you are registered with the DRC and have a disability accommodation letter dated for this semester or this year, please contact your instructor early in the semester to review how the accommodations will be applied in the course.
Additional information is available on the DRC website. Students may also email drc@umn.edu with questions.

### Mental Health and Stress Management

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce your ability to participate in daily activities. University of Minnesota services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus from the Student Mental Health website.

### Sexual Harrassment

Sexual harassment means unwelcome sexual advances, requests for sexual favors, and/or other verbal or physical conduct of a sexual nature. Such conduct has the effect of unreasonably interfering with an individual's work or academic performance or creating an intimidating, hostile, or offensive working or academic environment in any University activity or program. Such behavior is not acceptable in the University setting. For additional information, please consult the Board of Regents Policy on this matter.

Academic freedom is a principle that is fundamental to intellectual inquiry. This notion includes the freedom to discuss relevant matters in the classroom, within the scope of the course as defined by the instructor. Students are encouraged to develop the capacity for critical judgment and to engage in a sustained and independent search for truth. Students are free to take reasoned exception to the views offered in any course of study and to reserve judgment about matters of opinion, even while they are responsible for learning the content of any course of study for which they are enrolled.

## UNITE Related Provisions

This course is also being offered via UNITE, as a result of which there are some special provisions for students attending it on campus. Streaming video archives of class meetings are available with a TEN-DAY delay for the length of the semester. UNITE will not make media available to students enrolled in on-campus sections for any reason past the final exam. See UNITE's Policy for On-Campus students (link below) for details of access for on-campus students. This ten-day delay is lifted one week prior to scheduled exams and one week prior to finals as long as students are also enrolled in the course through UNITE Distributed Learning. If there are no UNITE enrollments, the ten-day delay may only be lifted the week prior to finals week.

Access to the videos is provided through the UNITE Media Portal based on a University of Minnesota Internet I.D. and password, i.e., the information needed to access a University of Minnesota email account.

UNITE partners with the DRC in implementing accommodations approved by University of Minnesota's Disability Resource Center (DRC) consultants. Students working with the DRC may have their DRC consultant contact UNITE directly.

UNITE will consider lifting the ten-day delay in the following circumstances: for illness/emergency lasting one-week or longer with documentation; for University of Minnesota events/projects with inflexible schedule (approved examples: travel for CSE Solar Car Team Project, travel for university athletics), travel for a conference related to student's program. Examples of those not approved: CSE Career Fair (which has an all-day schedule), personal travel.

The instructor and the teaching assistant will not be able to help you with questions related to the UNITE Media. Use the UNITE Troubleshooting FAQ or "Submit a Trouble Report to UNITE" link found on all pages within the UNITE Media Portal or send an email message to UNITE.

Last modified: Dec 16, 2022. Page maintained by ngopalan atsign umn dot edu.

The views and opinions expressed in this page are strictly those of the page author(s). The contents of this page have not been reviewed or approved by the University of Minnesota.