CMPS 203
Programming Languages
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: |
|
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
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.