22c:111 (CS:3820)
Programming Language Concepts
The University of Iowa, Fall 2014
Course Syllabus

Lectures

Every Monday, Wednesday and Friday 1.30pm-2.20pm in W228 CB

Instructor

Dr. Christoph Sticksel
Email

Office hours

Every Tuesday 2pm-3.30pm and Friday 10.30am-12noon in 201K MacLean Hall.

Teaching Assistant

Jingwei Ji
Email

Office hours

Every Monday 3pm-5pm and Wednesday 3pm-5pm, 101N MLH

Prerequisites

22c:021 (CS:2230) Computer Science II: Data Structures, and 22c:060 (CS:2630) Computer Organization or 22c:022 (CS:2820) Object-Oriented Software Development.

Web Site

Most of the information about the class, including handouts and assignments, will be available on the class web site http://www.divms.uiowa.edu/~csticksel/teaching/111 or on ICON.

Students are expected to check the web site's main page on a regular basis (at least every other day) for announcements regarding the course.

Course Overview

In this class we will both study the design of modern programming languages, and look at alternative programming paradigms. If we want to implement a programming language, we have to know how to describe its syntax, how to recognize syntactically valid input and how to evaluate or compile it. We will study all these aspects and further discuss features of modern programming languages such as automated memory management with garbage collection.

For the second part, we are mainly concerned with functional programming, and most of the programming assignments of this course will be in the functional language OCaml. The functional paradigm allows powerful reasoning principles to be applied to programs, and we will see the benefits of strong typing discipline, as well as give a taste of systems to prove correctness of programs.

Another programming paradigm we will study in some detail is declarative programming, where you can write recursive definitions of certain kinds of properties in a very elegant way

No prior familiarity with any of these topics or OCaml is assumed in this class, but students are expected to have passed the prerequisite classes 22c:021 and either 22c:022 or 22c:060.

Outline

  1. Formal Languages
  2. Functional Programming with OCaml
  3. Implementing Programming Languages
  4. Logic Programming
  5. Advanced Topics

Textbook and Readings

There is no required or recommended textbook, references to literature for optional reading about some topics covered in class will be given.

Assignments, Exams and Grading

You will be graded for the following work, which make up the respective percentage of your final grade:

  • 5 Homework Assignments (Programming Assignments), 40%
  • In-class Miderm Exam, 20%
  • Final Exam, 30%
  • Micro-assignments, 10%

Programming assignments will generally have a late deadline of a week. The penalty for turning in a programming assignment late is 10%. After that, solutions will be posted and no late work accepted. A micro is a very small assignment, intended to take 20-30 minutes at most. Think of it as a take-home quiz, intended to reinforce concepts from class. Micro assignments will be posted at the end of some classes and are due right at the start of the following class (within first 3 minutes). Micros will not be accepted late.

Collaboration Policy

The collaboration policy for programming assignments is that high-level discussion of problems is OK, but detailed collaboration on solutions is prohibited unless explicitly allowed. This means that unless explicitly allowed, you should not look over another person's code from the class (this includes writing the code together). You are not allowed to check that your solution makes sense by reading another person's code. Solutions whose similarity is too great to be a coincidence will be considered for possible academic integrity violation. No collaboration at all is allowed on micro assignments. I will protect your rights to a fair evaluation in this course through enforcement: cases of suspected cheating will be reported to the Dean's office, as required by CLAS policy.

Course Software

We will be making use of a number of software packages in this class, starting with OCaml (version 4.00 or higher). These software packages are all available on the CS lab machines in 301 MacLean Hall. The Windows machines have OCaml version 3.11, while CS Linux machines have 4.00.1. We will try to provide you code which compiles with 3.11, and accept code which compiles with 4.00. You are also welcome to install OCaml on your own computers.

Standard Policies from the College of Liberal Arts & Sciences (CLAS)

Administrative Home

The College of Liberal Arts and Sciences is the administrative home of this course and governs matters such as the add/drop deadlines, the second-grade-only option, and other related issues. Different colleges may have different policies. Questions may be addressed to 120 Schaeffer Hall, or see the CLAS Academic Policies Handbook at http://clas.uiowa.edu/students/handbook.

Electronic Communication

University policy specifies that students are responsible for all official correspondences sent to their University of Iowa e-mail address (@uiowa.edu). Faculty and students should use this account for correspondences (Operations Manual, III.15.2, k.11).

Accommodations for Disabilities

A student seeking academic accommodations should first register with Student Disability Services and then meet with the course instructor privately in the instructor's office to make particular arrangements. See www.uiowa.edu/~sds/ for more information.

Academic Honesty

All CLAS students or students taking classes offered by CLAS have, in essence, agreed to the College's Code of Academic Honesty: "I pledge to do my own academic work and to excel to the best of my abilities, upholding the IOWA Challenge. I promise not to lie about my academic work, to cheat, or to steal the words or ideas of others; nor will I help fellow students to violate the Code of Academic Honesty." Any student committing academic misconduct is reported to the College and placed on disciplinary probation or may be suspended or expelled (CLAS Academic Policies Handbook).

CLAS Final Examination Policies

The final examination schedule for each class is announced by the Registrar generally by the fifth week of classes. Final exams are offered only during the official final examination period. No exams of any kind are allowed during the last week of classes. All students should plan on being at the UI through the final examination period. Once the Registrar has announced the date, time, and location of each final exam, the complete schedule will be published on the Registrar's web site and will be shared with instructors and students. It is the student's responsibility to know the date, time, and place of a final exam.

Making a Suggestion or a Complaint

Students with a suggestion or complaint should first visit with the instructor (and the course supervisor), and then with the departmental DEO. Complaints must be made within six months of the incident (CLAS Academic Policies Handbook).

Understanding Sexual Harassment

Sexual harassment subverts the mission of the University and threatens the well-being of students, faculty, and staff. All members of the UI community have a responsibility to uphold this mission and to contribute to a safe environment that enhances learning. Incidents of sexual harassment should be reported immediately. See the UI Comprehensive Guide on Sexual Harassment for assistance, definitions, and the full University policy.

Reacting Safely to Severe Weather

In severe weather, class members should seek appropriate shelter immediately, leaving the classroom if necessary. The class will continue if possible when the event is over. For more information on Hawk Alert and the siren warning system, visit the Department of Public Safety website.

22c:111 (CS:3820)
Programming Language Concepts
Fall 2014

Lectures

Every Monday, Wednesday and Friday 1.30pm-2.20pm in W228 CB

Instructor

Dr. Christoph Sticksel
Email

Office hours

Every Tuesday 2pm-3.30pm and Friday 10.30am-12noon in 201K MacLean Hall.

Teaching Assistant

Jingwei Ji
Email

Office hours

Every Monday 3pm-5pm and Wednesday 3pm-5pm, 101N MLH