CIS 552: Advanced Programming

Fall 2017

  • Home
  • Schedule
  • Homework
  • Resources
  • Style guide
  • Syllabus

Final project

What to submit?

Upload a zipfile to the course website named project.zip containing:

  • A README file. Give your names, pennkeys, and an overview of the files in your project. Briefly describe each of the main components and the order that they should be read. Also list any additional libraries that your project depends on. (i.e. what should we cabal install.)

  • Main.hs. We should be able to compile it via ghc --make Main.hs (if not, the README should explain.)

  • All other .hs or .lhs source files

  • A directory called extra/ containing any other files that you need

What to expect at the DEMO

Bring your laptop with your project ready to go to the demo.

After you demonstrate the functionality of your project, expect to give answers to the following questions:

  • What are the main modules of your program? Why did you divide them up in this way?

  • Are there any parts of the code that you are particularly proud of? Where did you spend the most time polishing your implementation? What did it look like before? (In preparation for this question, you may want to have the the old version in comments available for comparison.)

  • What parts of your project correspond to something that we talked about in class?

  • Was there any part of your project that you had to scrap and redesign? What didn't work the first time? What was the hardest part to get correct? Why?

  • What sort of testing did you do to verify the correctness of your code? (Unit tests, quickcheck properties, etc.)

  • What is something you would like your program to do but it doesn't do yet? How would you do this extensions?

  • If you reimplemented this project in another language, what language would you choose? What would be easier? What would be more difficult?

  • What did you learn from this project?

Grading

Projects will be graded subjectively, along the axes described in the project rubric, based on the demo and code review. One purpose of the project is to demonstrate how well you learned the course material; so we are not just concerned with whether your project does something cool, but whether it shows off what you have learned this semester.

Design adapted from Minimalistic Design | Powered by Pandoc and Hakyll