CS 252 – Advanced Programming Languages

Computer Science Department, San Jose State University

Basic Information

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.

Course Information

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

 

Outcomes

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.

Course Requirements

Grading

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

 

Policies

Workload

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.

Academic integrity

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.

Campus policy in compliance with the Americans with Disabilities Act

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.

Recording Lectures

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.