BCB744 Self-Assessment

Published

February 1, 2025

Here is the self-assessment structure and method we will apply to the BCB744 course. This page will help you navigate the various self assessment components, A-C:

To this end, the self-assessments will help you review the relevant course material. If you find you are struggling with a section, ask for help before it is too late! It is best to admit in class if you are falling behind so that others might benefit as well. Chances are, you are not alone.

A. Progress Portfolio

Your Progress Portfolios must be submitted on the same day as the lectures!

Starting 3 February 2026, you will submit a thoroughly annotated .html file produced from a Quarto document that outlines each day’s teaching material you covered as you followed along in the class. Since it is made within Quarto, you will have to include code chunks, their output, and some narrative text that describes what each portion of your code does. The Portfolio may include:

  • Evidence that you have taken notes in the class, especially for those portions of the work that you deemed tricky.
  • Evidence that you have followed along in the class in interactive sessions, in which case you will reproduce the examples I asked you to work through.
  • The outcomes of the various sections in the lecture material (web pages accessed in the Tangled Bank menu), which may be called something like “Do This Now” or “Exercise”.
    • The more comprehensive your Portfolios, and the tidier they are (visual appearance), the better the outcome of our assessments will be.

The document must be:

  • One continuous file that you add to each day (use a clear heading with the date and topic for every new day).
  • Rendered to HTML and submitted daily starting 3 February 2026, on the same day of the lecture your portfolio material covers.
  • Complete and readable, with the code you ran, the outputs it produced, and a few sentences explaining what the code does. Include any notes that you made for your future self, which will aid you to study the work for assessments you will encounter. Any text added must be in your own words, and explained in a way that you understand (in good English, without grammatical and spelling errors).
  • Neatly structured, with short sections, headings, and clear figure/table outputs (no screenshots). I will significantly weigh the visual impression you create, so take pride in your work.

Submission Instructions

  • Deadline: Submit your work by no later than 23:59 AM on the day of the lecture.
  • Submission Format: Submit on iKamva as an HTML page.
  • Email Subject Line: In case you have to email your work (e.g., no iKamva access), use the following email subject line:
    • 📌 BCB744 Portfolio [Lecture Number]: [Your Surname]
  • File Naming Convention:
    • 📄 BCB744_Portfolio_[Lecture Number]_[Your_Surname].html, e.g., BCB744_Portfolio_L3_Smit.html

Failure to adhere to these requirements may result in a grade penalty. Ensure that your slides are clear, well-structured, and visually professional.

B. Tasks A-H

You must submit your answers to the Questions for each Task.

Tasks E-H will be posted in due course.

Submit your answers to the Tasks A-H questions no later than 8:00 on the day after the corresponding lectures (e.g., Monday/Tuesday’s lecture material is covered by Task A, and must be submitted on Wednesday morning no later than 8:00).

Assessment Instructions

  • Immediately after we have gone over the task answers in the class (e.g., on Tuesday morning for Task A):
    1. Add the marks you gave yourself for each question (according to the model answers we discussed) to the MS Excel spreadsheed, which you can download from the top of each Task’s question page (e.g., here).
    2. To calculate your Final Score, rate your performance according to the rubric, enter those marks next to the “Content” and “Code Formatting & Presentation” entries on the spreadsheet. Once those marks have been supplied and the final mark will automagically be calculated.
  • Rename the Excel file correctly (Name and Surname, and take note of the underscores):
    • e.g., 📄 BCB744_Task_A_Smit.xlsx
  • Submit it on iKamva where it will be kept on record.
  • Each day I will randomly select five of the submitted tasks to check how honest you were in your self-assessment. If you are found to be dishonest, you will be penalised by losing marks from the presentations. If you are honest, you will be rewarded with bonus marks.

Submission Instructions

  • Deadline: Submit your work by 8:00 AM on the date indicated in the timetable.
  • Submission Format: Submit on iKamva as an HTML document.
  • Email Subject Line: In case you have to email your work (e.g., no iKamva access), use the following subject line:
    • 📌 BCB744 Task [The Number]: [Your Surname]
  • File Naming Convention:
    • 📄 BCB744_Task_[The Number]_[Your_Surname].html, e.g., BCB744_Task_A_Smit.html

Failure to adhere to these requirements may result in a grade penalty. Ensure that your slides are clear, well-structured, and visually professional.

C. Intro R Self-Assessment Exercises

You do not need to submit anything for these exercises — they are for your own benefit.

These exercises align with the Intro R chapters (01-19). Treat each item as a skills check. If you need to look something up, note the gap and repeat the exercise later. Keep your work in a single Quarto file so you can track progress, and avoid screenshots by showing code and output.

Choose one dataset for most tasks: ChickWeight, iris, airquality, or a dataset from the course data/ folder.

1. Setup and RStudio Fluency

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Projects and working directory
  2. Script vs console execution
  3. Packages and the help system

