There are some exciting updates coming out this week actually. The Stanza separate compiler is done and allows for packages to be independently and separately compiled. This reduces compilation times by allowing you to recompile only the packages that have changed. This was a crucial piece of functionality to enable Stanza to be used for large projects.
Thanks for posting your homework solution. Your code is very clean!
I, myself, prefer your solution of using a separate Date struct, but should the need arise in the future, you can specify a list of tuples as "List<[Int, Int, Int]>".