Lab 01: OCaml Introduction
Due on Thursday, September 11th 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 work to anyone outside of the course staff and do not look at anyone else’s work for this lab. If you need help, please post on Courselore or contact the instructor. If you have any doubts about what is okay and what is not, it’s much safer to ask and learn than it is to guess!
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 it would be incredibly inefficient. 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 make sure to follow the steps in the department’s GitHub Setup Guide. If you’ve already taken courses using the Swarthmore GitHub, you probably won’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 git@github.swarthmore.edu:cs73-f25/lab01-<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:
helloWorld.ml
functions.ml
linkedLists1.ml
linkedLists2.ml
wardrobe.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 TODO
s has been replaced with appropriate code. As you complete these tasks, you should also add appropriate unit tests to the tests.ml
file to make sure that the code you have written works correctly.
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:
- Mutation (e.g.
ref
cells) - Imperative loops (
for
andwhile
) - Standard library modules (except
Stdlib
or where otherwise noted)
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
It is not enough to push your work. In your repository, you will find a Python script called submit.py
. In order to submit your lab assignment, it should be sufficient to run that script by typing python3 submit.py
in your terminal. For this script to work correctly, you must have committed all uncommitted files in your repository and pushed your work so that your repository is in sync with your GitHub remote repository.
The aforementioned Python script is designed to create a Git tag: a name for a specific commit in your repository. (The script also performs a series of checks to help ensure that the tag you create contains what you likely think it contains.) The tag will be named using the words “submission”, the name of your assignment, and a version number. Your instructor will know that you have submitted your work because this tag will appear in your repository. If you need to resubmit your work to correct changes after receiving a grade, you can simply create new commits and then create another tag (preferrably with submit.py). At any given time, only your most recent outstanding submission will be graded.
Lab Questionnaire
In addition to completing the lab itself, you’ll also need to complete a questionnaire describing your experience in the lab. Under most circumstances, this questionnaire will take only about a minute to complete and is part of your participation grade. Please make sure to do this; the information is useful to develop the course and the credit you get is basically free!
If You Have Trouble…
…then please contact your instructor! Courselore is the preferred method, but you can reach out via e-mail as well. Good luck!