Self-assessment exercises

  • Create or open the Intro_R_Workshop project and confirm getwd() points to it.
  • Create a script called intro_r_skills.R with a header block and clear section comments.
  • Install and load tidyverse and here. Use here::here("data") to list the course files.
  • Use ?read_csv and describe (in one sentence) what col_types controls.

2. Working With Data and Code

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. CSV/TSV import
  2. Missing values and data checking
  3. Saving data

Self-assessment exercises

  • Read one CSV and one TSV file with readr::read_csv() and readr::read_tsv() and compare the results.
  • Use nrow(), ncol(), glimpse(), and summary() to inspect the data.
  • Calculate missingness with sum(is.na(.)) and identify one column with missing values.
  • Save a cleaned version of the data with write_csv() or saveRDS(), then reload it.

3. R Markdown and Quarto

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Quarto document structure
  2. Code chunk options
  3. Rendering to HTML

Self-assessment exercises

These exercises introduce the basic mechanics and underlying logic of Quarto documents. They are not tests of programming skill. Instead, they are designed to develop control over document structure, rendering, and the relationship between prose, code, and output.

Work through the exercises in order. Do not skip ahead. Where instructions appear minimal, that is deliberate.

You are expected to render your documents frequently.

The Quarto and R markdown exercises for Exercises 1-7 will not be submitted. Instead, use them to honestly self-assess your ability to work with Quarto files, and ask us in the next lecture to explain any portion of the work you have not yet mastered.

Exercise 1 — Your First Quarto Documents

Create three separate Quarto documents, each saved as a .qmd file inside your R Project directory.

Each document must:

  • contain a valid YAML header with title, author, date, and format;
  • contain at least one sentence of plain Markdown text below the header;
  • render successfully without errors.

The three documents must differ only in their output format:

  1. One document must render to HTML
  2. One document must render to Word (.docx)
  3. One document must render to PDF via Typst

Render each document and confirm that the expected output file is created.

Exercise 2 — Writing Before Computing

Create a new Quarto document that renders to HTML.

In the body of the document:

  1. Write a short paragraph (3–4 sentences) introducing a simple analytical question involving a built-in R dataset (for example, a relationship between two variables).
  2. Below this paragraph, insert one R code chunk that computes a summary statistic or produces a simple plot relevant to the question.
  3. Below the code output, write a second paragraph that interprets the result in plain language.

Do not explain the code line-by-line. Do not place code before the prose that motivates it.

Render the document.

Exercise 3 — Markdown Tables (No Code)

In a new Quarto document:

  1. Write one paragraph introducing a small set of hypothetical data (for example, measurements taken at several sites).

  2. Construct a table manually using Markdown syntax, not R.

  3. The table must include:

    • a header row,
    • at least three columns,
    • at least four data rows.
  4. Refer to the table explicitly in the surrounding prose.

Render the document and check that the table appears correctly.

Exercise 4 — Structuring a Document with Headings

Create a Quarto document containing:

  • at least two level-1 headings,
  • at least two level-2 headings nested under one of them,
  • plain Markdown text under each heading,
  • one R code chunk placed where it makes conceptual sense.

The document should read as a structured report, not a list of disconnected elements.

Render the document.

Exercise 5 — Adding References with BibTeX

You are provided with a small .bib file.

Modify an existing Quarto document so that:

  1. The YAML header correctly references the bibliography file.
  2. One citation appears parenthetically in the text.
  3. One citation is used narratively (author mentioned in the sentence).
  4. A reference list is generated automatically.

Do not type the reference list manually.

Render the document and confirm that citations and references appear as expected.

Exercise 6 — Figures, Captions, and Cross-References

In a Quarto document that already contains a plot:

  1. Assign a label to the figure.
  2. Add a caption that interprets the figure.
  3. Refer to the figure explicitly in the prose using a cross-reference.

Do not hard-code figure numbers in the text.

Render the document and confirm that the reference resolves correctly.

Exercise 7 — Diagnosing a Rendering Failure

Take a Quarto document that currently renders successfully.

  1. Introduce a small error into the YAML header (for example, incorrect indentation or a misplaced option).
  2. Attempt to render the document and note the error message.
  3. Fix the problem and restore the document to a working state.

At the end of the document, add a short paragraph explaining:

  • what caused the failure, and
  • why the error message did not directly point to the true source of the problem.

Render the final version.

Exercise 8 – Produce Quarto .html document for (self-)assessment

Assemble your own Quarto document that demonstrates ALL the elements, above, in a single file. In this document, capture, in a neatly structured way, the full code and answers for Questions 1-19, below.

General Instructions

  • Render early. Render often.
  • Treat error messages as diagnostic clues, not as obstacles.
  • Your goal is not decorative output, but structural correctness.

These exercises form the foundation for longer analytical documents later in the course.

4. Data Classes and Structures

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Core data classes (numeric, character, factor, logical, date)
  2. Core structures (vector, matrix, data frame, list)
  3. Indexing and subsetting

