[an error occurred while processing this directive]

Advanced Functional Programming [COMP4132]

Session 1, 2004

Assignments

Assignments are to be submitted via give in the form of three milestones. The deadlines are as follows:

You can earn up to 10 bonus marks for an implementation that exceeds the core functionality of your assignment. However, for every assignment, the details of any bonus part has to be negotiated with me in advance (preferably before Milestone 1 is submitted). You cannot receive any bonus marks until the core functionality is reasonably well implemented.

The late penalty, as already stated on the course introduction page, is as follows: The penalty for late submission of a milestone will be a 4% reduction of the maximum possible mark (for this milestone) per day of being late. No milestone will be accepted later than one week after the deadline.

Milestone 1

Objective: Develop a specification of the software that you develop in the assignment.

The submission format

The specification must be written in HTML. You must submit at least one file called topic-N.html where N is your topic number (these are disambiguated in the topics list, where two people chose the same topic). In addition, you may submit further files named topic-N-EXTRA.html where EXTRA is any non-empty string. These additional pages must be hyperlinked from topic-N.html (please use relative links only). Moreover, you may submit graphics files using the same naming convention as for the EXTRA files, but ending on .png, .jpg, or .gif.

Each specification must contain the name of the author as well as the topic number and a suitable headline at the top of topic-N.html. The specification for each assignment will be linked into the course web page.

Submit using the command

~cs4132/bin/classrun -give Milestone1 topic-N.html ...

The content of the submission

Each submission should be around 1200 words including (a reasonable amount of) HTML tags when run through wc. If the submission contains useful diagrams or graphics, its word count may be lower. In any case, the specification must be technical and to the point. (Just to give you an idea of the expected length, the topics list has close to 1400 words by the above measure.)

The specification must describe what your software will do and outline how it will do it. In particular, I would like to encourage the inclusion of a decomposition of the implementation into modules. Briefly describe the interface of the principal modules and provide type signatures and descriptions for the central functions where possible. (It's no problem if you change these later in your implementation; this is just a first draft.) If you are developing a library, the first version of the library API has to be included in the specification. Don't waste space by reviewing the background or similar things. Just specify your program and outline its implementation.

If you plan to implement a bonus part (to receive bonus marks), the specification must clearly state which features belong to the core and which belong to the bonus part.

Milestone 2

Objective: Develop code implementing the basic functionality of your project.

The content of the submission

You must submit working code. The code should implement between 35% and 50% of the features that you have planned for your Milestone 3 submission, except that no bonus features need to be supported (if you are attempting any bonus features at all).

The submitted code should be reasonably clean and it must be well documented. (I believe that the "I comment my code after I am finished" attitude is fundamentally flawed as a software engineering practice, so I won't accept it as an excuse for insufficiently commented code.)

The submission must also include brief build instructions and ideally a makefile that automates the build process.

The submission format

Due to the different structure of individual submissions, we will standardise on gzipped tar files. Please include all source files, documentation, and make files into a file topic-N.tar.gz and submit using

~cs4132/bin/classrun -give Milestone2 topic-N.tar.gz

Milestone 3

Objective: Develop code implementing the full functionality of your project.

The content of the submission

You must submit working code as well as a summary (about 600 words) of the main problems and achievements. The summary should describe which parts of your specification (as submitted for Milestone 1) you actually implemented and, for those parts that you didn't implement, it must explain why those parts weren't implemented. Moreover, you should list the main challenges that you faced during your work at the assignment and describe all features that are implemented in an effort to score bonus marks.

The submitted code must be clean and well documented. Where your code is based on existing code, you should clearly indicate which portions of the code are yours and which have been derived from other sources.

The submission must also include brief build instructions and ideally a makefile that automates the build process.

The submission format

Due to the different structure of individual submissions, we will standardise on gzipped tar files. Please include all source files, documentation, and make files into a file topic-N.tar.gz and submit using

~cs4132/bin/classrun -give Milestone3 topic-N.tar.gz
[an error occurred while processing this directive]