San José State University
Instructor: |
Thomas Austin |
Office Location: |
MacQuarrie Hall 216 |
Telephone: |
408-924-7227 |
Email: |
thomas.austin@sjsu.edu |
Office Hours: |
Mondays, noon-1pm Thursdays, 10-11am Other times by appointment |
Class Days/Time: |
Monday/Wednesday 1:30-2:45 (Section 03), 3:00-4:15 (Section 04) |
Classroom: |
MH 223 |
Prerequisites: |
CS 151 or CMPE 135 (with a grade of "C-" or better) |
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/cs152-fall19 and Canvas (http://sjsu.instructure.com/). You are responsible for regularly checking with the messaging system through Canvas to learn of any updates.
(Copied from http://info.sjsu.edu/web-dbgen/catalog/courses/CS152.html) Programming language syntax and semantics. Data types and type checking. Scope, bindings, and environments. Functional and logic programming paradigms, and comparison to other paradigms. Extensive coverage of a functional language.
Upon successful completion of this course, students will be able to:
1. Understand programming language design.
2. Achieve competence in a functional programming language.
Upon successful completion of this course, students will be able to:
1. Have a basic knowledge of the history of programming languages.
2. Have a basic knowledge of the procedural, object-oriented, functional, and logic programming paradigms.
3. Understand the roles of interpreters, compilers, and virtual machines.
4. Critique the design of a programming language.
5. Read and produce context-free grammars.
6. Write recursive-descent parsers for simple languages, by hand or with a parser generator.
7. Understand variable scoping and lifetimes.
8. Write interpreters for simple languages that involve arithmetic expressions, bindings of values to names, and function calls.
9. Understand type systems.
10. Understand the implementation of procedure calls and stack frames.
11. Produce programs in a functional programming language in excess of 200 LOC.
"Teach Yourself Scheme in Fixnum Days", Dorai Sitaram, http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html.
Additional readings TBD.
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.
Homework assignments consist of 2 programming assignments in Scheme, one in JavaScript, and one in Prolog. There is also a group project building an interpreter using ANTLR and Java.
There is a final and a midterm.
In-class labs are used as the basis for your participation grade. Any question in the lab is fair game for the exams.
See Canvas at http://sjsu.instructure.com/ for more details.
“Success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of 45 hours over the length of the course (normally three hours per unit per week) for instruction, preparation/studying, or course related activities, including but not limited to internships, labs, and clinical practica. Other course structures will have equivalent workload expectations as described in the syllabus.”
The final exam is worth 20% of the total grade for the class. It is a written exam. Paper will be provided. Bring something to write with.
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 |
Attendance is recommended, but it is not mandatory, except for exam dates. Cell phone use is prohibited. Punctuality is appreciated.
Bring your laptop to class.
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/”
Please note that the schedule is subject to change with fair notice, which will be posted through Canvas at https://sjsu.instructure.com.
Week |
Date |
Topics, Readings, Assignments, Deadlines |
1 |
8/21 |
Course introduction |
2 |
8/26 |
Scheme |
2 |
8/28 |
Syntax & Semantics, and Language Design Criteria |
3 |
9/2 |
**LABOR DAY – NO CLASS** |
3 |
9/4 |
Higher order functions – map and filter |
4 |
9/9 |
Higher order functions – fold |
4 |
9/11 |
Operational semantics |
5 |
9/16 |
Closures and scoping |
5 |
9/18 |
Programming contracts |
6 |
9/23 |
Macros |
6 |
9/25 |
Scheme review |
7 |
9/30 |
JavaScript |
7 |
10/2 |
Event-based programming |
8 |
10/7 |
Scoping in JavaScript, JSLint, and TypeScript |
8 |
10/9 |
ECMAScript 6 and metaobject protocols |
9 |
10/14 |
ANTLR & Syntax |
9 |
10/16 |
Review for midterm |
10 |
10/21 |
**MIDTERM EXAM** |
10 |
10/23 |
Prolog |
11 |
10/28 |
Resolution and unification, the cut operator |
11 |
10/30 |
Lists in Prolog and debugging Prolog |
12 |
11/4 |
Ruby |
12 |
11/6 |
Ruby blocks |
13 |
11/11 |
**VETERAN’s DAY – NO CLASS** |
13 |
11/13 |
Virtual Machines |
14 |
11/18 |
Dynamic code evaluation, taint analysis, and information flow analysis |
14 |
11/20 |
LaTeX and domain specific languages |
15 |
11/25 |
Inform 7 |
15 |
11/27 |
**NO CLASS** |
16 |
12/2 |
Python and IDE plugins |
16 |
12/4 |
Advanced Java features, wrap-up |
17 |
12/9 |
Review for final |
Final Exam |
12/13 12/17 |
12:15pm-2:15pm (Section 03) 12:15pm-2:15pm (Section 04) |