yves12 / s21

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CSCI 3366 Programming Languages

Spring 2021


Meets: Tuesdays & Thursdays 1:30PM - 2:45PM Merkert 130

Instructor: Joseph Tassarotti

  • Office Hours: TBA

Teaching Assistant: Brian Ward

  • Office Hours: TBA

CanvasStdlibPervasivesLibManualOCaml.orgOPAMDuneCoding in OCamlTry OCaml


Schedule

Week Mtng Topic
1 1 R 01/28/20 Introduction and overview; course admin; Review of memory organization & data representation


Planned Schedule of Topics

  1. Introduction & background
  2. Introduction to OCaml
  3. More OCaml
  4. Syntax & grammars
  5. Mercury: parsing; natural semantics & evaluation
  6. Venus: variables & multiple types; binding & scope; substitution & environments
  7. Venus evaluation order: call-by-value & call-by-name
  8. Typing Venus, Type Inference
  9. Compiling Venus to MIPS
  10. Earth: Block-Structured recursive functions, structured types
  11. MiniC: Compiling to MIPS
  12. Lambda Calculus
  13. System F; Generics
  14. Memory Safety, Review & wrap-up

Logistics

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.

Grading

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:

  1. Join (2 Points) — joining GitHub & the BC-CSCI3366 organization
  2. Getting Started (6 Points) --- System Config; Review of Sets
  3. Getting Started with OCaml (10 Points)
  4. Tokens and Trees (10 Points)
  5. Grammars & Parsing (12 Points) --- A grammar for Java and a parser for Mercury
  6. A Call-by-Name Interpreter for Venus (12 Points)
  7. A Type Checker for Earth (12 Points)
  8. MiniC Compiler: Name, Unify (14 Points)
  9. MiniC Compiler: Lift, Infer (14 Points)
  10. MiniC Compiler: Control (14 Points)
  11. MiniC Compiler: Codegen (14 Points)

Notes:

  • 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.

Textbooks

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.

Disabilities

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.

About