Meetings

Lecture: Tuesday, Thursday 1:15 - 2:30 pm, 129 Marsh Life Science
Lab: Wednesday, 1:10 pm - 3:40 pm, 129 Marsh Life Science

Instructors

Lecture: Nick Gotelli
209 Marsh Life Science
ngotelli@uvm.edu
By appointment, in-person meetings or video conferences

Lab: George Ni 211 Marsh Life Science
gni@uvm.edu
By appointment, in-person meetings or video conferences

Pre-Requisites

Course Content

This course is designed to teach you three things:

  1. How to use modern (and classic) computational tools to make your analysis, writing, and presentations more efficient and attractive, and to make your analyses transparent and repeatable. Such tools include plain-text editors, markdown, github, regular expressions, and shell commands.
  2. Foundational methods in computer programming in R (data structures, functions, control structures, input and output) that will allow you to construct computer models and to easily learn other computer languages (Python, C++).
  3. Advanced topics, including how to use probability distributions, simulate data, recognize, use, and analyze 4 archetypal experimental designs for biologists, apply them to real and simulated data, and create publication quality graphs with the ggplot2() package in R.

Lecture Activities

Once we finish with the preliminaries, the format for the lecture each day is simple. I will open Rstudio from my computer, project the screen so you can see it, and begin coding. I will comment and explain everything as I go along. Line by line, you will copy what I am typing on the screen into your own computer and the run the code along with me. This is the fastest way for you to learn how to code.

Lab Activities

Each week, there will be a programming assignment to go along with the lecture. Your primary activity in the laboratory section will be to do this assignment. Using the lab time this way forces you to set aside time each week to get learn the language and get the coding done, minimizes your time spent coding outside of class, and gives you the benefit of being able to ask for help from George and from your fellow students.

George will begin each class with a brief lecture presentation and demonstration, which will complement the lecture presentations for the week. They will provide overview of the assignment, and offer a few suggestions or tips for how to code the exercise.

Student Responsibilities

Grading

The undergraduate grading paradigm of taking examinations in a limited time frame and doing all of your work exclusively by yourself is antithetical to the programming world. Unless you are at NASA trying to guide an emergency landing for Apollo 13, you will not be writing computer code under a strict time deadline. And, in contrast to the strictures against plagarism in most of science and academia, we will regularly use computer code that others have written and put it to our own use. When you do so, try to include some brief annotation so that you know where the code came from and can get back to the source if you need to. Copying and repeating what others have said or written is how we learn any language, including computer languages. The only thing you should not do is to copy an entire program wholesale without documentation and without any understanding of what it is doing.

Each week you will attend two coding lectures and then attend the lab section to work on the weekly homework. One of the first things we will learn to do is to set up and maintain a public webpage through github. This webpage will serve as your portfolio, where you will post your homework assignments when you complete them.

All students start out the class with a grade of “A”. To maintain this as your final grade, you will need to: