Learn to explore, visualize, and analyze data to understand natural phenomena, investigate patterns, model outcomes, and make predictions. Gain insight from data, reproducibly (with literate programming and version control) and collaboratively, using modern programming tools and techniques. The course will focus on the R statistical computing language and assumes no statistical or computing background.
Review and code-along sessions on Tuesdays, Labs on Thursdays, Student hours on Wednesdays and Thursdays.
Review and Code-along - 9:30-10:50
Lab - 9:30-10:50
Student hours - 16:00-17:00 Wednesday and Thursday; Drop-in review session with Ashka Tuesday 7-9
Hello and welcome to DCS 210. Programming for Data Analysis and Visualisation. This course will introduce students to data analysis and visualization with R. By the end of the course students will be able to gain insight from data, reproducibly (with literate programming and version control) and collaboratively, using modern programming tools and techniques. As an introduction to programming course, everyone is welcome.
The course content is organized in five units:
The primary purpose of Digital and Computational Studies is to bridge the liberal arts education to computing and the digital world. In this, we are committed to actively creating digital and computational spaces that are radically inclusive. Our core commitment is to integrating equity and social justice throughout our curriculum, and engaging students in metacognition to support this work. Digital and Computational Studies Courses fall into a continuum of experiences that range from critical digital studies to programming, with an integrated core that embraces both. Programming for Data Analysis and Visualization is an Integrated course. See the DCS website for details on DCS values, goals, and practices.
This course is designed as a community learning journey. Together, we will:
It is also my hope that in this course you:
All books for this course are freely available online as e-books. We will be using two main texts:
This course takes a flipped classroom approach where the lectures are watched outside of class and we will work on the hands-on coding and review in class. The class meets on Tuesday and Thursday from 9.30-10:50. The typical weekly class schedule will be:
Day | Activity |
---|---|
Tuesday | Review/Application Exercise/Code Along |
Thursday | Lab |
Wednesday | Student hours |
Outside of class you can expect to spend
You will want to start watching videos for the following week on Thursday in preparation for the following Tuesday’s review session (5 days after Thursday). To keep your learning active, we’ll use Tuesday’s class times to review the material covered in the lectures and readings, and to work on application exercises that you can complete on RStudio Cloud. It is important that you keep up with the content assigned outside of class so that you are prepared for the labs and homework that week. The concepts covered in the course build on one another. If you feel yourself falling behind, please attend a review session with Ashka or book an appointment with me during student hours. We are happy to help with any of the concepts!
Student hours will be held on Wednesdays from 7-8.30pm. You can book an appointment in my calendar on calendly.
Student hours are a time to talk about the course content, a homework/grade, concerns about the course or personal matters, advice on your thesis or another data project, and next steps (internships, careers, majors, future classes). Meeting with students one on one is one of my favorite parts of the course, so do come by with any questions!
We will periodically have code-along sessions on Tuesday where we will tackle a new data set and data visualization together. These sessions are a chance to learn about workflow and debugging techniques since there will inevitably be lots wrinkles to iron out during unstructured live coding.
These will be held on Thursdays. During these sessions you will work individually or in teams on computing lab exercises and you will finish the exercises after class and turn in your lab reports by Wednesday at 23:59 EST. Attendance to class is important as you will be working on your labs individually and together in class. Labs will be submitted as GitHub repositories and the lowest score for each student will be dropped. Tip: Set up a weekly team meeting between Thursday and Wednesday to work with your team to finish the assignment.
A frequently asked question is “What happens if I can’t make it to a lab one week because I’m sick or have another obligation at that time?” Answers below:
Overall these policies are put in place to ensure communication between team members, respect for each others' time, and also to give you a safety net in the case of illness or other reasons that keep you away from attending class once or twice.
In addition to reviewing the video lecture material in class, we will also be working on application exercises together in class. Application exercises will be completed on RStudio Cloud.
Beyond the in class activities, you will be assigned weekly larger programming tasks throughout the semester. These assignments will be completed individually, and submitted as GitHub repositories. Homework assignments with the lowest score for each student will be dropped. Tip: Do the (optional) R tutorials which will introduce you to the datasets and topics covered in the homework assignments.
These weekly multiple choice quizzes will help you evaluate your learning continuously. The online quiz will be graded for completion. Tip: Don’t leave it till the last minute!
Throughout the course there will be reflection assignments where we engage and reflect on contemporary issues in environmental and social justice related to our digital world, community and identity.
You 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. Each team’s work will also be shared with and evaluated by at least one other team at an earlier stage in order to provide feedback in the form of code review. You must complete the final project and be in class to present it in order to pass this course. Tip: Stick to optional interim deadlines (outline, draft presentation) to pace your work on the project.
For all of the team based assignments in this class you will be randomly assigned to teams of 2 or 3 students - these teams will change throughout the semester. You will work in these teams during class and on the lab assignments. 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 on lyceum after each assignment is due. During the labs, we will be working together using pair programming, where you will take it in turns to write and review the the code, swapping roles frequently. Once the assignment is submitted the contributors will share responsibility for any revisions to be made based on feedback. Failure to adequately contribute to an assignment will result in a penalty to your grade relative to the team’s overall grade.
Students are expected to make use of the provided GitHub repository 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.
Your overall course grade will be comprised of the following components, and their weights:
Tutoring in the local school and completing a reflection can count for 5% credit on the course. This credit can be counted in place of a homework assignment. Go to the extra credit tab to find out more.
Lower bound percent earned for letter grade: A 93 A- 90 B+ 87 B 83 B- 80 C+ 77 C 73 C- 70 D+ 67 D 63 D- 60 F below 60 A+ reserved for exceptional work
Only work that is clearly assigned as team work should be completed collaboratively. Individual assignments must be completed individually, you may not directly share or discuss answers / code with anyone other than the instructors and tutors. You are welcome to discuss the problems in general and ask for advice.
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. On individual assignments you may not directly share code with another student in this class, and on team assignments 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.
Bates College takes academic misconduct very seriously and is committed to ensuring that so far as possible it is detected and dealt with appropriately.
Cheating or plagiarizing on assignments are a breach of trust with classmates and faculty, violate the University policies, and will not be tolerated. Make sure to review the Student Guide to Academic Integrity Policies and Procedures on the Bates website. Such incidences will result in a 0 grade for all parties involved.
Many of us learn in different ways. For example, you may process information by speaking and listening, so while lectures are quite helpful for you, some of the written material may be difficult to absorb. You might have difficulty following lectures, but are able to quickly assimilate written information. You may need to fidget to focus in class. You might take notes best when you can draw a concept. For some of you, speaking in class can be a stressful or daunting experience. For some of you, certain topics or themes might be so traumatic as to be disruptive to learning. The principle of Universal Design for Learning calls for our classrooms, our virtual spaces, our practices and our interactions to be designed to include as many different modes of learning as possible, and is a principle I take seriously in this class.
It is also my goal to create an inclusive classroom, which depends on community building, and which requires everyone to come to class with mutual respect, civility, and a willingness to listen to and observe others. As such the syllabus serves as a contract of some expectations between all members of the class, including myself.
If you anticipate or experience any barriers to learning in this course, please reach out to me and your student support advisor. If you have a disability, or think you may have a disability, you may also want to meet with Abigail Nelson, Assistant Dean of Accessible Education and Student Support, to begin this conversation or request an official accommodation. You can find more information about the Office of Accessible Education and Student Support, including contact information, on the accessible education page of the Bates website. If you have already been approved for accommodations through the Office of Accessible Education please let me know! We can meet 1-1 to explore concerns and potential options. If you do not have a documented disability, remember that student support services are available to all students through the Math and Stats Workshop (R, Math, and Stats).
The college prohibits discrimination on the basis of race, color, national or ethnic origin, religion, sex, sexual orientation, gender identity or gender expression, age, disability, genetic information or veteran status and other legally protected statuses in the recruitment and admission of its students, in the administration of its education policies and programs, or in the recruitment of its faculty and staff. Bates College adheres to all applicable state and federal equal opportunity laws and regulations. Violations of this policy can be reported to Gwen Lexow, Director of Title IX and Civil Rights Compliance or through the Bates website: www.bates.edu/sexual-respect/non-discrimination-policy/
All work is due on the stated due date. Due dates are there to help guide your pace through the course and they also allow me (the course professor) to return marks and feedback to you in a timely manner. However, sometimes life gets in the way and you might not be able to turn in your work on time. Note, first of all, that the lowest score of labs and homework assignments is dropped. So if you miss one assignment, this can be your dropped score. Resubmission is built into each assignment. You will first receive feedback on each assignment before receiving a final grade. All resubmissions are due 7 days after feedback is received. It is your responsibility to keep track of this deadline. For instance, if a homework is due on
If you intend to submit work late for an assignment or project, you must notify me before the original deadline and as soon as the completed work is submitted on GitHub. Lab work cannot be submitted late, Note also that each of you have 3 late days you can put towards homework assignments during the semester without receiving a late penalty.
I want to make sure that you learn everything you were hoping to learn from this class. If this requires flexibility, please don’t hesitate to ask.
You never owe me personal information about your health (mental or physical) but you’re always welcome to talk to me. If I can’t help, I likely know someone who can.
I want you to learn lots of things from this class, but I primarily want you to stay healthy, balanced, and grounded during this crisis.
Most of you will need help at some point and we want to make sure you can identify when that is without getting too frustrated and feel comfortable seeking help.
Make good use of this support system, it is there for you! And if you’re not sure where to go for help, just ask.
There will be a few opportunities to gain extra credit throughout the semester that I will announce in class. These are still be finalized for this semester. Extra credit is worth 5% and can take the place of one of your weekly homework assignments that counts towards your final grade. Below are extra credit opportunities that have been offered in the past.
Edward Little High School (77 Harris St, Auburn)
Lewiston High School Remote Tutoring Program
Tree Street Youth (144 Howe Street)
Showcase your inner data scientist
Pick a dataset, any dataset…
…and do something with it. That is your final project in a nutshell. More details below.
The final project for this class will consist of analysis on a dataset of your own choosing. The dataset may already exist, or you may collect your own data using a survey or by conducting an experiment. You can choose the data based on your interests or based on work in other courses or research projects. The goal of this project is for you to demonstrate proficiency in the techniques we have covered in this class (and beyond, if you like) and apply them to a novel dataset in a meaningful way.
The goal is not to do an exhaustive data analysis i.e., do not calculate every statistic and procedure you have learned for every variable, but rather let me know that you are proficient at asking meaningful questions and answering them with results of data analysis, that you are proficient in using R, and that you are proficient at interpreting and presenting the results. Focus on methods that help you begin to answer your research questions. You do not have to apply every statistical procedure we learned. Also, critique your own methods and provide suggestions for improving your analysis. Issues pertaining to the reliability and validity of your data, and appropriateness of the statistical analysis should be discussed here.
The project is very open ended. You should create some kind of compelling visualization(s) of this data in R. There is no limit on what tools or packages you may use, but sticking to packages we learned in class (tidyverse
) is required. You do not need to visualize all of the data at once. A single high quality visualization will receive a much higher grade than a large number of poor quality visualizations. Also pay attention to your presentation. Neatness, coherency, and clarity will count. All analyses must be done in RStudio, using R.
Here is an example of a past project write up and presentation on Lessons to be Learned from Super Bowl Advertisements.
In order for you to have the greatest chance of success with this project it is important that you choose a manageable dataset. This means that the data should be readily accessible and large enough that multiple relationships can be explored. As such, your dataset must have at least 50 observations and between 10 to 20 variables (exceptions can be made but you must speak with me first). The variables in the data should include categorical variables, discrete numerical variables, and continuous numerical variables.
If you are using a dataset that comes in a format that we haven’t encountered in class, make sure that you are able to load it into R as this can be tricky depending on the source. If you are having trouble ask for help before it is too late.
Note on reusing datasets from class: Do not reuse datasets used in examples, homework assignments, or labs in the class.
Below are a list of data repositories that might be of interest to browse. You’re not limited to these resources, and in fact you’re encouraged to venture beyond them. But you might find something interesting there:
One of the main goals of this course is that you build and develop community leadership skills as a collaborator that shares strengths, builds weaknesses, and contributes to a broader shared understanding. These skills will serve you in this course and beyond in your careers. A crucial part of building strong collaborations is good communication.
Each team will draft a group contract. A group contract is a document to help you formalize the expectations you have for your group members and what they can expect of you. It will help you think about what you need from each other to work effectively as a team! You will create and agree on this contract as a team and refer to it during the project.
At a minimum, your group contract must address these questions:
Each member should “sign” (you can just type out your name) at the bottom of the submission.
Credit for Group Contract: Tiffany Timbers, University of British Columbia
You will write your proposal in the proposal.Rmd file in your Github project.
Section 1 - Introduction: The introduction should introduce your general research question and your data (where it came from, how it was collected, what are the cases, what are the variables, etc.).
Section 2 - Data: Place your data in the /data
folder, and add dimensions
and codebook to the README in that folder. Then print out the output of
glimpse()
or skim()
of your data frame.
Section 3 - Data analysis plan:
Each section should be no more than 1 page (excluding figures). You can check a print preview to confirm length.
10 minutes maximum, and each team member should say something substantial.
Prepare a slide deck using the template in your repo. This template uses a package called xaringan
, and allows you to make presentation slides using R Markdown syntax. There isn’t a limit to how many slides you can use, just a time limit (10 minutes total). A rough guide is one slide is equal to one minute. Each team member should get a chance to speak during the presentation. Your presentation should not just be an account of everything you tried (“then we did this, then we did this, etc."), instead it should convey what choices you made, and why, and what you found.
Before you finalize your presentation, make sure your chunks are turned off with echo = FALSE
.
Presentation schedule: Presentations will take place during the Tuesday and Thursday of the week before finals. During the workshop you will watch presentations from other teams in your workshop and provide feedback in the form of peer evaluations. The presentation line-up will be generated randomly.
Along with your presentation slides, we want you to provide a brief summary of your project in the README of your repository.
This write-up, which you can also think of as an summary of your project, should provide information on the dataset you’re using, your research question(s), your methodology, and your findings.
The following folders and files in your project repository:
presentation.Rmd
+ presentation.html
: Your presentation slidesREADME.md
: Your write-up/data/*
: Your dataset in csv or RDS format, in the /data
folder./proposal
: Your proposal from earlier in the semester/contract
: Your group contract from earlier in the semesterStyle and format does count for this assignment, so please take the time to make sure everything looks good and your data and code are properly formatted including labelling code chunks. Pay attention to images and plots included in the presentation and make sure to include appropriate alternative text.
echo = FALSE
) so that your document is neat and easy to read. However your document should include all your code such that if I re-knit your R Markdown file I should be able to obtain the results you presented. Exception: If you want to highlight something specific about a piece of code, you’re welcomed to show that portion.Total | 100 pts |
---|---|
Proposal | 10 pts |
Presentation | 50 pts |
Write-up | 15 pts |
Reproducibility and organization | 10 pts |
Team peer evaluation | 10 pts |
Classmates' evaluation | 5 pts |
You will be asked to fill out a survey where you rate the contribution and teamwork of each team member out of 10 points. You will additionally report a contribution percentage for each team member. Filling out the survey is a prerequisite for getting credit on the team member evaluation.If you are suggesting that an individual did less than 20% of the work, please provide some explanation. If any individual gets an average peer score indicating that they did less than 10% of the work, this person will receive half the grade of the rest of the group. The contribution and teamwork scores for each team member will be averaged across the team to give the peer evaluation score.
The Digital Computational Studies department at Bates has a commitment to the use of open educational resources and software in the journey of designing an accessible computing education. Much of the course description, design, syllabus, website, and educational materials have been adapted from “Data Science in a Box,” https://datasciencebox.org/, by Mine Çetinkaya-Rundel under the Creative Commons Attribution Share Alike 4.0 International. Featured artwork by @AllisonHorst.