Compilers

OCaml Warm-Up

Due on Monday, January 23rd at 11:59 PM. This is an individual lab. You are to complete this lab on your own, although you may discuss the lab concepts with your classmates. Remember the Academic Integrity Policy: do not show your code to anyone outside of the course staff and do not look at anyone else’s code for this lab. If you need help, please post on the Piazza forum or contact the instructor. If you have any doubts about what is okay and what is not, it’s much safer to ask than to risk violating the Academic Integrity Policy.

Overview

This lab will serve as an introduction to OCaml. You will write a series of functions and other snippets of code designed to familiarize you with the language. This will also ensure that your environment is prepared so you don’t have trouble in later assignments.

Getting Started

First and foremost, you must configure OCaml. Please note: your assignment submissions must work on the department machines to receive credit. The configuration guide linked here may assist you in working on your own computer, but the department lab computers will be used as the standard for the course.

After getting OCaml set up, make sure you have a comfortable development environment. Help in setting up an environment can be found here. It’s possible to get through this course with a basic text editor, but there are much better tools to use and you want your environment doing as much work for you as possible!

Working on the Lab

Once you have all of this working, you’ll need to check out your assignment. Assignments in this course will be distributed and submitted via the Swarthmore GitHub Enterprise instance. If you have never used the Swarthmore GitHub before, you should follow Tia Newhall’s GitHub Setup Guide. If you have taken CS31 or CS35 recently, you shouldn’t need to do this.

Once everything is configured, you can check out your assignment using the following command, replacing <username> with your Swarthmore username:

git clone github.swarthmore.edu:cs75-s17/ocaml1-<username>

Your job in this assignment is to open each of the .ml source files in your repository and complete the implementation tasks within. There are several files and you are encouraged to complete them in the following order:

  1. helloWorld.ml
  2. functions.ml
  3. dataTypes.ml
  4. linkedLists1.ml
  5. linkedLists2.ml
  6. tests.ml

Throughout these files, there are several calls to failwith using a string starting with “TODO”; there are also comments containin the string “TODO”. Your assignment will be complete when every one of these TODOs has been replaced with appropriate code.

It may take you a while to become accustomed to a new language, so be patient with yourself. You may wish to keep the OCaml Transition Guide open as you work on the assignment so you can use it to help you make the shift from the languages you know to OCaml.

As a clarification for those who may already know or choose to explore the features of the OCaml language: you are not permitted to use any of the following when you are completing your assignment:

If you don’t know what the above means, don’t worry! Everything you learned in lecture is fine to use in this assignment.

Submitting

To submit your lab, just commit and push your work. The most recent pushed commit as of the due date will be graded. For more information on when assignments are due, see the Policies page.

If You Have Trouble…

…then please contact your instructor! Piazza is the preferred method, but you can reach out via e-mail as well. Good luck!