Schedule
| Week | Date | Lecture | Readings | ||
|---|---|---|---|---|---|
| 0 | Thu, Jan 8 | Welcome & Types in R | |||
| 1 | Tue, Jan 13 | Vectorization & Control Flow | |||
| Thu, Jan 15 | Lists, Attributes, & S3 | ||||
| 2 | Mon, Jan 19 | No lab - MLK Day | |||
| Tue, Jan 20 | Subsetting | ||||
| Thu, Jan 22 | R Packages | ||||
| 3 | Tue, Jan 27 | Testing with testthat | |||
| Thu, Jan 29 | LLMs & R | ||||
| 4 | Tue, Feb 3 | Tidy data - dplyr & tidyr | |||
| Thu, Feb 5 | Functional programming - purrr | ||||
| 5 | Tue, Feb 10 | Visualization with ggplot2 | |||
| Thu, Feb 12 | Visualization Design | ||||
| 6 | Tue, Feb 17 | Text processing & Regular expressions | |||
| Thu, Feb 19 | Web scraping | ||||
| 7 | Tue, Feb 24 | Web APIs | |||
| Thu, Feb 26 | Profiling & Parallelization | ||||
| 8 | Tue, Mar 3 | filesystems, Dennys & LQ scraping | |||
| Thu, Mar 5 | make (async) | ||||
| 9 | Tue, Mar 10 | No class - Spring break | |||
| Thu, Mar 12 | No class - Spring break | ||||
| 10 | Tue, Mar 17 | Shiny | |||
| Thu, Mar 19 | bslib, dynamic UIs, and publishing | ||||
| 11 | Tue, Mar 24 | Databases & dplyr | |||
| Thu, Mar 26 | DuckDB & SQL | ||||
| 12 | Tue, Mar 31 | Tidy Models | |||
| Thu, Apr 2 | Tidy Models (cont.) | ||||
| 13 | Tue, Apr 7 | Optimization | |||
| Thu, Apr 9 | Optimization | ||||
| 14 | Tue, Apr 14 | Gradient Descent | |||
| Thu, Apr 16 | Gradient Descent | ||||
| 15 | Tue, Apr 21 | LDOC | |||
| 16 | Sat, May 2 | Final project due by 11:59 pm |
Syllabus
Instructors:
Dr. Colin Rundel - colin.rundel@duke.edu
Office hours:
- TBD - 204 Old Chemistry / Zoom
Classroom:
Lecture
- Old Chemistry 116 - Tuesdays & Thursdays, 1:25 - 2:40 pm
Lab
- Perkins Link 3 (087) - Mondays, 11:45 am - 1:00 pm
- Perkins Link 3 (087) - Mondays, 1:25 - 2:40 pm
Lectures & Lab:
The goal of both the lectures and the labs is for them to be as interactive as possible. My role as instructor is to introduce you new tools and techniques, but it is up to you to take them and make use of them. Programming is a skill that is best learned by doing, so as much as possible you will be working on a variety of tasks and activities throughout each lecture / lab. Attendance will not be taken during class but you are expected to attend all lecture and lab sessions and meaningfully contribute to in-class exercises and homework assignments.
Homework and Exams:
You will be assigned larger programming tasks throughout the semester (roughly every two weeks). These assignments will be completed either in a team or individually.
Students are expected to make use of the provided git repository on the course's github page as their central collaborative platform. Commits to this repository will be used as a metric (one of several) of each team member's relative contribution for each homework.
There will be a two midterms that you are expected to complete individually. Each project will ask you to complete a number of small programming tasks related to the material presented in the class. The exact structure and content of the projects will be discussed in more detail before they are assigned. You must attempt *both* projects in order to pass this class.
Quizzes
There will be a number of short quizzes throughout the semester that will cover material from the lectures. These quizzes will be completed individually in lecture using pen and paper and without using notes or other reference materials.
There will be 10-15 quizzes given randomly throughout the semester with an approximate cadence of 1 per week, however there may be some weeks with two quizzes. Quiz grades will be partially based on attendance (turning in the quiz) and partially based on correctness. Your 3-5 lowest quiz grades will be dropped when calculating your final course grade. This policy is meant to cover any quizzes you might miss for any excused or unexcused absences from lecture.
Final Project:
You will form your own team of 1-5 students and will be responsible for the completion of an open ended final project for this course, the goal of which is to tackle an "interesting" problem using the tools and techniques covered in this class. Additional details on the project will be provided as the course progresses. You must complete a final project in order to pass this course.
Teams:
For all of the team based assignments in this class you will be randomly assigned to teams of 3 or 4 students - these teams will change after each assignment. You will work in these teams during your scheduled labs. For team based assignments, all team members are expected to contribute equally to the completion of each assignment and you will be asked to evaluate your team members after each assignment is due. Failure to adequately contribute to an assignment will result in a penalty to your mark relative to the team's overall mark.
Course Announcements:
We will regularly send course announcements via email and Sakai, make sure to check one or the other of these regularly.
Academic integrity:
Duke University is a community dedicated to scholarship, leadership, and service and to the principles of honesty, fairness, respect, and accountability. Citizens of this community commit to reflect upon and uphold these principles in all academic and non-academic endeavors, and to protect and promote a culture of integrity. Cheating on exams or plagiarism on homework assignments, lying about an illness or absence and other forms of academic dishonesty are a breach of trust with classmates and faculty, violate the Duke Community Standard, and will not be tolerated. Such incidences will result in a 0 grade for all parties involved. Additionally, there may be penalties to your final class grade along with being reported to the Undergraduate Conduct Board.
Please review the Academic Dishonesty policies here.
A note on sharing / reusing code - I am well aware that a huge volume of code is available on the web to solve any number of problems. Unless I explicitly tell you not to use something the course's policy is that you may make use of any online resources (e.g. StackOverflow) but you must explicitly cite where you obtained any code you directly use (or use as inspiration). Any recycled code that is discovered and is not explicitly cited will be treated as plagiarism. The one exception to this rule is that you may not directly share code with another team in this class, you are welcome to discuss the problems together and ask for advice, but you may not send or make use of code from another team.
Excused Absences:
Students who miss a class due to a scheduled varsity trip, religious holiday or short-term illness should fill out an online NOVAP, RHoliday or short-term illness form respectively. Note that these excused absences do not excuse you from assigned homework, it is your responsibility to make alternative arrangements to turn in any assignments in a timely fashion.
Those with a personal emergency or bereavement should speak with your director of graduate studies or your academic dean.
Late work policy:
- late, but same day: -10%
- late, next day: -20%
- 2 days or later: no credit
Assessment:
Your final grade will be comprised of the following.
| Assignment | Value |
|---|---|
| Homework | 30% |
| Midterms | 40% |
| Project | 10% |
| Quizzes | 20% |
The exact ranges for letter grades will be curved and cutoffs will be determined at the end of the semester. The more evidence there is that the class has mastered the material, the more generous the curve will be.
Textbooks
There are no required textbooks for this course, the following textbooks are recommended for supplementary and reference purposes.
- Advanced R (2nd ed.) - Wickham - Chapman and Hall/CRC, 2019 (978-0815384571)
- R for Data Science (2nd ed.) - Wickham, Çetinkaya-Rundel, Grolemund - O'Reilly, 2023 (978-1492097402)
About this website
This site is built with Hugo. The theme is based on Blackburn and Hugo Conference.