Module Specifications

module Assign0 : sig ... end

This assignment is due on Thursday 1/23 by 8:00PM and is not graded. It's a practice run so you can verify that everything is set up correctly on your machine, and you can submit to Gradescope.

module Assign1 : sig ... end

This assignment is due on Thursday 1/30 by 8:00PM. You should put all of your solutions in a file called assign1/lib/assign1.ml. See the file test/test_assign1.ml for example behavior of each function.

module Assign2 : sig ... end

This assignment is due on Thursday 2/6 by 8:00PM. You should put all of your solutions in a file called assign2/lib/assign2.ml. See the file test/test_assign2.ml for example behavior of each function.

module Assign3 : sig ... end

This assignment is due on Thursday 2/13 by 8:00PM. You should put all of your solutions in a file called assign3/lib/assign3.ml. See the file test/test_assign3.ml for example behavior of each function.

module Assign4 : sig ... end

This assignment is due on Thursday 2/20 by 8:00PM. You should put all of your solutions in assign4/lib/assign4.ml. See the file test/test_assign4.ml for example behavior of each function.

module Assign5 : sig ... end

This assignment is due on Thursday 3/6 by 8:00PM. You should put all of your solutions in assign5/lib/assign5.ml. See the file test/test_assign5.ml for example behavior of each function.

module Lab3 : sig ... end

In this lab, we'll be building a TSV reader. This will require us to work with strings and lists. It will also give us an opportunity to do some IO.

module Lab4 : sig ... end

In the previous lab, we built a tool to build structured data (a table) from unstructured data (text in TSV format). In this lab, we'll expand on this idea by building a tool to build hierarchical data (a tree) from text (you may be familiar with file formats like JSON for storing hierarchical data in text) We'll be working with S-expressions, which have also historically been used for the syntax of programming languages, e.g., dialects of LISP.

module Lab5 : sig ... end

Higher-order functions are particularly useful when we have to do a lot of list processing, e.g., for many applications in scheduling. In this lab, we'll be building a toy-version of when2meet, an online tool for determining a meeting time against a collection of potentially conflicting schedules.

module Stdlib320 : sig ... end

The following is the standard library we'll use for the first half of CAS CS 320: Concepts of Programming Languages at Boston University (Spring 2025). It's a very small subset of the OCaml Standard Library with a bit more documentation (it also gives us more control over what functions are "allowed" for assignments). Nearly everything here is also available in the OCaml Standard Library, so check the Stdlib documentation for more information on what you see below.