Every assessment in EEB 603 has an evaluation form setting out the criteria I use and how the points are allocated. All of them are published here, in advance.
Please write with the relevant form open. These forms are not something applied to your work after the fact — they are a description of what good work looks like in this course. If anything in them is unclear, or if you think your project does not fit the criteria as written, come and talk to me before the deadline rather than afterwards.
Deadlines for each assessment are on the course schedule; the rules on late work and firm deadlines are in the syllabus.
The six assessments in this course form two arcs of three, each worth 300 points — half the course each. Each arc builds on itself, and the second arc repeats the shape of the first on work of your own.
The two arcs have exactly the same shape — a small piece of work, a large one, and a piece of communication (50, 150 and 100 points respectively). The first arc rehearses on shared material; the second applies the same sequence to your own research.
| Assessment | Points | Learning outcomes | Evaluation form |
|---|---|---|---|
| ARC 1 — Bioinformatics for Reproducible Science (PARTS 1–2) — 300 points | |||
| Participation and engagement | 50 | 1, 2, 3, 6 | See the syllabus |
| Bioinformatics tutorial (written) | 150 | 4, 5, 6 | Rubric (pdf) |
| Teaching the tutorial | 100 | 6, 7 | Rubric (pdf) |
| ARC 2 — Individual Project (PART 3) — 300 points | |||
| Project proposal | 50 | 1, 2, 3, 4 | Rubric (pdf) |
| Final report | 150 | 1, 2, 3, 4, 5 | Rubric (pdf) |
| Oral presentation | 100 | 3, 4, 7 | Rubric (pdf) |
300 points, across PARTS 1 and 2.
This arc is about acquiring the theory and the computational tools of reproducible science, and then proving you have them in the most demanding way there is: by teaching them to somebody else. It runs in three steps — you learn the material in class, you build a tutorial from it, and you teach that tutorial to your peers.
The three components are deliberately sequential. What you learn in PART 1 is what your tutorial is built from; the tutorial you write is what you then teach. Falling behind in the first makes the next two harder.
Learning outcomes 1, 2, 3 and 6.
Attendance and engagement in PARTS 1 and 2. PART 1 is where the reproducibility crisis, open science, the CARE principles and data management are studied through discussion of the assigned readings — which is where you first meet outcomes 1–3. You will meet them again in the individual project, where you are asked to apply that understanding to research of your own. Class time is also where I teach you how to build a tutorial in the first place — how to scope it, structure the exercises, and pitch it so your peers can finish it in two sessions — which is why outcome 6 begins here rather than at the point you start writing. PART 2 is then where you and your peers teach one another, and a laboratory cannot be taught to an empty room.
This component has no separate rubric; the criteria, including what counts as being present, are set out in full in the syllabus.
Learning outcomes 4, 5 and 6.
You design a tutorial on a chapter from PART 2 of the course, written in knitr/rmarkdown, built around exercises that give your peers a defined set of computational skills. This is normally a group assignment — see Group Work and How It Is Graded.
The rubric covers the introduction and theoretical background, learning outcomes, package requirements, dataset description, content quality, code quality, structure, references, and submission protocol.
Firm deadline: your tutorial must reach me one week before you teach it — your peers need that week to install packages and prepare. See the schedule for your chapter’s dates.
Every tutorial has its own folder on the course Google Drive. The group teaching a chapter uploads its material there one week before the class; everybody else downloads it and works through it before that class, which is the point of the one-week deadline.
| Chapter | Folder | Taught in class |
|---|---|---|
| Chapter 9 | Tutorial material | 10 and 12 November |
| Chapter 10 | Tutorial material | 17 and 19 November |
| Chapter 12 | Tutorial material | 1 and 3 December |
| Chapter 11 | Tutorial material | 8 and 10 December |
The order is 9, 10, 12, 11, not numerical. Dates are confirmed in the schedule, which is the authority if these ever disagree.
Bioinformatics Tutorial rubric (pdf)
Write it as a protocol. The course chapters are deliberately built the same way: an explanation of why the skill matters, then a numbered step-by-step procedure, then a checkpoint so the reader can confirm it worked. You are asked to use that format. See How These Tutorials Are Written for what it looks like from the inside.
Learning outcomes 6 and 7.
You teach your tutorial to the class over two laboratory sessions, guiding your peers through the exercises and troubleshooting as they work. This is the communication step of the first arc: explaining a technical workflow clearly enough that somebody else can run it is a different skill from being able to run it yourself.
The rubric covers presentation quality, explanation of key concepts, guidance through the tutorial, the exercises you developed, engagement and facilitation during the session, and professionalism.
300 points, across three stages.
This arc applies the same sequence to your own research: you plan a piece of reproducible work, you build it, and you communicate it. Where the first arc rehearses on shared course material, this one is yours — your thesis project, or a published study if your topic is not yet defined.
All three stages are assessed on their own form, and each form records the combined total across all three, so you can always see where you stand in the arc as a whole.
Learning outcomes 1, 2, 3 and 4.
A short proposal, due about a third of the way through the semester, setting out what you intend to do. I read every proposal and return written feedback, so that you can act on it while there is still most of a semester left.
Two things are asked of this proposal beyond a conventional project plan:
Keep the proposal under 1000 words, counting your prose only: code, output, figure captions, the bibliography and the appendices do not count. It is a limit rather than a target, and a concrete 800 words is worth far more than a padded 1500.
That limit used to be stated as two pages. It no longer is, because you are submitting an R Markdown document that knits to HTML, and an HTML page has no page breaks to count. So instead, let the document count its own words.
# References header.Insert
button.{r wordcount, echo = FALSE}, where:
r comes first, and is not optional. It tells knitr that the chunk contains R code. Leave it out, writing {wordcount, echo = FALSE}, and knitting fails with Unknown language engine 'wordcount': knitr reads the first word inside the braces as the name of a programming language, and there is no language called wordcount.wordcount is the label, so the chunk has a name you can find again.echo = FALSE keeps the counting code out of the knitted document. The count is a measurement of your proposal, not a part of it, and nobody needs to read the code that produced it.eval = FALSE. This chunk has to run, and eval is TRUE by default, so leaving it out is exactly what you want.n_words instead of printing it, so the chunk itself produces no visible output.###
# Count the prose words in this document
# Excludes the YAML header, code chunks, inline code, HTML and citation keys
###
# knitr::current_input() returns the name of the file being knitted, so the
# next line reads THIS document's own source. That is why the snippet needs no
# filename: it works in anybody's proposal, whatever they called it.
#
# NOTE: this only works while knitting. Outside a knit there is no "current
# input", so current_input() returns NULL and you get the error
# 'con' is not a connection. Do not test this chunk with the Run button:
# knit the document instead.
src <- readLines(knitr::current_input(), warn = FALSE)
# Drop the YAML header
y <- grep("^---\\s*$", src)
if (length(y) >= 2) src <- src[-(y[1]:y[2])]
# Drop fenced code chunks, fences included
fence <- grepl("^\\s*```", src)
src <- src[!(cumsum(fence) %% 2 == 1 | fence)]
# Drop inline code, HTML tags, citation keys and Markdown punctuation
txt <- paste(src, collapse = " ")
txt <- gsub("`r [^`]*`", " ", txt)
txt <- gsub("<[^>]*>", " ", txt)
txt <- gsub("\\[@[^]]*\\]", " ", txt)
txt <- gsub("[#*_>|`]", " ", txt)
# Store the count, do not print it
words <- strsplit(trimws(txt), "\\s+")[[1]]
n_words <- length(words[nzchar(words)])
This proposal contains `r n_words` words.💡 Why inline code rather than letting the chunk print
A chunk that prints its result gives you ## [1] 842, which looks like debugging output in the middle of a proposal. Inline code puts the number inside a sentence you wrote, which is what you want in a document somebody is going to read.
It is also the honest version of the thing this course keeps arguing for: the number is recomputed from your text every time you knit, so it cannot drift out of date the way a figure typed by hand would.
Where it goes. Upload your submission to our course Google Drive, in Individual_reports > Individual_projects > Project_proposal.
Hand in a folder, not a single file. Inside Project_proposal, create a folder named with your own first and last name, for example Jane_Doe, and put inside it everything needed to knit the proposal on another machine:
.Rmd);.bib) and the citation style file (.csl);include_graphics(), in the subfolder your paths point at.The test is simple: could I knit it without asking you for anything? That is the same test as the rubric’s reproducible document criteria, and the same one your bioinformatics tutorial has to pass. A source that knits on your laptop but not in your submitted folder usually has one cause: a file that lives somewhere outside the folder, which you can find by moving the folder somewhere else and knitting again.
Submit the source, not an export. A PDF or a Word file cannot be knitted, so it cannot earn the marks reserved for the proposal being a working reproducible document.
📝 Open to everyone, and entirely optional
Every proposal has been graded and every evaluation returned, and you now have the opportunity to revise and resubmit this assignment to earn up to the full 50 points.
To do so, address the comments I provided and implement the suggested changes. You should also complete the rubric, indicating how you addressed each section and providing a brief self-evaluation, including how many points you would award yourself for each section.
If you choose to take advantage of it, submit your revised proposal on our course Google Drive, along with your completed self-evaluation rubric, by Thursday, 22 October at 5 PM MT.
I encourage you to take advantage of this opportunity to learn from the feedback and improve your work.
What to hand in. Two things, in the same First_Last folder you used before, in Individual_reports > Individual_projects > Project_proposal:
How the revised mark works. The score from your revised proposal replaces your original score, so you can only gain. The rubric and its criteria are unchanged, which is why filling it in yourself is part of the exercise: by the end of it you will have read the standard your report will be judged against from the inside.
The 1000-word limit still applies. If the feedback asks you to add a section, you may need to trim elsewhere to make room. That is deliberate: concision is one of the criteria, and deciding what to cut is part of the work.
Learning outcomes 1, 2, 3, 4 and 5.
The full reproducible workflow, tailored to your thesis project or a selected publication. The rubric accommodates both full projects and pre-studies for students who do not yet have data.
The rubric covers framing of the scientific problem, use of data sources, the data management workflow, reproducible code and computational workflow, reproducibility and transparency, citations, and writing quality.
Deadline: accepted up to one week late, and no later — see the Late Work Policy.
Learning outcomes 3, 4 and 7.
The third and final stage. An 8-minute presentation of your project during the final week, to an audience of scientists who are not specialists in your area. A central goal is to show how you applied the tools and practices of reproducible science.
The rubric covers topic introduction, scientific content, reproducible science practices, slide design, oral delivery, and accessibility to a broad audience. A fifth of the marks go to Reproducible Science Practices — the tools and workflow you used, and how transparent and replicable they are — so this is not only a test of how well you speak.
Every Course Learning Outcome is assessed somewhere, and Table 4.1 shows where. If you want to know why a particular assignment asks what it asks, this is the answer.
| # | Learning outcome | Where it is assessed |
|---|---|---|
| 1 | Explain the evidence for, and causes of, the reproducibility crisis; distinguish reproducibility from replicability. | Participation (PART 1 discussion); project proposal; final report |
| 2 | Evaluate the factors that break reproducibility in Ecology, Evolution & Behavior, and identify strategies that mitigate them. | Participation (PART 1 discussion); project proposal; final report |
| 3 | Apply open science, data management and the CARE principles across the full data life cycle. | Participation; project proposal; final report; oral presentation |
| 4 | Build reproducible workflows using R, RStudio, R Markdown and knitr. | Bioinformatics tutorial; project proposal; final report; oral presentation |
| 5 | Use version control with Git and GitHub to track, document and share code. | Bioinformatics tutorial; final report |
| 6 | Design and teach a bioinformatics tutorial that gives peers a defined set of computational skills. | Participation (tutorial design taught in class); bioinformatics tutorial; teaching the tutorial |
| 7 | Communicate research rationale, methods and results to scientific and non-specialist audiences. | Teaching the tutorial; oral presentation |
Six of the seven outcomes are assessed in both arcs. You meet them first on shared course material, and then again on your own research. Only outcome 6 — designing and teaching a tutorial — belongs to the first arc alone.
That is particularly true of outcomes 1 and 2, on understanding the reproducibility crisis. You first meet them in the PART 1 readings and discussion, but they are not left behind there: the proposal asks you to say which part of the reproducibility problem your project addresses and what will be reproducible at the end that is not now, and the report asks you to assess the reproducibility of existing work and to distinguish what is reproducible from what is merely replicable. Understanding why reproducibility fails is not background reading for this course — it is what your individual project is built on.
These rubrics are themselves written in R Markdown and rendered to pdf from source held in the course GitHub repository, alongside everything else in this course. If you spot an error in one, please tell me — and note that you now know how to fix it yourself.