Self-assessment exercises

  • Create vectors of numbers, characters, and logical values, then confirm their classes with class() and str().
  • Create a matrix from 1:12, add row and column names, extract the value in row 2 column 3, and transpose it.
  • Build a data frame with mixed classes (including a factor and a date column) and subset rows using a logical condition.
  • Create a list that contains a vector, a data frame, and a matrix, then extract each element using both [[ and $.

5. R Workflows

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Script structure and comments
  2. File paths with here::here()
  3. Simple summaries and exports

Self-assessment exercises

  • Write a script that loads packages, imports a dataset, and prints a short summary.
  • Use here::here() for all file paths (no absolute paths).
  • Create a filtered dataset and export it to data/processed/ with a clear filename.
  • Add two comments that explain why you made specific choices, not just what the code does.

6. Graphics with ggplot2

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. The grammar of graphics
  2. Aesthetics and geoms
  3. Labels and themes

Self-assessment exercises

  • Create a scatter plot of two numeric variables and add a linear trend line.
  • Map a variable to colour and a different variable to size or shape.
  • Add a title and axis labels, then apply a theme (theme_bw() or theme_minimal()).

7. Faceting Figures

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. facet_wrap() and facet_grid()
  2. Shared scales and readability
  3. Combining plots

Self-assessment exercises

  • Facet a plot by a categorical variable and check whether free or fixed scales make more sense.
  • Produce the same data as separate panels and as overlaid groups, then decide which is clearer.
  • Combine two plots into a single figure using ggpubr::ggarrange() or another method shown in class.

8. Brewing Colours

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Sequential, diverging, and categorical palettes
  2. Choosing colours that match the data
  3. Avoiding misleading colour choices

Self-assessment exercises

  • Create one continuous colour plot using scale_color_viridis_c() and one discrete colour plot using scale_color_brewer().
  • Replace a poor palette with a better one and write one sentence explaining why the new palette is more appropriate.

9-12. Mapping with ggplot2 (and sf)

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. geom_sf() basics
  2. Cropping and zooming
  3. Adding data layers
  4. Visual hierarchy and labeling
  5. Aspect ratio and scale
  6. Map sanity checks

Self-assessment exercises

  • Load a Natural Earth dataset with rnaturalearth and plot it with geom_sf().
  • Crop to a smaller region of interest and re-plot.
  • Add a second layer (points or a simple polygon) and adjust transparency for readability.
  • Add labels for key places or features and adjust text size to avoid overlap.
  • Apply a map-appropriate theme and check that the aspect ratio is sensible.
  • Use the Map Sanity Checklist to review your final map and note one fix you made.

13-15. Tidy Data

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Recognising tidy vs untidy data
  2. pivot_longer() and pivot_wider()
  3. separate() and unite()
  4. Filtering, selecting, arranging
  5. Creating variables with mutate()
  6. Summaries with group_by() and summarise()

Self-assessment exercises

  • Start with a messy dataset and reshape it to long format using pivot_longer().
  • Convert it back to wide format with pivot_wider() and confirm that key values match.
  • Split a compound column into two variables with separate() or combine two variables with unite().
  • Use filter(), select(), and arrange() to create a clean subset of the data.
  • Create a new variable with mutate() and explain why it is useful.
  • Calculate a grouped summary table and verify the number of groups with n().

17. Base R, Functions, and Dates

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. Base R indexing
  2. Writing simple functions
  3. Parsing and fixing dates

Self-assessment exercises

  • Subset a vector and a data frame using base R ([, [[, and $).
  • Write a function with one required argument and one default argument, then test it on a vector with missing values.
  • Create a date column from messy strings using as.Date() or lubridate::ymd() and confirm it plots correctly on the x-axis.

18. Synthesis Mini-Project

Understanding Level: Beginner / Intermediate / Advanced

Key concepts

  1. End-to-end workflow
  2. Reproducible reporting
  3. Clear narrative

Self-assessment exercises

  • Import a dataset, clean it, and document every step in a Quarto report.
  • Produce two figures and one summary table that directly answer a clear question.
  • Write a 150-200 word interpretation that connects the data, the analysis, and the figures.

How to Use This Worksheet

  • Be honest: Accurately assess your understanding of each topic to identify areas you need to review.
  • Practice regularly: Consistent practice is key to mastering R.
  • Seek help: Ask questions in class or on the GitHub Issues page when stuck.
  • Collaborate: Work with peers and discuss the concepts covered in Intro R.
  • Review: If you are struggling, revisit the specific chapter linked from the course site.

Reuse

Citation

BibTeX citation:
@online{smit,_a._j.2025,
  author = {Smit, A. J.,},
  title = {BCB744 {Self-Assessment}},
  date = {2025-02-01},
  url = {http://tangledbank.netlify.app/BCB744/assessments/BCB744_Intro_R_Self-Assessment.html},
  langid = {en}
}
For attribution, please cite this work as:
Smit, A. J. (2025) BCB744 Self-Assessment. http://tangledbank.netlify.app/BCB744/assessments/BCB744_Intro_R_Self-Assessment.html.