Computer Science Department, San Jose State University
CS 252 – Advanced Programming Languages, Fall 2014
MacQuarrie Hall room 222, Tuesday/Thursday 1:30-2:45 pm.
Instructor: Tom Austin
Email: thomas.austin@sjsu.edu. (Please put "CS252" at the beginning of the subject line.)
Office: MH 216
Office hours: Tuesday 10:30-11:30, Thursday 3:30-4:30, or by appointment.
Catalog description: http://info.sjsu.edu/web-dbgen/catalog/courses/CS252.html
Detailed description: This course studies different aspects of programming language design and paradigms, including both theoretical foundations (operational semantics, lambda-calculus, formal proofs) and practical/cutting-edge concerns (concurrency mechanisms, metaprogramming, and security controls). We will use a variety of languages, with a particular emphasis on Haskell.
Prerequisites: CS 152 or instructor consent. Familiarity with functional programming is assumed.
Required materials: We will use a variety of online resources, including:
� "Learn You a Haskell for Great Good", available at http://learnyouahaskell.com/.
� "Eloquent JavaScript", available at http://eloquentjavascript.net
� More references TBD.
Other resources: Additional/supplemental materials will be assigned and posted to the schedule on Canvas. Check the schedule frequently for changes.
Schedule: Available through Canvas. The schedule will be adjusted throughout the course. It is your responsibility to check the schedule before each class. However, here is a rough outline of what we will cover (not necessarily in chronological order, and subject to change):
� With Haskell
o Type classes
o Module systems
o Parser generators
o Functors
o Monads
o Zippers
� With Ruby and JavaScript
o Metaobject protocols
o Proxy objects
o Macros
o Event based programming
� Domain specific languages
o R (statistics)
o LaTeX (typesetting)
� Formal methods
o Operational semantics
o Lambda calculus
o Type systems
o Progress & Preservation proofs
After completing this course, you will be understand many of the core issues involved in programming language design, and the trade-offs involved in choosing between different language features.
1. 30% -- Homework assignments
2. 20% -- Midterm
3. 20% -- Final (Tuesday, December 16 12:15-14:30)
4. 20% -- Project
5. 10% -- Participation (labs)
Assignments are due by 11:59 PM Pacific Time on the specified day. Late homework assignments will not be accepted.
Nominal grading scale:
Percentage |
Grade |
92 and above |
A |
90 - 91 |
A- |
88 - 89 |
B+ |
82 - 87 |
B |
80 - 81 |
B- |
78 - 79 |
C+ |
72 - 77 |
C |
70 - 71 |
C- |
68 - 69 |
D+ |
62 - 67 |
D |
60 - 61 |
D- |
59 and below |
F |
Success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of forty-five hours over the length of the course (normally 3 hours per unit per week with 1 of the hours used for lecture) for instruction or preparation/studying or course related activities including but not limited to internships, labs, clinical practica. Other course structures will have equivalent workload expectations as described in the syllabus.
Your own commitment to learning, as evidenced by your enrollment at San Jose State University, and the University's Academic Integrity Policy requires you to be honest in all your academic course work. Faculty members are required to report all infractions to the Office of Student Conduct and Ethical Development. The policy on academic integrity can be found at http://sa.sjsu.edu/student_conduct.
If you need course adaptations or accommodations because of a disability, or if you need special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible, or see me during office hours. Presidential Directive 97-03 requires that students with disabilities requesting accommodations must register with DRC to establish a record of their disability.
Common courtesy and professional behavior dictate that you notify someone when you are recording him/her. You must obtain the instructor's permission to make audio or video recordings in this class. Such permission allows the recordings to be used for your private, study purposes only. The recordings are the intellectual property of the instructor; you have not been given any rights to reproduce or distribute the material.
Course material developed by the instructor is the intellectual property of the instructor and cannot be shared publicly without his/her approval. You may not publicly share or upload instructor generated material for this course such as exam questions, lecture notes, or homework solutions without instructor consent.