San José State University
Department of Computer Science
CS 252, Adv. Programming Language Principles, Section 01, Spring 2021

Course and Contact Information

Instructor:

Thomas H. Austin

Office Location:

https://sjsu.zoom.us/j/3796767168?pwd=SzNVOE4zSTNyNHNqR1RhNlJ6cDAwUT09

Email:

thomas.austin@sjsu.edu

Office Hours:

Tuesday/Friday, 11am-noon

Class Days/Time:

Monday/Wednesday 10:30 - 11:45

Classroom:

https://sjsu.zoom.us/j/83769797043?pwd=S3FBalpRNnprNTNYZ2l6cENLUE0zQT09

Prerequisites:

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

 

 

Course Format

Course Web Page

Course materials such as syllabus, handouts, notes, assignment instructions, etc. can be found on my faculty web page at http://www.cs.sjsu.edu/~austin/cs252-spring21/ and on Canvas Leaning Management System course login website at http://sjsu.instructure.com. You are responsible for regularly checking with the messaging system through Canvas to learn of any updates.

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.

Course Learning Outcomes (CLO)

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

  1. Read and write operational semantics
  2. Read and write formal type systems
  3. Write moderately sized Haskell applications
  4. 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, assigned in Cavas

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.

Exams and homework must be done individually. If two students turn in overly similar code, both get a zero, and both may be reported for plagiarism.

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. For labs, you may work with others if you wish. Be forewarned, exam questions are often similar to lab questions. If you do not understand your lab solution, you are not likely to succeed on the exams.

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 Information (Required)

1.     30% -- Homework assignments

2.     20% -- Midterm

3.     20% -- Final

4.     20% -- Project

5.     10% -- Participation (labs and pop-quizzes)

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.

Classroom Protocol

Please show up to class on time. If students arriving late becomes a problem, I will start classes with pop quizzes.

University Policies

Per University Policy S16-9, university-wide policy information relevant to all courses, such as academic integrity, accommodations, etc. will be available on Office of Graduate and Undergraduate Programs' Syllabus Information web page at http://www.sjsu.edu/gup/syllabusinfo/

 

 

CS 252 Advanced Programming Language Principles, Fall 2019, Tentative Course Schedule

Tentative Course Schedule

Week

Date

Topics, Readings, Assignments, Deadlines

1

January 27

Course introduction

2

February 1

Introduction to Haskell

2

February 3

Haskell, continued

3

February 8

Higher order functions

3

February 10

Big-step operational semantics

4

February 15

LaTeX and project overview

4

February 17

Algebraic data types & functors

5

February 22

Applicative functors

5

February 24

Monads

6

March 1

Parser generators

6

March 3

Review session

7

March 8

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

7

March 10

Lambda calculus

8

March 15

Introduction to JavaScript

8

March 17

Scoping in JavaScript

9

March 22

Event-based programming

9

March 24

Macros & Sweet.js

10

March 29

***SPRING BREAK***

10

March 31

***SPRING BREAK***

11

April 5

Type systems and small-step semantics

11

April 7

JavaScript Object Proxies

12

April 12

Simply typed lambda calculus

12

April 14

Introduction to Ruby

13

April 19

Just-in-time (JIT) compilation

13

April 21

Ruby blocks

14

April 26

Language-based security mechanisms

14

April 28

Inform 7

15

May 3

TBD

15

May 5

TBD

16

May 10

TBD

16

May 12

Project presentations

17

May 17

Project presentations

Final Exam

May 25

9:45-noon