R Programming for Biologists Syllabus

Course Description

Computer literacy is increasingly critical to all aspects of the world in which we live. Data science is the branch of this skillset that sits in the middle of the Venn diagram between computers and some other subject area. Regardless of your academic specialty, fundamental data science skills data are both extremely useful and highly sought after in virtually all career paths. This course aims to give you a primer on data management best practices, analytical processes, and reproducible code. There will also be an opportunity to practice communication of technical concepts to a non-specialist audience.

This course is relatively new so I will really appreciate your feedback and participation as we learn together! As such, I may need to adjust the scheduling of various topics (see the schedule for more information), but you will be notified of any changes sufficiently far in advance that you can prepare.

I would also like to acknowledge that this course has taken place on Wôpanâak (Wampanoag), Massa-adchu-es-et (Massachusett), and Pokanoket land. For more information, please visit www.native-land.ca

Learning Objectives

Upon completion of this course, students will be able to:

  • Understand the principles of well-structured data and reproducible coding
  • Write short computer programs (called “scripts”) in R
  • Explore data through wrangling and visualization techniques
  • Automate data processes using loops and conditionals
  • Apply general data science concepts to new datasets
  • Create a professional online presence on GitHub (www.github.com)
  • Evaluate peer’s work and offer both useful positive and constructively critical feedback

Course Structure

Class Type Duration
Lecture 1 hr 15 min
Lab 2 hrs 20 min

Required Course Materials

  1. R (www.cran.r-project.org)

I recognize that this website is very bare bones, but this program is the industry standard and enjoys the support of a large and active population of users. When you are troubleshooting (i.e., “debugging”) your code you will very much appreciate the breadth of people who are also using R. Follow the “Download R for …” link for your computer operating system (i.e., Mac vs. Windows vs. Linux) to install R.

  1. RStudio Desktop (www.posit.co/downloads)

RStudio is the preferred platform for working in R; as the R website showed, so-called “base R” can be a little basic. RStudio will provide several helpful bells and whistles that will make the program easier to work with and easier on the eyes!

  1. Git & GitHub

Git (an application like R) and GitHub (a website) will be a part of the course, but you do not need to do anything with them before we cover them in class! Installing Git can be a little annoying for those without command line (a.k.a. “terminal”, “shell”, or “bash”) experience. We’ll cover working with Git and GitHub together a few weeks into the course. If you feel so moved, you are welcome to try to install Git (see instructions here) and make a profile on GitHub on your own, but doing it alone is optional so don’t worry if you can’t get it to work before we cover it in class!

  1. Miscellaneous peer-reviewed articles / book excerpts

I will provide any readings for the course in PDF format, so check the Canvas/etc. page regularly to download the necessary files. Any required readings will be posted at least one week before we discuss it in class. I’ll also do my best to link directly to the readings from this website!

Course Policies

Attendance

If you get sick, observe a religious holiday unaccounted for by the university’s calendar, have to miss class for a job/grad school interview, or simply don’t think you can handle class on a given day, please email me as early as possible to let me know you won’t be in class with a (brief) explanation. This will help me to share resources we’ll cover in class with you and plan for a smaller in-class community while you are out. My hope is that this class will be somewhere you want to attend, but I understand that sometimes life happens!

While attendance is neither required nor graded, please do not abuse my sympathy and instead reserve absences for days where you honestly cannot attend. Your presence in and contributions to class are important both to your understanding of the material and the creation and maintenance of an in-class community.

Late Assignments

Late work will be accepted with a 10% penalty for each day that it is late. You are welcome to submit assignments that are more than 10 days for feedback so that you can improve going forward but assignments submitted that far after the due date will not be worth any points. If you think that you will struggle to meet a particular deadline, come chat with me as soon as possible so that we can work out whether a compromise would be possible.

Zoom Etiquette

If needed, the entirety of this course can be taught virtually so I would like to clarify some expectations I have for that modality. I do not require that you either have your camera on or unmute yourself to contribute verbally. That said, talking with a room full of muted Zoom panels with cameras turned off makes it difficult for me to know whether I’m successfully engaging you and that you understand the material. Therefore, I really encourage you to have your cameras on and unmute to ask or answer questions as needed.

Regardless of whether you take me up on that, I will make extensive use of the chat and “reactions” feature (i.e., thumbs up, raised hand, etc.) so be ready to engage on those axes whether or not your camera and mic are on for full participation credit (see participation guidelines below).

