The following steps should give you the necessary background to begin contributing to the Hazel research project. As you go through these steps, please don't be shy in posting questions to the #learning channel of the Hazel Slack (preferred) or asking Cyrus or another lab member directly.

Programming Background

In order to contribute to the Hazel implementation, you will need to have working knowledge of the OCaml programming language and Reason, which is an alternative syntax for OCaml.

  1. A great resource to start with is Cornell's CS3110 online textbook. Read Chapters 1-5, doing many or all of the exercises.
  2. Read through the Reason Documentation to get an understanding of how to express the same OCaml constructs using the Reason syntax.
  3. Optional: Another great book is Real World OCaml, which you can refer to for an alternative perspective on some the ideas in the above.

Mathematical Background

  1. In order to understand how Hazel works, you will need to read the Hazelnut paper (POPL 2017). Hazelnut is the "core calculus" underlying Hazel. You should start by reading Sec. 1 and Sec. 2, which require only general computer science background.
  2. In order to read Sec. 3 and onwards of the Hazelnut paper, you will need some background on basic type theory. If you have taken EECS 490, that background is sufficient. If not, you should go through the first half of EECS 490, watching the lectures and doing Assignments 1-6. Ask Cyrus to give you access to the Drive with the videos and assignments + the Learn OCaml platform, where you can get autograded feedback on the assignments.
  3. Optional: You may also want to pick up the book Practical Foundations for Programming Languages (2nd ed.) by Robert Harper and/or Types and Programming Languages by Benjamin Pierce.
  4. After you have the background above, go ahead and finish reading the Hazelnut paper in detail.
  5. If you would like to understand the live programming features of Hazel, you should read the Hazelnut Live paper (POPL 2019) after finishing the Hazelnut paper (POPL 2017).

DIY Hazelnut

After or as you learn OCaml and read through the Hazelnut paper, you can work through diy-hazelnut, which is a template for you to implement Hazelnut yourself following the rules in the paper.

Get Going on a Starter Project

Once you have finished diy-hazelnut, you are ready to take on a starter project! See the page below for more details:

Hazel-Related Project Ideas