CMPS 203

Programming Languages

Home | Project | Resources

Home

Lectures: TuTh 1:30 - 3:05 Social Sciences 2 Room 075

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

Teaching Assistant: Dustin and Sohum
Email: dustin@soe.ucsc.edu, sobanerj@ucsc.edu
Office: Engineering II room 397
Office Hours:
  • Monday 1-2 BE 121
  • Tuesday 5-6 BE 312 C/D
  • Thursday 4-5 BE 119
  • Friday 11-12 BE 121
  • Or by appointment (emails above)

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 (www.springerlink.com/content/um24t4/) through the Science Library from computers on campus, or through the Library's Off Campus Access.

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 programming assignments.

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 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.

Pair Programming

Collaboration in pairs on the homework is encouraged but not mandatory. You are free to chose your own partner. The only condition is that you should clearly indentify on your submitted homework whom you worked with and the relative level of effort. EG:

---------------------
Program: bar.hs
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.
...
----------------------

To learn about pair programming, please read All I Really Need to Know about Pair Programming I Learned in Kindergarten.

You should also read the pair progamming guidelines and policy for the class. This explains what is considered to be acceptable pair programming and what to do if you have problems with your partner. (Exceptions to the pair programming requirement may be granted in some limited situations.)

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.

Late Submissions

It is possible to submit a homework up to 9 days after the due date but there is a 10% penalty for each day (or portion of a day) late.

Resubmission

Canvas allows unlimited resubmissions before the due date.