In this course, the bulk of our learning will come from our lab work which will conducted in groups of 2–3. For consistency’s sake, we will maintain the same groups throughout the week with all of the week’s labs due on Saturday.
Because of the interdisciplinary nature of this course, lab will consist of both discussion and programming exercises, so please be prepared to turn in either PDFs (of discussion notes and thoughts) or code as needed. To produce PDFs, I recommend using a shared document service such as Office 365 Word or HackMD that can either output or print to PDF. Someone in your group should take responsibility each day for (a) turning in this document and (b) sending everyone copies of the completed work (if it is not already shared).
Example: Unsoundness of Java’s Type System
During today’s discussion, we will briefly discuss Amin and Tate’s work on showing the unsoundness of Java and Scala’s type systems.
- Nada Amin and Ross Tate. 2016. Java and scala’s type systems are unsound: the existential crisis of null pointers. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). Association for Computing Machinery, New York, NY, USA, 838–848. DOI:https://doi.org/10.1145/2983990.2984004
The bad code snippet introduced in the paper can be found here if you would like to check it out on your own:
In this course, we will use the Haskell programming language as:
- An exemplar of modern programming practices informed directly by programming languages research.
- A case study in the usability of modern development tools.
For this lab, download and complete the following Haskell file with your group:
Turning in a completed copy of your work to Gradescope.