• Exercises: 65%
  • Final Project: 35%


This is a hands-on course, and the majority of your grade will be determined by small regularly-assigned projects, which mostly involve writing some code. These assignments will take more than one day to complete. That is why most assignments are given well in advance of their due date (usually two weeks). I STRONGLY recommend that you begin working on an assignment the first week it is made available, once you finish with the previous one. If you wait until the due date before beginning work on an assignment, you will struggle to complete it in time. Planning ahead can save you a lot of heartache in this course. If you are frequently having trouble with staying on top of the assignment deadlines, then please contact the professor as soon as possible to work on a solution before it becomes a problem.

There is ample opportunity to collect extra credit points throughout the course by completing bonus exercises given out in the regular assignments. If you complete a bonus exercise and want it to be graded for potential extra credit, be sure to list which bonus exercises you have completed in your submission, otherwise they may not be graded. To list the bonus exercises included in your submission, include a file named extracredit (such as or extracredit.txt) which names the bonus sections and/or bonus exercises you completed.

Assignments will be turned in online, via Blackboard. If there are multiple files to turn in (such as a directory of code files), turn in a single archive that includes all the files you wish to turn in. If there is a written portion to the assignment, then turn in your writing in a portable document file format (e.g. pdf, txt, markdown). Microsoft Word and other similar word processor formats should be converted to a portable format for turning in.

All assignments must be completed and turned in on-time by their due date. Unless otherwise specified, the time of all due dates is the beginning of class on that day. Late assignments, which not been granted an extension in advance of the original due date, will not be accepted. Extensions to due dates may be granted at the discression of the instructor if a student has circumstances (such as illness) that would reasonably interfere with the on-time completion of an assignment. To ensure that all students can be fairly accomodated, extensions must be requested before the due date in question.


    Students are welcome discuss the exercises with one another. However, each student is responsible for their own work and completing all exercises independently. Copying another students solutions (either by sending files directly or copying down from a screen), or from some other source (e.g. the internet), and turning them in as their own work constitutes plagiarism, and will result in a failing grade. What specific actions constitute plagiarism is left to the discression of the instructor, and will not be fully enumerated here. If in doubt, please ask before doing something that seems fishy.

    That said, there are many instances where using a library found in the standard library or Hackage is permitted or even expected. Realistic software is not an island, and neither are you. In general, if an exercise asks you to write some particular function piece of code, then you should write it yourself. If some details required to implement that code are left unspecified (e.g. sorting a list), then it is okay to use a standard or Hackage library for that part. If there is any doubt about whether or not it is okay to use a library for implementing part of an exercise, please ask.