Artificial Intelligence

Artificial intelligence (AI) tools are increasingly entering public consciousness. These tools (e.g., ChatGPT, GitHub Copilot, etc.) often market themselves as a mode of increasing efficiency or making code operations easier. While this may or may not be true for experienced programmers, I strongly discourage the use of AI tools for this class. I feel this way for two reasons:

  1. I believe shortcuts–like AI–will undercut your learning. A vital bit of learning any new skill is engaging your problem solving skills to develop an intuition about how concepts fit together. If you overly rely on AI tools you will directly inhibit this process and–in extreme cases–may not be able to accomplish coding tasks in contexts where AI tools are inappropriate (e.g., job interviews, with clients, etc.).

  2. There are ethical considerations around AI that are not well-discussed. This course is not flexible enough to also be a primer in AI ethics so it is better to just avoid using these tools until you have the chance to educate yourselves and make an informed decision for yourself. If this topic area is of interest to you, I recommend doing a Google Scholar search for the peer-reviewed articles being published on this topic. Your institution may also offer an ethics or bioethics course (often in the Philosophy department or cross-listed there) if you’d prefer a trained ethicist help you develop formal knowledge in this sphere.

AI Policy Enforcement Note

I became an educator because I get joy from supporting new learners. I definitely know that I wouldn’t be where I am today without some passionate mentors and teachers who believed in me and supported my development in the very first steps of my career. Because of this philosophy, I am not interested in “policing” students. I will not make any attempt to restrict how you use the internet nor will I turn this class into a mini surveillance state in an attempt to prevent the use of AI tools or other forms of “cheating”.

If you find that you are struggling in this course and feel pressured to use AI tools to succeed, please come talk to me so that we can discuss reasonable accommodations for you to succeed under your own power and intellect.

Grading

Assignment Point Value Percent of Total
Weekly Homework 80 pts (10 pts ea.) 32% (4% ea.)
Muddiest Point Responses 40 pts (5 pts ea.) 16% (2% ea.)
R Function Tutorial - First Draft 30 pts 12%
R Function Tutorial - Final Draft 40 pts 16%
GitHub Presence 40 pts 16%
Participation (incl. R Package Report Peer Review) 20 pts 8%

Detailed rubrics are shared elsewhere in this site.

Assignment Descriptions

Weekly Homework

  • There will be eight (8) equally weighted homework assignments. These will be graded as follows:
    • (10 pts) Produces the correct result using the requested approach
    • (9 pts) Generally uses the right approach, but a minor mistake results in an incorrect final product
    • (5 pts) Attempts to accomplish the task and makes some progress using the core concept(s)
    • (1 pt) Answer demonstrates a lack of understanding of the core concept
    • (0 pts) No submission OR submission is more than 10 days late
  • Homework numbers 1 through 7 will be assigned after lecture and due before the following lecture at midnight (i.e., 7 days)
    • Homework 8 will be assigned after lecture and due before lab of that week (i.e., 3 days) because there won’t be a lecture after that one
  • I will give you feedback on these assignments that you are welcome to implement so that you can include those revised homework assignments in your GitHub portfolio (see “GitHub Presence” below)

Muddiest Point Responses

  • “Muddiest Point” is a type of exit ticket. Such assignments are meant to allow you space to think critically about what concepts from that day you felt confident with and which you struggled with (i.e., which were “muddier”).
  • Note that if everything was clear in a given lesson then substituting a follow-up question that goes beyond the lecture materials is appropriate!
  • There will be eight (8) equally weighted muddiest point responses. These will be graded as follows:
    • (5 pts) Clearly articulates both a concept that was difficult and what about that concept was challenging and a concept that was clear
    • (3 pts) Identifies a difficult concept but does not explain what was challenging about it in sufficient detail that I can identify the stumbling block
    • (1 pt) Response lacks depth and does not sufficiently explain why topic was difficult
    • (0 pts) No submission OR submission is more than 10 days late
  • All muddiest point responses will be due by midnight the day before each lab (i.e., one day after the lecture to which they are responding)
    • My hope is this will be helpful to you in clearly remembering which topics did or did not make sense to you.
    • Additionally, this tight turn around will let me re-cover concepts in lab that several students identify as their muddiest point from that week’s lecture

