-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsyllabus.qmd
295 lines (211 loc) · 14.8 KB
/
syllabus.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
---
pdf-engine: lualatex
from: markdown+emoji
fontsize: 11pt
geometry: margin=1in
format:
pdf:
keep-tex: false
template-partials:
- partials/title.tex
- partials/before-body.tex
- partials/graphics.tex
dev: cairo_pdf
title: Syllabus
instructor: Susan Vanderplas
semester: Spring 2024
email: [email protected]
web: srvanderplas.github.io
officehours: \href{https://calendly.com/drvanderplas/officehours}{Schedule here}
office: Hardin 343D
classroom: TEAC 247
classhours: TR 11:00-12:15
categories:
- reading
- Week01
image: figs/reading.svg
type: reading
date: '2024-01-21'
---
```{r setup, include=FALSE}
# knitr::opts_chunk$set(cache=FALSE, dev='pdf')
knitr::opts_chunk$set(cache=F,
fig.path = 'figs/',
cache.path='cache/',
warning=F,
message=F)
knitr::opts_chunk$set(
fig.process = function(x) {
x2 = sub('-\\d+([.][a-z]+)$', '\\1', x)
if (file.rename(x, x2)) x2 else x
}
)
source("schedule.R")
```
# Course Description
Techniques for processing, cleaning, and visualizing messy data.
Topics include data reduction strategies, data transformations, combining multiple data sources, and special types of data (text, spatial, dates and times, hierarchical).
# Course Objectives
At the end of this course, students will
1. Use appropriate visualizations to explore and assess data and its applicability to a problem
2. Write code to reshape and reformat moderately complex and/or messy data in a reproducible manner
3. Create graphical displays to explore data, assess statistical models, and present model results
4. Adapt pre-existing code for sophisticated visualizations to new data.
5. Implement an algorithm or procedure for data modification given in pseudocode
6. Write pseudocode to describe and document modifications made to the dataset
7. Access documentation and source code to determine how software works (or why it doesn't)
8. Identify problems in a dataset that limit the analyses which are appropriate for the data
# Textbook
The primary textbook for this course is one that I have developed from other resources listed below.
It is available for free at \url{https://srvanderplas.github.io/stat-computing-r-python/}.
It is under construction/a work in progress, so it may be hard to work more than a couple of weeks ahead in this class using the primary textbook.
In addition, you may find it useful to reference some of the following resources that I have consulted while assembling the textbook. Most are available online for free, though some require an institutional email address.
- [R for Data Science](https://r4ds.had.co.nz/)
- [Python for Everybody](https://www.py4e.com/html3/)
- [Python for Data Analysis](https://www.oreilly.com/library/view/python-for-data/9781449323592/) - Available online for free if you register with your UNL email address.
- [Python Data Science Handbook](https://learning.oreilly.com/library/view/python-data-science/9781491912126/) - Available online for free if you register with your UNL email address.
- [Advanced R](http://adv-r.had.co.nz/)
# Class Schedule & Topic Outline
This schedule is tentative and subject to change.
Students are expected to read the corresponding textbook chapter (linked in Canvas) **before coming to class**.
For the most part, for each week's topic, there will be one or two corresponding textbook chapters.
\FloatBarrier
```{r calendar}
#| echo: false
#| eval: true
#| cache: false
#| warning: false
#| fig-width: 8
#| fig-height: 4
#| fig-align: center
#| fig-cap: "Course Calendar"
#| fig-pos: ht
class_cal
```
\small
```{r schedule, fig.pos = 'h'}
#| echo: false
#| eval: true
#| cache: false
#| warning: false
class_days %>% select(date, topic, time) %>%
mutate(time = ifelse(is.na(time), "", time)) %>%
mutate(date2 = format(date, "%b %e")) %>%
set_names(c("date", "Topic", "Time", "Date")) %>%
select(Date, Time, Topic) %>%
kableExtra::kable(caption = "Tentative schedule of class topics", format = "simple")
```
\normalsize
\FloatBarrier
# Course Policies
## Assessment/Grading
Assignments | Weight
----- | -----
Reading Quizzes | 10%
Weekly Homework & Participation | 50%
Midterm Exam | 20%
Project | 20%
Lower bounds for grade cutoffs are shown in the following table. I will not "round up" grades at the end of the semester beyond strict mathematical rules of rounding.
Letter grade | X + | X | X -
:--------: | -----: | -----: | -----:
A | 97 | 94 | 90
B | 87 | 84 | 80
C | 77 | 74 | 70
D | 67 | 64 | 61
F | | <61 |
Interpretation of this table: A grade of 85 will receive a B. A grade of 77 will receive a C+. A grade of 70 will receive a C-. Anything below a 61 will receive an F.
### Exams
One midterm exam will be given during the course of the semester, on dates noted on the Tentative Course Outline on the last page.
Exams will require that you write code to solve problems utilizing the course material.
You are expected to take exams at the scheduled times.
If this is impossible due to extreme circumstances (illness, death in the family, previously scheduled activities vital to academic program), please notify me and provide appropriate documentation.
No make-up exams will be given if I am not notified prior to the examination.
You will be required to obtain a note from your physician or advisor explaining the nature of the conflict.
### Homework
Approximately 8-12 homework assignments will be made over the course of the semester.
You will typically have one week to work on each of the assignments.
The only way to learn statistics is to practice working problems, and homework is therefore an essential part of the course.
Homework must be submitted in the file format specified, and should run or compile as submitted.
### Participation
All students are expected to attend and fully participate in class activities.
Participation will be determined based on a combination of class attendance and activities.
### Project
In lieu of a final exam, there will be a final project in this course.
You will create an approximately 45 minute screencast showing yourself analyzing a dataset from [TidyTuesday](https://github.com/rfordatascience/tidytuesday).
It may be useful to familiarize yourself with TidyTuesday videos as you work through this course; you can find the full set of videos by searching for [#tidytuesday on YouTube](https://www.youtube.com/hashtag/tidytuesday) or using this [custom playlist](https://youtube.com/playlist?list=PL2joUpumI-Z-VDAgquuNFlGm_hPE2RLGh) containing videos which seem to focus on topics that would be accessible and/or interesting to a Stat 251 student.
Details and rubrics describing the final project will be provided after the midterm exam.
The project will be completed independently and will allow you to demonstrate that you have met the learning objectives for this course.
Your video will be due the week before finals week.
During finals week, you will peer review two of your classmates' screen casts; this must be completed before the officially scheduled final exam period is finished.
### Late Policy
In general, assignments should be submitted by the assigned due date.
Late assignments will be accepted only under extenuating circumstances, and only if you have contacted me **prior** to the assignment due date and received permission to hand the assignment in late.
I reserve the right not to grade any assignments received after the assignment due date.
### Resubmission Policy
Learning how to program is a process that is ongoing.
I want you to not be afraid to make mistakes.
As a result, I allow you to re-submit homework over the course of the semester in order to make corrections and respond to my initial feedback.
This policy is subject to a few constraints:
- Each assignment should be resubmitted only once (to minimize repeat grading) unless you've obtained prior permission.
- You should resubmit assignments as soon as possible.
I reserve the right to cut off assignment resubmissions on a rolling basis (e.g. you have 3 weeks after the original due date) or based on the point in the semester (e.g. all homeworks due before Spring Break must be resubmitted by the week after we return from Spring Break).
<!-- There are multiple reasons for this policy: -->
<!-- - The material in this class is cumulative, so it is important that you understand a topic before we move on to more advanced material -->
<!-- - Students in the past who have resubmitted all homework just before the end of the semester don't do a good job and don't seem to retain the material. -->
<!-- - I want to keep my grading load to a reasonable level -->
I spend the extra time grading resubmissions because it reinforces your learning; this policy is not designed to ensure that you can get a better grade in this class.
This resubmission policy is subject to adjustments throughout the semester to ensure that this objective is met.
I reserve the right to limit or penalize resubmissions if it becomes clear that the current policy does not promote learning of the material and/or support the course objectives.
## Attendance
You are expected to attend class and/or participate virtually.
Consistent, repeated failure to attend class or actively participate in the course will affect the participation portion of your grade.
If you are feeling ill, please **do not come to class**.
Instead, review the material and work on the homework assignment, and then schedule an appointment with me to meet virtually.
## Inclement Weather
If in-person classes are canceled, you will be notified of the instructional continuity plan for this class by Canvas Announcement.
In most circumstances where there is power in the Lincoln area, we will hold class via Zoom if the university cancels class.
## Expectations
You can expect me to:
- reply to emails within 48 hours during the week (72 hours on weekends)
- be available in class to assist with assignments
- be available by appointment for additional help or discussion
I expect you to:
- Read the module material, take the reading quiz, and watch any applicable videos before coming to class
- Engage with the material and your classmates during class
- Be on-topic during class. While I encourage you to work on assignments during class, you should be working on homework for this class and not working on assignments from other classes.
- Seek help when you do not understand the material
- Communicate promptly if you anticipate that you will have trouble meeting deadlines or participating in a portion of the course.
- Do your own troubleshooting before contacting me for help (and mention things you've already tried when you do ask for help!)
- Be respectful and considerate of everyone in the class
### Make Mistakes!
Programming is the process of making a series of silly or stupid mistakes, and then slowly fixing each mistake (while adding a few more).
The only way to know how to fix these mistakes (and avoid them in the future) is to make them.
(Sometimes, you have to make the same mistake a few dozen times before you can avoid it in the future).
At some point during the class, you will find that you've spent 30 minutes staring at an error caused by a typo, a space, a parenthesis in the wrong place.
You may ask for help debugging this weird error, only to have someone immediately point out the problem... **it is always easier to see these things in someone else's code**.
This is part of programming, it is normal, and you shouldn't feel embarrassed or apologize (unless you put no effort into troubleshooting the problem before you asked for help)
If you manage to produce an error I haven't seen before, then congratulations! :clap:
You have achieved something special, and that achievement should be celebrated. :tada:
Each new and bizarre error is an opportunity to learn a bit more about the programming language, the operating system, or the interaction between the two.
## Assignment Evaluation Criteria
In every assignment, discussion, and written component of this class, you are expected to demonstrate that you are intellectually engaging with the material.
I will evaluate you based on this engagement, which means that technically correct but low effort answers which do not demonstrate engagement or understanding will receive no credit.
When you answer questions in this class, your goal is to show that you either understand the material or are actively engaging with it.
If you did not achieve this goal, then your answer is incomplete, regardless of whether or not it is technically correct.
This is not to encourage you to add unnecessary complexity to your answer - simple, elegant solutions are always preferable to unwieldy, complex solutions that accomplish the same task.
While this is not an English class, grammar and spelling are important, as is your ability to communicate technical information in writing; both of these criteria will be used in addition to assignment-specific rubrics to evaluate your work.
With the proliferation of AI tools such as Chat-GPT, I reserve the right to replace exam and homework grades with grades based on a discussion of your submitted solutions.
If you cannot explain why your solution is correct, or the logic behind your solution, then you will not receive credit.
Chat GPT can be a useful tool, but this course's objectives are meant to assess your ability to program in R and Python, not your ability to use AI systems.
## Academic Integrity and Class Conduct
You will be engaging with your classmates and me through in-person discussions and collaborative activities.
It is expected that everyone will engage in these interactions civilly and in good faith.
Discussion and disagreement are important parts of the learning process, but it is important that mutual respect prevail.
Individuals who detract from an atmosphere of civility and respect will be removed from the conversation or the classroom.
Students are expected to adhere to guidelines concerning academic dishonesty outlined in [Article III B.1 of the University's Student Code of Conduct](http://stuafs.unl.edu/dos/code).
The Statistics Department [academic integrity and grade appeal policy is available here](https://statistics.unl.edu/grade-appeals-and-academic-integrity-policy).
You must be able to explain how the logic works for any code you turn in.
This means that code you obtained from e.g. StackOverflow is fine to use if you can explain it and modify it for the purposes of this class, but if you cannot explain your code you will not get credit for the assignment.
This is in line with what is generally considered acceptable behavior in programming - reuse is fine (subject to the code's license) but you must be able to fully explain and modify any code you did not write yourself.
# Required University Information
See \url{https://executivevc.unl.edu/academic-excellence/teaching-resources/course-policies}.