Meets: Tuesdays & Thursdays 1:30PM - 2:45PM Merkert 130
Instructor: Joseph Tassarotti
- Office Hours: TBA
Teaching Assistant: Brian Ward
- Office Hours: TBA
Canvas — Stdlib — Pervasives — Lib — Manual — OCaml.org — OPAM — Dune — Coding in OCaml — Try OCaml
Week | Mtng | Topic | |
---|---|---|---|
1 | 1 | R 01/28/20 | Introduction and overview; course admin; Review of memory organization & data representation |
- Introduction & background
- Introduction to OCaml
- More OCaml
- Syntax & grammars
- Mercury: parsing; natural semantics & evaluation
- Venus: variables & multiple types; binding & scope; substitution & environments
- Venus evaluation order: call-by-value & call-by-name
- Typing Venus, Type Inference
- Compiling Venus to MIPS
- Earth: Block-Structured recursive functions, structured types
- MiniC: Compiling to MIPS
- Lambda Calculus
- System F; Generics
- Memory Safety, Review & wrap-up
This course has been designated to run in hybrid mode. That means about half the class will attend the Tuesday lecture and the other half of the class will attend the Thursday lecture. Students will be assigned a fixed day of the week to attend. Please only come on the day you are assigned. The lectures will be taped using an in-class camera and then uploaded to Canvas. Students should watch the videos for the days they are not in class. At the beginning of each lecture I will briefly recall what was discussed last time and pause for any questions students might have from the video they watched.
Like most CS courses, CSCI 3366 is very much a "learn by doing" course. Because of the nature of the pandemic and hybrid mode teaching, this year all grades will be determined by problem sets. Grades will be computed on a 120 point scale, over 1 warm-up logistical exercise + 10 planned problem set parts. The points are distributed as follows:
- Join (2 Points) — joining GitHub & the BC-CSCI3366 organization
- Getting Started (6 Points) --- System Config; Review of Sets
- Getting Started with OCaml (10 Points)
- Tokens and Trees (10 Points)
- Grammars & Parsing (12 Points) --- A grammar for Java and a parser for Mercury
- A Call-by-Name Interpreter for Venus (12 Points)
- A Type Checker for Earth (12 Points)
- MiniC Compiler: Name, Unify (14 Points)
- MiniC Compiler: Lift, Infer (14 Points)
- MiniC Compiler: Control (14 Points)
- MiniC Compiler: Codegen (14 Points)
-
Unless specified otherwise, problem sets must be submitted by pushing your repository to GitHub by the deadline. Generally speaking, problem set deadlines will be Tuesdays at 6PM.
-
Late problem sets will be penalized 20% each day.
-
Any violation of the university's policy on academic integrity will result in a failing grade for the course.
This course is self-contained, and there is no required textbook. If you are interested in reading more, Prof. Muller prepared a list of recommendations in previous versions of the course that you can read here.
If you are a student with a documented disability seeking reasonable accommodations in this course, please contact Kathy Duggan, (617) 552-8093,dugganka@bc.edu, at the Connors Family Learning Center regarding learning disabilities and ADHD, or Rory Stein, (617) 552-3470, steinr@bc.edu, in the Disability Services Office regarding all other types of disabilities, including temporary disabilities.