Your final project will involve presenting a topic to your classmates, creating a written tutorial (to augment presentation materials), designing a homework problem and providing a solution. To prepare these materials you will be allowed to work in groups. Students will be required to furnish solutions to all of those homework problems with a due date at 11:59pm, Monday Dec 18. These solutions must be completed individually.


Groups and collaboration

To prepare the presentation, tutorial, and homework material you may work in groups of up to five people. There will be no special circumstances where more than five-person groups will be allowed. The group makeup is up to you, however I reserve right to re-arrange things to create more balance/diversity if necessary. Everyone must contribute substantively to the preparation of the material. The group must create a new repository on Bitbucket, and give the instructor access. The maintenance of this repository will be evaluated, as well as the level of contribution of each members as indicated by commit logs, etc.. You must set up the repo correctly from the start so that commit messages are accurately attributed to members’ names for later inspection.


  • Presentation: You must prepare approximately one hour of presentation complete with slides and R code, similar to the format in other class lectures. Live coding demonstrations are expected. Not all group members are required to speak during the presentation, however tag-teaming is encouraged.
  • Tutorial: You must provide a tutorial with background and examples using (working) code, annotated with appropriate verbal explanation and example output. There are no length limits, but you will be judged on completeness, clarity of presentation, etc. Your presentation cannot simply be a verbal expansion of your class presentation, although that is a good starting point. It must contain novel additional topics and examples.
  • Homework: You must create a problem of length similar to earlier class homework problems which allow other students to work with the new material in a challenging yet instructive setting. A complete solution and rubric must be provided. You must allow time to work with the instructor to iterate on the problem specification, and its solution, before the assignment is officially “set”.

Topics and scheduling

You may present on any topic you like, however it must be approved by the instructor. Pre-approved topics, which would be of great interest, include:

  • ggplot2/plotly (claimed for 5 Dec)
  • dplyr/tidyr
  • regular expressions (sed and awk) and processing text data (claimed for 12 Dec)
  • distributed computation & storage: Amazon EC2/S3, map-reduce, hadoop/spark (claimed for 30 Nov)
  • GPU libraries for R (claimed for 28 Nov)
  • Shiny and shinyapps.io (claimed for 7 Dec)

Two groups may not choose the same topic. To fully claim a topic you must also commit to group membership and a presentation date, and those dates will only be assigned in chronological order. The dates are Nov 28, Nov 30, Dec 5, Dec 7, Dec 12. For example, the first group to claim a topic must also commit to a Nov 28 presentation. All materials must be delivered on the date of the presentation, including tutorial, homework and solution. Once a topic/date is claimed (along with group membership) none of those can be changed.


Although presentation preparation is collaborative, solutions to the homework questions is not. Students must work individually, and submit solutions in the usual way (on Canvas, and via bitbucket). Each homework problem will be weighted equally, and you must submit a solution for the problem your group was responsible for (easy points).


As promised on the syllabus, this “final project” will be worth 25% of your grade. That will be split equally between the group presentation and other materials, and the individually submitted solutions. There will of course be some nuance to the group grading. If it is judged that all members contributed equally, then everyone will get the same score as other members. If effort was lopsided, then shirkers will receive fewer points than other members of the group.