R Function Tutorials

  • A full rubric is available elsewhere so that you can have some specific guidelines on how to succeed on this assignment
  • First Draft
    • Students will pick three functions from R package(s) available on CRAN (i.e., “official” R packages)
    • You will then create a tutorial of these three functions aimed at an interested but non-specialist audience (i.e., your classmates) in an R Markdown file
    • This tutorial should be self-contained and support copy/pasting of code that runs for your classmates / me
    • You may begin work on this assignment whenever you wish though you may wish to wait until we cover R Markdown files in the early weeks of the course
    • Roughly halfway through the course, you will share your R Markdowns with your classmates and walk us through your tutorial
    • Your classmates will provide positive and constructively critical feedback on your tutorial
  • Revision
    • You will have two weeks to implement any changes your classmates suggest by emphasizing strengths and addressing weaknesses indicated by your peers
    • You will then get to present your revised tutorial and receive more feedback

GitHub Presence

  • A rubric for this assignment is also available elsewhere but the summarized description below may prove helpful in setting expectations.
  • This assignment includes two parts: (1) a fleshed-out GitHub profile including a ‘special repository’ that serves as a landing page for visitors to your profile and (2) a portfolio repository that includes (at least) your revised R Package Report
    • Don’t worry if some of those vocabulary terms are alien to your right now, we will cover them in class/lab, and you will be well-prepared to tackle this component
    • Your portfolio repository should also include any homework assignments that you receive a 9 or 10 on (or revise following a score)
  • This assignment is meant both to give you some working knowledge of Git/GitHub and to serve as a tangible resource that you can share with prospective employers and add to your resume and/or curriculum vitae (CV)

Participation

Recognizing that not everyone is equally comfortable speaking in front of a group, communication is still a crucial skill in virtually any career path. I strongly encourage you to take advantage of this course to get out of your comfort zone and try to develop that skill while in a safe environment if it is not your natural inclination. That being said, your participation grade will not be entirely dependent upon contributing to conversation and there will be other ways to grow as a communicator in this course.

  • Your participation score includes:
    • Asking questions in class (both verbally and in the Zoom chat)
    • Useful written feedback to peers on either draft of their R package reports

How to Succeed

I am committed to being a partner in your success in this course, and in the spirit of that I have the following tips for success:

  1. Come to office hours / email me
    • I will be readily available via office hours and informally whenever my office door is open
    • I am also happy to just chat with you about fun course-adjacent things, so don’t feel like you need to be struggling with the course to stop by
  2. Check the Canvas page and your university email regularly
    • Messages to the class/assignments/grades will be posted there
    • Check every so often so that no assignments / deadlines sneak up on you
  3. Build “muscle memory”
    • I will do my utmost to make this course accessible and fun, but programming is fundamentally a new language, so you’ll need to practice to “speak” it confidently
    • I recommend playing with the concepts and code from class outside of class so that you can build fluency that will last beyond the scope of this course
    • Try to convince a peer to let you teach them some topic we covered in class; teaching something is one of the best ways to truly understand that topic!
  4. Give me feedback on where I can improve/change my teaching style to benefit you
    • I will give an anonymous mid-term evaluation so that I can be most effective for what you need to excel
    • I will also welcome informal feedback if you are comfortable sharing

Usability, Accessibility, and Design

I am committed to creating a course that is inclusive in its design. If you encounter barriers, please let me know immediately so that we can determine if there is a design adjustment that can be made or if an accommodation might be needed to overcome the limitations of the design. I am always happy to consider creative solutions as long as they do not compromise the intent of the assessment or learning activity. I welcome feedback that will assist me in improving the usability and experience for all students.

Name, Gender Identity, and/or Gender Expression

The university will provide me with each student’s legal name, but I will gladly honor your request to address you by an alternate name. I will also use whichever gender pronouns you identify with. Please advise me of your pronouns and/or chosen name early in the semester so that I may make appropriate changes to my records.

Respect for your Peers

Group work is a significant part of this course explicitly in some of the assignments as well as implicitly by the collaborative nature of some of these coding tasks. I expect that you will be mutually respectful with one another both in and outside of class time. I will ask you questions during lab and lecture and both places are also an ideal time for you all to ask me questions that you have on course topics & policies. I don’t believe that “dumb questions” exist, and I expect that you treat your peers’ questions with the respect that your fellow students deserve. Together we will learn more in an environment where we build one another up than we would in one where we fail to support one another.