CMPS 203

Programming Languages

Home | Project | Resources

Home

Lectures: TuTh 1:30-3:05pm, Social Sciences 2, room 71

Instructor:Prof. Cormac Flanagan
Office: Engineering II room 367
Office Hours: Mon 9-10am

Teaching Assistant:Sohum Banerjea
Email: sobanerj@ucsc.edu
Office: Engineering II room 397
Office Hours:
  • Mon 1:00-2:00pm
  • Wednesday 12:00-2:00pm
  • Friday 1:00-2:00pm
  • or by appointment

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 (direct link). If you are authorized you will see a "Download PDF" link under each chapter title. You must click the PDF logo, NOT the title. Or you can download the full book's PDF if you like.

Note the message on the right side of the page that says: "Get a high quality softcover edition for USD 24.99". 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 (~$25-$40 used from amazon).  See preview.   

gratuitous image Types and Programming Languages
Benjamin Pierce, MIT Press, 2002.  
haskell school of expressions The Haskell School of Expression: Learning Functional Programming through Multimedia
Paul Hudak, Cambridge University Press, 2000.  

Grading

You will be evaluated on short summaries of readings (10%), homework assignments (50-60%), a final project (20-30%), and class participation. The homework assignments will often be mathematical in nature, and will also include some small programming assignments.

Late homework has a 20% per week (or portion of week) penalty.

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.

Canvas will list all homeworks, reading assignments, and project due dates.

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 https://ue.ucsc.edu/academic-misconduct.html 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.hs
Authors: Cormac Flanagan and Sohum Banerjea

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

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

Both partners in a pair should submit the program via Canvas. 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.

Canvas allows unlimited resubmissions before the due date.