Haskell logo CIS 552: Advanced Programming

Fall 2019

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

Final project

What to submit?

We will look at your github repository for grading. This repository should contain:

  • A README.md 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.

  • A project.cabal file, constructed via cabal init. See the cabal documentation for help. You can use outside libraries in your project as long as you list them in your cabal file. You can also look at the cabal files in the homework assignments.

    cabal new-build should build your project

    cabal new-exec should run your project

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