CMPS 203

Programming Languages

Home | Schedule and Assignments | Project | Resources

Home

Lectures: TuTh 12:00pm-1:45pm, Earth&Marine B210.

Instructor:Prof. Cormac Flanagan
Office: Engineering II room 367
Office Hours: Wed 10-10:45am

Teaching Assistant:Tim Disney
Email: tdisney@ucsc.edu
Office: Engineering II room 397
Office Hours: Mon and Wed, 12pm-1pm, E2-397, and Thursdays 2-3pm.

Learning Goals

CMPS 203 is designed to enable graduate students to gain a deeper understanding of the theoretical foundations underpinning programing languages. By the end of the quarter, successful course participants will learn enough basic Programming Languages theory and terminology to make papers in this area more approachable, understand how to prove properties of programs, learn to write better programs by exploiting modern language features such as higher-order functions and pattern matching, and understand why different languages and paradigms exist.

Course Prerequisites

The prerequisites for this course are programming and mathematical experience. The ideal programming experience is practical exposure to several different programming languages, such as Scala, Ocaml, Python, Prolog and Java. The ideal mathematical experience is knowledge of mathematical logic and ability to construct rigorous proofs (in particular by structural induction). None of these prerequisites are strict. However, your desire to be exposed to this material is very important. In the past a small number of undergraduates have been able to complete the course.

Textbooks

Required textbook

gratuitous image Semantics with Applications: An Appetizer
by Nielson and Nielson, Springer 2007

Readable online (http://www.springerlink.com/content/um24t4/) through the Science Library from computers on campus, or through the Library's Off Campus Access. If you are authorized you will see a PDF logo under each chapter title. You must click the PDF logo, NOT the title.

Note the message on the right side of the page that says: "Because your library provides access to Springer eBooks, you can have this book delivered to you from SpringerLink for just $24.9 including shipping." When you click on this you find out it is a print-on-demand copy, which may be lower quality than the real paperback. Amazon is higher. The ISBN shown there is 978-1-84628-691-9, but maybe the last digit is 3.

Optional textbooks

gratuitous image The Formal Semantics of Programming Languages: An Introduction
Glynn Winskel, MIT Press, 1993 ($43.45 from amazon).  See preview.   

gratuitous image Types and Programming Languages
Benjamin Pierce, MIT Press, 2002.  

Grading

You will be evaluated on class participation, short summaries of readings, homework assignments, and a final project. The homework assignments will often be mathematical in nature, and will also include some small programming assignments. You will be graded on the top n-1 homeworks. The final project is intended to give hands on experience with the material taught in the course and also to allow you to explore in more depth a topic of your own interest. The final project will involve both writing a paper and giving a short presentation.

Academic Integrity

Any confirmed academic dishonesty including but not limited to copying programs or homeworks or cheating on exams, will result in a failing grade. Presenting work as your own when you did not actually do it is dishonest (academically, professionally and socially) and is called plagiarism. Always attribute (give credit for) anything done by someone else; then you cannot be guilty of plagiarism. Normally it is not necessary to attribute materials provided by the instructor for the class, or contained in assigned reading for the class, when you use them in class work; however, you would need to attribute them if you used them outside the context of the class or for the final project. Permitting another student to copy your work is also academic dishonesty, except as part of a group project. Students are expected to exercise reasonable caution that their own work is not copied improperly by another student. Please go to http://www.ucsc.edu/academics/academic_integrity/ to see the full text of the University's policy on Academic Integrity.

Homework Policy

There will be some homework assignments, often mathematical in nature. Collaboration in pairs on the homework is ok, as long as you clearly identify on your submitted homework whom you worked with, and the relative level of effort. Eg:

---------------------
Program: bar.scala
Authors: Cormac Flanagan and Tim Disney

On this homework, we worked together for 4 hours,
Cormac worked independently for 1 hour,
and Tim worked independently for 2 hours.

...
----------------------

BOTH partners in a pair should submit the program via email to cmps203w11@gmail.com. This is required for two reasons. First, it avoids the "I thought my partner was going to submit it" problem. Second, it facilitates the grading process.

Late submissions: permitted, but there is a 10% penalty for each day (or portion of a day) late.