San José State University
Department of Computer Science
CS252, Advanced Programming Language Principles, Section 01  

Fall Semester, 2017

Course and Contact Information

Instructor:

Thomas Austin

Office Location:

MH 216

Email:

thomas.austin@sjsu.edu

Office Hours:

Monday/Thursday noon-1pm

Class Days/Time:

Monday/Wednesday 10:30-11:45am.

Classroom:

SC 311

 

Prerequisites:

CS 152 or instructor consent. Familiarity with functional programming is assumed.

 

 

Course Description

(Copied from http://info.sjsu.edu/web-dbgen/catalog/courses/CS252.html). Language design and paradigms, including concepts underlying functional, logic, object-oriented and parallel paradigms. Theoretical foundations, including lambda calculus, denotational and axiomatic semantics. Proofs of program correctness. Programming projects emphasizing different aspects of language design.

Learning Outcomes

Course Learning Outcomes (CLO)

Upon successful completion of this course, students will be able to:

  1. CLO1: Read and write operational semantics
  2. CLO2: Read and write formal type systems
  3. CLO3: Write moderately sized Haskell applications
  4. CLO4: Read and review research papers in the field of programming languages

 

Required Texts/Readings

Textbook

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.

Course Requirements and Assignments

SJSU classes are designed such that in order to be successful, it is expected that students will spend a minimum of forty-five hours for each unit of credit (normally three hours per unit per week), including preparing for class, participating in course activities, completing assignments, and so on. More details about student workload can be found in University Policy S12-3 at http://www.sjsu.edu/senate/docs/S12-3.pdf.

 

This class will involve 5 significant programming assignments, a midterm & a final (no notes), and a final project & presentation.  Lastly, there will be labs for most days of class.

 

For the class project, you may work alone or with a partner at your discretion.  Note that more will be expected of your project if you have a partner.

 

Labs are graded complete/incomplete.  As long as you attempt and submit the lab, you will get full credit.

 

NOTE that University policy F69-24 at http://www.sjsu.edu/senate/docs/F69-24.pdf states that “Students should attend all meetings of their classes, not only because they are responsible for material discussed therein, but because active participation is frequently essential to insure maximum benefit for all members of the class. Attendance per se shall not be used as a criterion for grading.”

Grading Policy

1.     30% -- Homework assignments

2.     20% -- Midterm

3.     20% -- Final (Tuesday, December 15. 9:45-noon)

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

 

Note that “All students have the right, within a reasonable time, to know their academic scores, to review their grade-dependent work, and to be provided with explanations for the determination of their course grades.”  See University Policy F13-1 at http://www.sjsu.edu/senate/docs/F13-1.pdf for more details.

University Policies

General Expectations, Rights and Responsibilities of the Student

As members of the academic community, students accept both the rights and responsibilities incumbent upon all members of the institution. Students are encouraged to familiarize themselves with SJSU’s policies and practices pertaining to the procedures to follow if and when questions or concerns about a class arises. See University Policy S90–5 at http://www.sjsu.edu/senate/docs/S90-5.pdf. More detailed information on a variety of related topics is available in the SJSU catalog, at http://info.sjsu.edu/web-dbgen/narr/catalog/rec-12234.12506.html. In general, it is recommended that students begin by seeking clarification or discussing concerns with their instructor.  If such conversation is not possible, or if it does not serve to address the issue, it is recommended that the student contact the Department Chair as a next step.

Dropping and Adding

Students are responsible for understanding the policies and procedures about add/drop, grade forgiveness, etc.  Refer to the current semester’s Catalog Policies section at http://info.sjsu.edu/static/catalog/policies.html.  Add/drop deadlines can be found on the current academic year calendars document on the Academic Calendars webpage at http://www.sjsu.edu/provost/services/academic_calendars/.  The Late Drop Policy is available at http://www.sjsu.edu/aars/policies/latedrops/policy/. Students should be aware of the current deadlines and penalties for dropping classes.

 

Information about the latest changes and news is available at the Advising Hub at http://www.sjsu.edu/advising/.

Consent for Recording of Class and Public Sharing of Instructor Material

University Policy S12-7, http://www.sjsu.edu/senate/docs/S12-7.pdf, requires students to obtain instructor’s permission to record the course and the following items to be included in the syllabus:

 

·      “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.”

o   It is suggested that the greensheet include the instructor’s process for granting permission, whether in writing or orally and whether for the whole semester or on a class by class basis.

o   In classes where active participation of students or guests may be on the recording, permission of those students or guests should be obtained as well.

·      “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.”

 

Academic integrity

Your commitment, as a student, to learning is evidenced by your enrollment at San Jose State University.  The University Academic Integrity Policy S07-2 at http://www.sjsu.edu/senate/docs/S07-2.pdf 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 Student Conduct and Ethical Development website is available at http://www.sjsu.edu/studentconduct/.

Campus Policy in Compliance with the American Disabilities Act

If you need course adaptations or accommodations because of a disability, or if you need to make 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 at http://www.sjsu.edu/president/docs/directives/PD_1997-03.pdf requires that students with disabilities requesting accommodations must register with the Accessible Education Center (AEC) at http://www.sjsu.edu/aec to establish a record of their disability.


CS 252 Advanced Programming Language Principles, Spring 2016, Tentative Course Schedule

The official schedule is in Canvas at https://sjsu.instructure.com/. 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:

 

 

Tentative Course Schedule

Week

Date

Topics

1

August 23

Course introduction

2

August 28

Introduction to Haskell

2

August 30

Haskell, continued

3

September 4

LABOR DAY – NO CLASS

3

September 6

Higher order functions

4

September 11

GUEST LECTURE – TOPIC TBD

4

September 13

Big step operational semantics

5

September 20

LaTeX and project overview

5

September 25

Algebraic data types & functors

6

September 27

Applicative functors

6

October 2

Monads

7

October 4

Parser generators

7

October 9

Review session

8

October 11

***MIDTERM (tentative date – check Canvas)***

8

October 16

Lambda calculus

9

October 18

Introduction to JavaScript

9

October 23

Scoping in JavaScript

10

October 25

Event-based programming

10

October 30

Macros & Sweet.js

11

November 1

Type systems and small-step semantics

11

November 6

JavaScript Object Proxies

12

November 8

Simply typed lambda calculus

12

November 13

Introduction to Ruby

13

November 15

Just-in-time (JIT) compilation

13

November 20

Ruby blocks

14

November 22

Language-based security mechanisms

14

November 27

TBD

15

November 29

TBD

15

December 4

Project presentations

16

December 6

Project presentations

16

December 11

Final review

Final Exam

December 15

***SCI 311, 9:45-noon***