PageSourceSearch

https://ds002r-fds.netlify.app/

html ds002r-fds.netlify.app collected 2026-10-03 10:40:03 UTC 54,255 bytes, 1,240 lines download raw bytes

1<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
3
4<meta charset="utf-8">
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=74fbad81-f871-4252-8909-44cabbc5f594
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
8<meta name="generator" content="quarto-1.10.18">
9
10<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
11
12<meta name="description" content="Schedule for DS002R, Foundations of Data Science in R, Pomona College, Fall 2026">
13
14<title>Schedule – Foundations of Data Science in R</title>
15<style>
16/* Default styles provided by pandoc.
17** See https://pandoc.org/MANUAL.html#variables-for-html for config info.
18*/
19span.smallcaps{font-variant: small-caps;}
20div.columns{display: flex; gap: 1.5em;}
21div.column{flex: auto;}
22@media screen {
23div.columns{gap: min(4vw, 1.5em);}
24div.column{overflow-x: auto;}
25}
26div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
27ul.task-list{list-style: none;}
28ul.task-list li input[type="checkbox"] {
29  width: 0.8em;
30  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
31  vertical-align: middle;
32}
33</style>
34
35
36<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 36
36
37<script src="site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 37
37
38<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 38
38
39<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 39
39
40<script src="site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 40
40
41<script src="site_libs/quarto-search/quarto-search.js"></script>
41
42<meta name="quarto:offset" content="./">
43<link href="./images/favicon.ico" rel="icon">
44<script src="site_libs/quarto-html/quarto.js" type="module"></script>
vendor: 1 bytes, line 44
44
45<script src="site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
vendor: 1 bytes, line 45
45
46<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 46
46
47<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 47
47
48<script src="site_libs/quarto-html/anchor.min.js"></script>
48
49<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
50<link href="site_libs/quarto-html/quarto-syntax-highlighting-64a204ab8560d761af7679ceaba22944.css" rel="stylesheet" id="quarto-text-highlighting-styles">
51<script src="site_libs/bootstrap/bootstrap.min.js"></script>
51
52<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
53<link href="site_libs/bootstrap/bootstrap-a8111dbb49da88347f07f358db18fe74.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
54<link href="site_libs/quarto-contrib/fontawesome6-1.2.0/all.min.css" rel="stylesheet">
55<link href="site_libs/quarto-contrib/fontawesome6-1.2.0/latex-fontsize.css" rel="stylesheet">
56<script id="quarto-search-options" type="application/json">{
57  "location": "navbar",
58  "copy-button": false,
59  "collapse-after": 3,
60  "panel-placement": "end",
61  "type": "overlay",
62  "limit": 50,
63  "keyboard-shortcut": [
64    "f",
65    "/",
66    "s"
67  ],
68  "show-item-context": false,
69  "language": {
70    "search-no-results-text": "No results",
71    "search-matching-documents-text": "matching documents",
72    "search-copy-link-title": "Copy link to search",
73    "search-hide-matches-text": "Hide additional matches",
74    "search-more-match-text": "more match in this document",
75    "search-more-matches-text": "more matches in this document",
76    "search-clear-button-title": "Clear",
77    "search-text-placeholder": "",
78    "search-detached-cancel-button-title": "Cancel",
79    "search-submit-button-title": "Submit",
80    "search-label": "Search"
81  }
82}</script>
82
83
84
85</head>
86
87<body class="nav-fixed fullcontent quarto-light">
88
89<div id="quarto-search-results"></div>
90  <header id="quarto-header" class="headroom fixed-top">
91    <nav class="navbar navbar-expand-lg " data-bs-theme="dark">
92      <div class="navbar-container container-fluid">
93      <div class="navbar-brand-container mx-auto">
94    <a href="https://ds002r-fds.netlify.app/" class="navbar-brand navbar-brand-logo">
95    <img src="./images/st47s.png" alt="" class="navbar-logo light-content">
96    <img src="./images/st47s.png" alt="" class="navbar-logo dark-content">
97    </a>
98    <a class="navbar-brand" href="https://ds002r-fds.netlify.app/">
99    <span class="navbar-title">Foundations of Data Science in R</span>
100    </a>
101  </div>
102            <div id="quarto-search" class="" title="Search"></div>
103          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
104  <span class="navbar-toggler-icon"></span>
105</button>
106          <div class="collapse navbar-collapse" id="navbarCollapse">
107            <ul class="navbar-nav navbar-nav-scroll ms-auto">
108  <li class="nav-item">
109    <a class='nav-link' href='/syllabus'> 
110<span class="menu-text">Syllabus</span></a>
111  </li>  
112  <li class="nav-item">
113    <a class='nav-link' href='/notes'> 
114<span class="menu-text">Class Notes</span></a>
115  </li>  
116  <li class="nav-item">
117    <a class='nav-link' href='/clicker_study'> 
118<span class="menu-text">Clicker Q</span></a>
119  </li>  
120  <li class="nav-item">
121    <a class='nav-link' href='/r-tip'> 
122<span class="menu-text">R tip</span></a>
123  </li>  
124  <li class="nav-item">
125    <a class='nav-link' href='/endangered_data'> 
126<span class="menu-text">Endangered Data</span></a>
127  </li>  
128  <li class="nav-item dropdown ">
129    <a class="nav-link dropdown-toggle" href="#" id="nav-menu-project" role="link" data-bs-toggle="dropdown" aria-expanded="false">
130 <span class="menu-text">Project</span>
131    </a>
132    <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-project">    
133        <li>
134    <a class='dropdown-item' href='/project'>
135 <span class="dropdown-text">semester mini-projects</span></a>
136  </li>  
137        <li>
138    <a class='dropdown-item' href='/project1'>
139 <span class="dropdown-text">project 1 - website</span></a>
140  </li>  
141        <li>
142    <a class="dropdown-item" href="./project2.html">
143 <span class="dropdown-text">project 2 - text analysis</span></a>
144  </li>  
145        <li>
146    <a class="dropdown-item" href="./project3.html">
147 <span class="dropdown-text">project 3 - simulation</span></a>
148  </li>  
149        <li>
150    <a class="dropdown-item" href="./project4.html">
151 <span class="dropdown-text">project 4 - ethics</span></a>
152  </li>  
153        <li>
154    <a class="dropdown-item" href="./project5.html">
155 <span class="dropdown-text">project 5 - SQL</span></a>
156  </li>  
157        <li>
158    <a class="dropdown-item" href="./project6.html">
159 <span class="dropdown-text">project 6 - fin</span></a>
160  </li>  
161        <li>
162    <a class="dropdown-item" href="https://hardin47.netlify.app/courses/data/">
163 <span class="dropdown-text">Data Sources</span></a>
164  </li>  
165    </ul>
166  </li>
167  <li class="nav-item">
168    <a class='nav-link' href='/github'> 
169<span class="menu-text">GitHub</span></a>
170  </li>  
171</ul>
172          </div> <!-- /navcollapse -->
173            <div class="quarto-navbar-tools">
174</div>
175      </div> <!-- /container-fluid -->
176    </nav>
177</header>
178<!-- content -->
179<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
180<!-- sidebar -->
181<!-- margin-sidebar -->
182    
183<!-- main -->
184<main class="content page-columns page-full" id="quarto-document-content">
185
186<header id="title-block-header" class="quarto-title-block default">
187<div class="quarto-title">
188<h1 class="title">Schedule</h1>
189</div>
190
191<div>
192  <div class="description">
193    <p>Schedule for DS002R, Foundations of Data Science in R, Pomona College, Fall 2026</p>
194  </div>
195</div>
196
197
198<div class="quarto-title-meta">
199
200    
201  
202    
203  </div>
204  
205
206
207</header>
208
209
210<!-- Note to self:  everything broke when i upgraded the gt package above 0.11.0 (to 0.11.1).  not sure why!  didn't like the function: gt::fmt_markdown(columns = everything())  -->
211<p>Here’s your roadmap for the semester! Each day, follow the general process outlined below:</p>
212<ul>
213<li><p>Enjoy the notes / text <i class="fas fa-book-open"></i>.</p></li>
214<li><p>Attend class, review the <i class="fas fa-pencil-alt"></i> worksheet and solutions. <i class="fas fa-desktop"></i> Slides from class are linked below.</p></li>
215<li><p>Discuss the reflection questions <i class="fas fa-lightbulb"></i> and ethics considerations <i class="fas fa-balance-scale"></i> (see the <i class="fas fa-book-open"></i> <a href="https://ds002r-fds.netlify.app/notes" target="_blank">class notes</a>) with your classmates and professor.</p></li>
216<li><p>The textbooks are <b> <a href="https://mdsr-book.github.io/mdsr3e/" target="_blank">Modern Data Science with R (MDSR), 3rd edition</a></b> by Baumer, Kaplan, and Horton and <b> <a href="https://r4ds.hadley.nz/" target="_blank">R for Data Science (R4DS), 2nd edition</a></b> by Wickham, Çetinkaya-Rundel, and Grolemund.</p></li>
217<li><p>Homework assignments are found at the <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">GitHub course organization</a>. Due dates are provided on each assignment (roughly every other week, Tuesday at midnight). See the <a href="https://ds002r-fds.netlify.app/github">course GitHub page</a> for more information on how to find, complete, and submit assignments.</p></li>
218</ul>
219<!--
220In order to use the icons, you need the fontawesome extension, https://github.com/quarto-ext/fontawesome
221
222quarto add quarto-ext/fontawesome
223-->
224<div class="cell page-columns page-full">
225<div class="cell-output-display column-screen-inset">
226<div id="ubjmszznxi" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
227<style>#ubjmszznxi table {
228  font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
229  -webkit-font-smoothing: antialiased;
230  -moz-osx-font-smoothing: grayscale;
231}
232
233#ubjmszznxi thead, #ubjmszznxi tbody, #ubjmszznxi tfoot, #ubjmszznxi tr, #ubjmszznxi td, #ubjmszznxi th {
234  border-style: none;
235}
236
237#ubjmszznxi p {
238  margin: 0;
239  padding: 0;
240}
241
242#ubjmszznxi .gt_table {
243  display: table;
244  border-collapse: collapse;
245  line-height: normal;
246  margin-left: auto;
247  margin-right: auto;
248  color: #333333;
249  font-size: 16px;
250  font-weight: normal;
251  font-style: normal;
252  background-color: #FFFFFF;
253  width: auto;
254  border-top-style: solid;
255  border-top-width: 2px;
256  border-top-color: #A8A8A8;
257  border-right-style: none;
258  border-right-width: 2px;
259  border-right-color: #D3D3D3;
260  border-bottom-style: solid;
261  border-bottom-width: 2px;
262  border-bottom-color: #A8A8A8;
263  border-left-style: none;
264  border-left-width: 2px;
265  border-left-color: #D3D3D3;
266}
267
268#ubjmszznxi .gt_caption {
269  padding-top: 4px;
270  padding-bottom: 4px;
271}
272
273#ubjmszznxi .gt_title {
274  color: #333333;
275  font-size: 125%;
276  font-weight: initial;
277  padding-top: 4px;
278  padding-bottom: 4px;
279  padding-left: 5px;
280  padding-right: 5px;
281  border-bottom-color: #FFFFFF;
282  border-bottom-width: 0;
283}
284
285#ubjmszznxi .gt_subtitle {
286  color: #333333;
287  font-size: 85%;
288  font-weight: initial;
289  padding-top: 3px;
290  padding-bottom: 5px;
291  padding-left: 5px;
292  padding-right: 5px;
293  border-top-color: #FFFFFF;
294  border-top-width: 0;
295}
296
297#ubjmszznxi .gt_heading {
298  background-color: #FFFFFF;
299  text-align: center;
300  border-bottom-color: #FFFFFF;
301  border-left-style: none;
302  border-left-width: 1px;
303  border-left-color: #D3D3D3;
304  border-right-style: none;
305  border-right-width: 1px;
306  border-right-color: #D3D3D3;
307}
308
309#ubjmszznxi .gt_bottom_border {
310  border-bottom-style: solid;
311  border-bottom-width: 2px;
312  border-bottom-color: #D3D3D3;
313}
314
315#ubjmszznxi .gt_col_headings {
316  border-top-style: solid;
317  border-top-width: 2px;
318  border-top-color: #D3D3D3;
319  border-bottom-style: solid;
320  border-bottom-width: 2px;
321  border-bottom-color: #D3D3D3;
322  border-left-style: none;
323  border-left-width: 1px;
324  border-left-color: #D3D3D3;
325  border-right-style: none;
326  border-right-width: 1px;
327  border-right-color: #D3D3D3;
328}
329
330#ubjmszznxi .gt_col_heading {
331  color: #333333;
332  background-color: #FFFFFF;
333  font-size: 100%;
334  font-weight: normal;
335  text-transform: inherit;
336  border-left-style: none;
337  border-left-width: 1px;
338  border-left-color: #D3D3D3;
339  border-right-style: none;
340  border-right-width: 1px;
341  border-right-color: #D3D3D3;
342  vertical-align: bottom;
343  padding-top: 5px;
344  padding-bottom: 6px;
345  padding-left: 5px;
346  padding-right: 5px;
347  overflow-x: hidden;
348}
349
350#ubjmszznxi .gt_column_spanner_outer {
351  color: #333333;
352  background-color: #FFFFFF;
353  font-size: 100%;
354  font-weight: normal;
355  text-transform: inherit;
356  padding-top: 0;
357  padding-bottom: 0;
358  padding-left: 4px;
359  padding-right: 4px;
360}
361
362#ubjmszznxi .gt_column_spanner_outer:first-child {
363  padding-left: 0;
364}
365
366#ubjmszznxi .gt_column_spanner_outer:last-child {
367  padding-right: 0;
368}
369
370#ubjmszznxi .gt_column_spanner {
371  border-bottom-style: solid;
372  border-bottom-width: 2px;
373  border-bottom-color: #D3D3D3;
374  vertical-align: bottom;
375  padding-top: 5px;
376  padding-bottom: 5px;
377  overflow-x: hidden;
378  display: inline-block;
379  width: 100%;
380}
381
382#ubjmszznxi .gt_spanner_row {
383  border-bottom-style: hidden;
384}
385
386#ubjmszznxi .gt_group_heading {
387  padding-top: 8px;
388  padding-bottom: 8px;
389  padding-left: 5px;
390  padding-right: 5px;
391  color: #333333;
392  background-color: #FFFFFF;
393  font-size: 100%;
394  font-weight: initial;
395  text-transform: inherit;
396  border-top-style: solid;
397  border-top-width: 2px;
398  border-top-color: #D3D3D3;
399  border-bottom-style: solid;
400  border-bottom-width: 2px;
401  border-bottom-color: #D3D3D3;
402  border-left-style: none;
403  border-left-width: 1px;
404  border-left-color: #D3D3D3;
405  border-right-style: none;
406  border-right-width: 1px;
407  border-right-color: #D3D3D3;
408  vertical-align: middle;
409  text-align: left;
410}
411
412#ubjmszznxi .gt_empty_group_heading {
413  padding: 0.5px;
414  color: #333333;
415  background-color: #FFFFFF;
416  font-size: 100%;
417  font-weight: initial;
418  border-top-style: solid;
419  border-top-width: 2px;
420  border-top-color: #D3D3D3;
421  border-bottom-style: solid;
422  border-bottom-width: 2px;
423  border-bottom-color: #D3D3D3;
424  vertical-align: middle;
425}
426
427#ubjmszznxi .gt_from_md > :first-child {
428  margin-top: 0;
429}
430
431#ubjmszznxi .gt_from_md > :last-child {
432  margin-bottom: 0;
433}
434
435#ubjmszznxi .gt_row {
436  padding-top: 8px;
437  padding-bottom: 8px;
438  padding-left: 5px;
439  padding-right: 5px;
440  margin: 10px;
441  border-top-style: solid;
442  border-top-width: 1px;
443  border-top-color: #D3D3D3;
444  border-left-style: none;
445  border-left-width: 1px;
446  border-left-color: #D3D3D3;
447  border-right-style: none;
448  border-right-width: 1px;
449  border-right-color: #D3D3D3;
450  vertical-align: middle;
451  overflow-x: hidden;
452}
453
454#ubjmszznxi .gt_stub {
455  color: #333333;
456  background-color: #FFFFFF;
457  font-size: 100%;
458  font-weight: initial;
459  text-transform: inherit;
460  border-right-style: solid;
461  border-right-width: 2px;
462  border-right-color: #D3D3D3;
463  padding-left: 5px;
464  padding-right: 5px;
465}
466
467#ubjmszznxi .gt_stub_row_group {
468  color: #333333;
469  background-color: #FFFFFF;
470  font-size: 100%;
471  font-weight: initial;
472  text-transform: inherit;
473  border-right-style: solid;
474  border-right-width: 2px;
475  border-right-color: #D3D3D3;
476  padding-left: 5px;
477  padding-right: 5px;
478  vertical-align: top;
479}
480
481#ubjmszznxi .gt_row_group_first td {
482  border-top-width: 2px;
483}
484
485#ubjmszznxi .gt_row_group_first th {
486  border-top-width: 2px;
487}
488
489#ubjmszznxi .gt_summary_row {
490  color: #333333;
491  background-color: #FFFFFF;
492  text-transform: inherit;
493  padding-top: 8px;
494  padding-bottom: 8px;
495  padding-left: 5px;
496  padding-right: 5px;
497}
498
499#ubjmszznxi .gt_first_summary_row {
500  border-top-style: solid;
501  border-top-color: #D3D3D3;
502}
503
504#ubjmszznxi .gt_first_summary_row.thick {
505  border-top-width: 2px;
506}
507
508#ubjmszznxi .gt_last_summary_row {
509  padding-top: 8px;
510  padding-bottom: 8px;
511  padding-left: 5px;
512  padding-right: 5px;
513  border-bottom-style: solid;
514  border-bottom-width: 2px;
515  border-bottom-color: #D3D3D3;
516}
517
518#ubjmszznxi .gt_grand_summary_row {
519  color: #333333;
520  background-color: #FFFFFF;
521  text-transform: inherit;
522  padding-top: 8px;
523  padding-bottom: 8px;
524  padding-left: 5px;
525  padding-right: 5px;
526}
527
528#ubjmszznxi .gt_first_grand_summary_row {
529  padding-top: 8px;
530  padding-bottom: 8px;
531  padding-left: 5px;
532  padding-right: 5px;
533  border-top-style: double;
534  border-top-width: 6px;
535  border-top-color: #D3D3D3;
536}
537
538#ubjmszznxi .gt_last_grand_summary_row_top {
539  padding-top: 8px;
540  padding-bottom: 8px;
541  padding-left: 5px;
542  padding-right: 5px;
543  border-bottom-style: double;
544  border-bottom-width: 6px;
545  border-bottom-color: #D3D3D3;
546}
547
548#ubjmszznxi .gt_striped {
549  background-color: rgba(128, 128, 128, 0.05);
550}
551
552#ubjmszznxi .gt_table_body {
553  border-top-style: solid;
554  border-top-width: 2px;
555  border-top-color: #D3D3D3;
556  border-bottom-style: solid;
557  border-bottom-width: 2px;
558  border-bottom-color: #D3D3D3;
559}
560
561#ubjmszznxi .gt_footnotes {
562  color: #333333;
563  background-color: #FFFFFF;
564  border-bottom-style: none;
565  border-bottom-width: 2px;
566  border-bottom-color: #D3D3D3;
567  border-left-style: none;
568  border-left-width: 2px;
569  border-left-color: #D3D3D3;
570  border-right-style: none;
571  border-right-width: 2px;
572  border-right-color: #D3D3D3;
573}
574
575#ubjmszznxi .gt_footnote {
576  margin: 0px;
577  font-size: 90%;
578  padding-top: 4px;
579  padding-bottom: 4px;
580  padding-left: 5px;
581  padding-right: 5px;
582}
583
584#ubjmszznxi .gt_sourcenotes {
585  color: #333333;
586  background-color: #FFFFFF;
587  border-bottom-style: none;
588  border-bottom-width: 2px;
589  border-bottom-color: #D3D3D3;
590  border-left-style: none;
591  border-left-width: 2px;
592  border-left-color: #D3D3D3;
593  border-right-style: none;
594  border-right-width: 2px;
595  border-right-color: #D3D3D3;
596}
597
598#ubjmszznxi .gt_sourcenote {
599  font-size: 90%;
600  padding-top: 4px;
601  padding-bottom: 4px;
602  padding-left: 5px;
603  padding-right: 5px;
604}
605
606#ubjmszznxi .gt_left {
607  text-align: left;
608}
609
610#ubjmszznxi .gt_center {
611  text-align: center;
612}
613
614#ubjmszznxi .gt_right {
615  text-align: right;
616  font-variant-numeric: tabular-nums;
617}
618
619#ubjmszznxi .gt_font_normal {
620  font-weight: normal;
621}
622
623#ubjmszznxi .gt_font_bold {
624  font-weight: bold;
625}
626
627#ubjmszznxi .gt_font_italic {
628  font-style: italic;
629}
630
631#ubjmszznxi .gt_super {
632  font-size: 65%;
633}
634
635#ubjmszznxi .gt_footnote_marks {
636  font-size: 75%;
637  vertical-align: 0.4em;
638  position: initial;
639}
640
641#ubjmszznxi .gt_asterisk {
642  font-size: 100%;
643  vertical-align: 0;
644}
645
646#ubjmszznxi .gt_indent_1 {
647  text-indent: 5px;
648}
649
650#ubjmszznxi .gt_indent_2 {
651  text-indent: 10px;
652}
653
654#ubjmszznxi .gt_indent_3 {
655  text-indent: 15px;
656}
657
658#ubjmszznxi .gt_indent_4 {
659  text-indent: 20px;
660}
661
662#ubjmszznxi .gt_indent_5 {
663  text-indent: 25px;
664}
665
666#ubjmszznxi .katex-display {
667  display: inline-flex !important;
668  margin-bottom: 0.75em !important;
669}
670
671#ubjmszznxi div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
672  height: 0px !important;
673}
674</style>
675
676<table class="gt_table caption-top table table-sm table-striped small" data-quarto-bootstrap="false">
677<colgroup>
678<col style="width: 8%">
679<col style="width: 23%">
680<col style="width: 23%">
681<col style="width: 23%">
682<col style="width: 23%">
683</colgroup>
684<thead>
685<tr class="gt_col_headings header">
686<th id="date" class="gt_col_heading gt_columns_bottom_border gt_left" data-quarto-table-cell-role="th" scope="col">date</th>
687<th id="topic" class="gt_col_heading gt_columns_bottom_border gt_left" data-quarto-table-cell-role="th" scope="col">topic</th>
688<th id="class-materials" class="gt_col_heading gt_columns_bottom_border gt_left" data-quarto-table-cell-role="th" scope="col">class materials</th>
689<th id="due-dates" class="gt_col_heading gt_columns_bottom_border gt_left" data-quarto-table-cell-role="th" scope="col">due dates</th>
690<th id="resources" class="gt_col_heading gt_columns_bottom_border gt_left" data-quarto-table-cell-role="th" scope="col">resources</th>
691</tr>
692</thead>
693<tbody class="gt_table_body">
694<tr class="odd">
695<td class="gt_row gt_left" headers="date">Week 1 <br> 8.31.26</td>
696<td class="gt_row gt_left" headers="topic">intro + <br> R + Positron + <br> GitHub</td>
697<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/01-intro.html" target="_blank">Introduction</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mdsr-book.github.io/mdsr3e/01-intro.html" target="_blank"> MDSR Prologue</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i>
697 <a href="https://www.openscapes.org/blog/2022/05/27/github-illustrated-series/" target="_blank">Why Git? + monsters</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-08-31-intro' target='_blank'> Introduction</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws1_ds2_f26_DSproj.pdf" target="_blank">WS 1 - DS project</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws2_ds2_f26_ggplot.pdf" target="_blank">WS 2 - ggplot</a></td>
698<td class="gt_row gt_left" headers="due dates"></td>
699<td class="gt_row gt_left" headers="resources"><i class="fa-solid fa-comments" aria-label="comments"></i> <a href="https://drive.google.com/file/d/1mdaX6Q5DtYMKAujw5ot1LMcP0JLjC2fp/view?usp=sharing" target="_blank">NSSD - Compromised Shoe Situation</a></td>
700</tr>
701<tr class="even">
702<td class="gt_row gt_left" headers="date">Week 2 <br> 9.7.26</td>
703<td class="gt_row gt_left" headers="topic">data viz</td>
704<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/visualize" target="_blank"> R4DS Visualize</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/10-grammar-graphics.html" target="_blank">graphics</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/11-ggplot.html" target="_blank">ggplot</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-09-02-dataviz' target='_blank'> Data Viz</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws3_ds2_f26_tufte.pdf" target="_blank">WS 3 - Tufte</a></td>
705<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall206/repositories" target="_blank">HW 1</a> - due 9.8.26</td>
706<td class="gt_row gt_left" headers="resources"><i class="fa-solid fa-comments" aria-label="comments"></i> Tufte. 1997. <a href="https://www.edwardtufte.com/book/visual-and-statistical-thinking-displays-of-evidence-for-making-decisions/" target="_blank">Visual and Statistical Thinking: Displays of Evidence for Making Decisions</a></td>
707</tr>
708<tr class="odd">
709<td class="gt_row gt_left" headers="date">Week 3 <br> 9.14.26</td>
710<td class="gt_row gt_left" headers="topic">data viz</td>
711<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/visualize" target="_blank"> R4DS Visualize</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/10-grammar-graphics.html" target="_blank">graphics</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/11-ggplot.html" target="_blank">ggplot</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-09-02-dataviz' target='_blank'> Data Viz</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-09-14-verbs' target='_blank'> Data Verbs</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws4_ds2_f26_tidy.pdf" target="_blank">WS 4 - Tidy data</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws5_ds2_f26_verbs.pdf" target="_blank">WS 5 - Data Verbs</a></td>
712<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">HW 2</a> - due 9.15.26</td>
713<td class="gt_row gt_left" headers="resources"></td>
714</tr>
715<tr class="even">
716<td class="gt_row gt_left" headers="date">Week 4 <br> 9.21.26</td>
717<td class="gt_row gt_left" headers="topic">data wrangling</td>
718<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.had.co.nz/transform.html" target="_blank"> R4DS Transform</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/07-wrangling.html" target="_blank">wrangling</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-09-21-pivotjoin' target='_blank'> Pivot + Join</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws6_ds2_f26_join.pdf" target="_blank">WS 6 - Joining</a></td>
719<td class="gt_row gt_left" headers="due dates">
719<i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">HW 3</a> - due 9.22.26 <br> <i class="fa-regular fa-circle-question"></i> Quiz 1 9.23.26</td>
720<td class="gt_row gt_left" headers="resources"></td>
721</tr>
722<tr class="odd">
723<td class="gt_row gt_left" headers="date">Week 5 <br> 9.28.26</td>
724<td class="gt_row gt_left" headers="topic">data types</td>
725<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/factors" target="_blank"> R4DS Factors</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/strings" target="_blank"> R4DS Strings</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/08-text-analysis.html" target="_blank">Text analysis</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href='https://ds002r-fds.netlify.app/slides/2026-09-28-types' target='_blank'>Data Types</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws7_ds2_f26_strings.pdf" target="_blank">WS 7 - Strings</a> <br> <i class="fa-solid fa-pencil" aria-label="pencil"></i> <a href="https://ds002r-fds.netlify.app/handout/ws8_ds2_f26_factors.pdf" target="_blank">WS 8 - Factors</a></td>
726<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project1">Project 1</a> - due 9.30.26</td>
727<td class="gt_row gt_left" headers="resources"></td>
728</tr>
729<tr class="even">
730<td class="gt_row gt_left" headers="date">Week 6 <br> 10.5.26</td>
731<td class="gt_row gt_left" headers="topic">regular <br> expressions</td>
732<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/regexps.html" target="_blank"> R4DS Regular expressions</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/09-reg-expr.html" target="_blank">Regular expressions</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Regular expressions</a></td>
733<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">HW 4</a> - due 10.6.26 <br> <i class="fa-regular fa-circle-question"></i> Quiz 2 10.7.26</td>
734<td class="gt_row gt_left" headers="resources"></td>
735</tr>
736<tr class="odd">
737<td class="gt_row gt_left" headers="date">Week 7 <br> 10.12.26</td>
738<td class="gt_row gt_left" headers="topic">functions + <br> iteration</td>
739<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/functions" target="_blank"> R4DS Fuctions</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/iteration" target="_blank"> R4DS Iteration</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/12-iteration.html" target="_blank">Functions + Iteration</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">functions + iteration</a></td>
740<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project2">Project 2</a> - due 10.14.26</td>
741<td class="gt_row gt_left" headers="resources"></td>
742</tr>
743<tr class="even">
744<td class="gt_row gt_left" headers="date">Week 8 <br> 10.19.26</td>
745<td class="gt_row gt_left" headers="topic">fall break + <br> code review + <br> reprex</td>
746<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://www.tidyverse.org/help/" target="_blank"> reproducible examples</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://style.tidyverse.org/" target="_blank"> Tidyverse style guide</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/16-reprex.html" target="_blank">Reproducible examples</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">help me help you</a></td>
747<td class="gt_row gt_left" headers="due dates"></td>
748<td class="gt_row gt_left" headers="resources"></td>
749</tr>
750<tr class="odd">
751<td class="gt_row gt_left" headers="date">Week 9 <br> 10.26.26</td>
752<td class="gt_row gt_left" headers="topic">simulations</td>
753<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mdsr-book.github.io/mdsr3e/13-simulation.html" target="_blank"> MDSR Simulations</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/12-iteration.html" target="_blank">Simulations</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Simulations</a></td>
754<td class="gt_row gt_left" headers="due dates">
754<i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall206/repositories" target="_blank">HW 5</a> - due 10.27.26 <br> <i class="fa-regular fa-circle-question"></i> Quiz 3 <b> Monday </b> 10.26.26</td>
755<td class="gt_row gt_left" headers="resources"></td>
756</tr>
757<tr class="even">
758<td class="gt_row gt_left" headers="date">Week 10 <br> 11.2.26</td>
759<td class="gt_row gt_left" headers="topic">permutation tests</td>
760<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/13-permutation-tests.html" target="_blank">Permutation tests</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="l" target="_blank">Permutation tests</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Data Science Ethics</a></td>
761<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project3">Project 3</a> - due 11.4.26</td>
762<td class="gt_row gt_left" headers="resources"></td>
763</tr>
764<tr class="odd">
765<td class="gt_row gt_left" headers="date">Week 11 <br> 11.9.26</td>
766<td class="gt_row gt_left" headers="topic">web scraping</td>
767<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/webscraping" target="_blank">R4DS Web scraping</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/03-rvest.html" target="_blank">Web scraping</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Web scraping</a></td>
768<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">HW 6</a> - due 11.10.26 <br> <i class="fa-regular fa-circle-question"></i> Quiz 4 11.11.26</td>
769<td class="gt_row gt_left" headers="resources"></td>
770</tr>
771<tr class="even">
772<td class="gt_row gt_left" headers="date">Week 12 <br> 11.16.26</td>
773<td class="gt_row gt_left" headers="topic">SQL</td>
774<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/databases.html" target="_blank">R4DS Databases</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mdsr-book.github.io/mdsr3e/15-sqlI.html" target="_blank">MDSR Database querying</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/04-sql-in-R.html" target="_blank">SQL</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">SQL DBMS</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">SQL statements</a></td>
775<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project4">Project 4</a> - due 11.8.26</td>
776<td class="gt_row gt_left" headers="resources"></td>
777</tr>
778<tr class="odd">
779<td class="gt_row gt_left" headers="date">Week 13 <br> 11.23.26</td>
780<td class="gt_row gt_left" headers="topic">Shiny(?)+ <br> Thanksgiving</td>
781<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mastering-shiny.org/" target="_blank">Matering Shiny</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mdsr-book.github.io/mdsr3e/14-datavizIII.html#sec-shiny" target="_blank">MDSR Interactive web apps with Shiny</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/12-shiny.html" target="_blank">Shiny</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Shiny</a></td>
782<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-code" aria-label="code"></i> <a href="https://github.com/orgs/ST47S-FODS-Fall2026/repositories" target="_blank">HW 7</a> - due 11.24.26 <br> <i class="fa-regular fa-circle-question"></i> Quiz 5 <b> Monday </b> 11.23.26 <br>(or Thursday 11.19.26)</td>
783<td class="gt_row gt_left" headers="resources"></td>
784</tr>
785<tr class="even">
786<td class="gt_row gt_left" headers="date">Week 14 <br> 11.30.26</td>
787<td class="gt_row gt_left" headers="topic">SQL</td>
788<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://r4ds.hadley.nz/databases.html" target="_blank">R4DS Databases</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://mdsr-book.github.io/mdsr3e/15-sqlI.html" target="_blank">MDSR Database querying</a> <br> <i class="fa-solid fa-book-open" aria-label="book-open"></i> <a href="https://st47s.com/DS002R/Notes/06-sql-joins.html" target="_blank">SQL joins</a> <br> <i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">SQL joins</a></td>
789<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project5">Project 5</a> - due 12.2.26</td>
790<td class="gt_row gt_left" headers="resources"></td>
791</tr>
792<tr class="odd">
793<td class="gt_row gt_left" headers="date">Week 15 <br> 12.7.26</td>
794<td class="gt_row gt_left" headers="topic">Shiny(?)</td>
795<td class="gt_row gt_left" headers="class materials"><i class="fa-solid fa-desktop" aria-label="desktop"></i> <a href="" target="_blank">Fin</a></td>
796<td class="gt_row gt_left" headers="due dates"><i class="fa-regular fa-circle-question"></i> Quiz 6 12.9.26</td>
797<td class="gt_row gt_left" headers="resources">presentations (?) 12.11.26, 9am - noon</td>
798</tr>
799<tr class="even">
800<td class="gt_row gt_left" headers="date">Week 16 <br> 12.14.26</td>
801<td class="gt_row gt_left" headers="topic"></td>
802<td class="gt_row gt_left" headers="class materials"></td>
803<td class="gt_row gt_left" headers="due dates"><i class="fa-solid fa-chart-column"></i> <a href="https://ds002r-fds.netlify.app/project6">Project 6</a> - due 12.18.26</td>
804<td class="gt_row gt_left" headers="resources">presentations (?) 12.18.26, 9am - noon</td>
805</tr>
806</tbody>
807</table>
808
809</div>
810</div>
811</div>
812
813
814
815<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div>CC-BY-SA-4.0</div></div></section></div></main> <!-- /main -->
816<script id="quarto-html-after-body" type="application/javascript">
817  window.document.addEventListener("DOMContentLoaded", function (event) {
818    const icon = "";
819    const anchorJS = new window.AnchorJS();
820    anchorJS.options = {
821      placement: 'right',
822      icon: icon
823    };
824    anchorJS.add('.anchored');
825    const isCodeAnnotation = (el) => {
826      for (const clz of el.classList) {
827        if (clz.startsWith('code-annotation-')) {                     
828          return true;
829        }
830      }
831      return false;
832    }
833    const onCopySuccess = function(e) {
834      // button target
835      const button = e.trigger;
836      // don't keep focus
837      button.blur();
838      // flash "checked"
839      button.classList.add('code-copy-button-checked');
840      var currentTitle = button.getAttribute("title");
841      button.setAttribute("title", "Copied!");
842      let tooltip;
843      if (window.bootstrap) {
844        button.setAttribute("data-bs-toggle", "tooltip");
845        button.setAttribute("data-bs-placement", "left");
846        button.setAttribute("data-bs-title", "Copied!");
847        tooltip = new bootstrap.Tooltip(button, 
848          { trigger: "manual", 
849            customClass: "code-copy-button-tooltip",
850            offset: [0, -8]});
851        tooltip.show();    
852      }
853      setTimeout(function() {
854        if (tooltip) {
855          tooltip.hide();
856          button.removeAttribute("data-bs-title");
857          button.removeAttribute("data-bs-toggle");
858          button.removeAttribute("data-bs-placement");
859        }
860        button.setAttribute("title", currentTitle);
861        button.classList.remove('code-copy-button-checked');
862      }, 1000);
863      // clear code selection
864      e.clearSelection();
865    }
866    const getTextToCopy = function(trigger) {
867      const outerScaffold = trigger.parentElement.cloneNode(true);
868      const codeEl = outerScaffold.querySelector('code');
869      for (const childEl of codeEl.children) {
870        if (isCodeAnnotation(childEl)) {
871          childEl.remove();
872        }
873      }
874      return codeEl.innerText;
875    }
876    const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
877      text: getTextToCopy
878    });
879    clipboard.on('success', onCopySuccess);
880    if (window.document.getElementById('quarto-embedded-source-code-modal')) {
881      const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
882        text: getTextToCopy,
883        container: window.document.getElementById('quarto-embedded-source-code-modal')
884      });
885      clipboardModal.on('success', onCopySuccess);
886    }
887      var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
888      var mailtoRegex = new RegExp(/^mailto:/);
889        var filterRegex = new RegExp("https:\/\/ds002r-fds\.netlify\.app\/");
890      var isInternal = (href) => {
891          return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
892      }
893      // Inspect non-navigation links and adorn them if external
894     var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
895      for (var i=0; i<links.length; i++) {
896        const link = links[i];
897        if (!isInternal(link.href)) {
898          // undo the damage that might have been done by quarto-nav.js in the case of
899          // links that we want to consider external
900          if (link.dataset.originalHref !== undefined) {
901            link.href = link.dataset.originalHref;
902          }
903        }
904      }
905    function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
906      const config = {
907        allowHTML: true,
908        maxWidth: 500,
909        delay: 100,
910        arrow: false,
911        appendTo: function(el) {
912            return el.parentElement;
913        },
914        interactive: true,
915        interactiveBorder: 10,
916        theme: 'quarto',
917        placement: 'bottom-start',
918      };
919      if (contentFn) {
920        config.content = contentFn;
921      }
922      if (onTriggerFn) {
923        config.onTrigger = onTriggerFn;
924      }
925      if (onUntriggerFn) {
926        config.onUntrigger = onUntriggerFn;
927      }
928      window.tippy(el, config); 
929    }
930    const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
931    for (var i=0; i<noterefs.length; i++) {
932      const ref = noterefs[i];
933      tippyHover(ref, function() {
934        // use id or data attribute instead here
935        let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
936        try { href = new URL(href).hash; } catch {}
937        const id = href.replace(/^#\/?/, "");
938        const note = window.document.getElementById(id);
939        if (note) {
940          return note.innerHTML;
941        } else {
942          return "";
943        }
944      });
945    }
946    const xrefs = window.document.querySelectorAll('a.quarto-xref');
947    const processXRef = (id, note) => {
948      // Strip column container classes
949      const stripColumnClz = (el) => {
950        el.classList.remove("page-full", "page-columns");
951        if (el.children) {
952          for (const child of el.children) {
953            stripColumnClz(child);
954          }
955        }
956      }
957      stripColumnClz(note)
958      if (id === null || id.startsWith('sec-')) {
959        // Special case sections, only their first couple elements
960        const container = document.createElement("div");
961        if (note.children && note.children.length > 2) {
962          container.appendChild(note.children[0].cloneNode(true));
963          for (let i = 1; i < note.children.length; i++) {
964            const child = note.children[i];
965            if (child.tagName === "P" && child.innerText === "") {
966              continue;
967            } else {
968              container.appendChild(child.cloneNode(true));
969              break;
970            }
971          }
972          if (window.Quarto?.typesetMath) {
973            window.Quarto.typesetMath(container);
974          }
975          return container.innerHTML
976        } else {
977          if (window.Quarto?.typesetMath) {
978            window.Quarto.typesetMath(note);
979          }
980          return note.innerHTML;
981        }
982      } else {
983        // Remove any anchor links if they are present
984        const anchorLink = note.querySelector('a.anchorjs-link');
985        if (anchorLink) {
986          anchorLink.remove();
987        }
988        if (window.Quarto?.typesetMath) {
989          window.Quarto.typesetMath(note);
990        }
991        if (note.classList.contains("callout")) {
992          return note.outerHTML;
993        } else {
994          return note.innerHTML;
995        }
996      }
997    }
998    for (var i=0; i<xrefs.length; i++) {
999      const xref = xrefs[i];
1000      tippyHover(xref, undefined, function(instance) {
1001        instance.disable();
1002        let url = xref.getAttribute('href');
1003        let hash = undefined; 
1004        if (url.startsWith('#')) {
1005          hash = url;
1006        } else {
1007          try { hash = new URL(url).hash; } catch {}
1008        }
1009        if (hash) {
1010          const id = hash.replace(/^#\/?/, "");
1011          const note = window.document.getElementById(id);
1012          if (note !== null) {
1013            try {
1014              const html = processXRef(id, note.cloneNode(true));
1015              instance.setContent(html);
1016            } finally {
1017              instance.enable();
1018              instance.show();
1019            }
1020          } else {
1021            // See if we can fetch this
1022            fetch(url.split('#')[0])
1023            .then(res => res.text())
1024            .then(html => {
1025              const parser = new DOMParser();
1026              const htmlDoc = parser.parseFromString(html, "text/html");
1027              const note = htmlDoc.getElementById(id);
1028              if (note !== null) {
1029                const html = processXRef(id, note);
1030                instance.setContent(html);
1031              } 
1032            }).finally(() => {
1033              instance.enable();
1034              instance.show();
1035            });
1036          }
1037        } else {
1038          // See if we can fetch a full url (with no hash to target)
1039          // This is a special case and we should probably do some content thinning / targeting
1040          fetch(url)
1041          .then(res => res.text())
1042          .then(html => {
1043            const parser = new DOMParser();
1044            const htmlDoc = parser.parseFromString(html, "text/html");
1045            const note = htmlDoc.querySelector('main.content');
1046            if (note !== null) {
1047              // This should only happen for chapter cross references
1048              // (since there is no id in the URL)
1049              // remove the first header
1050              if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
1051                note.children[0].remove();
1052              }
1053              const html = processXRef(null, note);
1054              instance.setContent(html);
1055            } 
1056          }).finally(() => {
1057            instance.enable();
1058            instance.show();
1059          });
1060        }
1061      }, function(instance) {
1062      });
1063    }
1064        let selectedAnnoteEl;
1065        const selectorForAnnotation = ( cell, annotation) => {
1066          let cellAttr = 'data-code-cell="' + cell + '"';
1067          let lineAttr = 'data-code-annotation="' +  annotation + '"';
1068          const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
1069          return selector;
1070        }
1071        const selectCodeLines = (annoteEl) => {
1072          const doc = window.document;
1073          const targetCell = annoteEl.getAttribute("data-target-cell");
1074          const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
1075          const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
1076          const lines = annoteSpan.getAttribute("data-code-lines").split(",");
1077          const lineIds = lines.map((line) => {
1078            return targetCell + "-" + line;
1079          })
1080          let top = null;
1081          let height = null;
1082          let parent = null;
1083          if (lineIds.length > 0) {
1084              //compute the position of the single el (top and bottom and make a div)
1085              const el = window.document.getElementById(lineIds[0]);
1086              top = el.offsetTop;
1087              height = el.offsetHeight;
1088              parent = el.parentElement.parentElement;
1089            if (lineIds.length > 1) {
1090              const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
1091              const bottom = lastEl.offsetTop + lastEl.offsetHeight;
1092              height = bottom - top;
1093            }
1094            if (top !== null && height !== null && parent !== null) {
1095              // cook up a div (if necessary) and position it 
1096              let div = window.document.getElementById("code-annotation-line-highlight");
1097              if (div === null) {
1098                div = window.document.createElement("div");
1099                div.setAttribute("id", "code-annotation-line-highlight");
1100                div.style.position = 'absolute';
1101                parent.appendChild(div);
1102              }
1103              div.style.top = top - 2 + "px";
1104              div.style.height = height + 4 + "px";
1105              div.style.left = 0;
1106              let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
1107              if (gutterDiv === null) {
1108                gutterDiv = window.document.createElement("div");
1109                gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
1110                gutterDiv.style.position = 'absolute';
1111                const codeCell = window.document.getElementById(targetCell);
1112                const gutter = codeCell.querySelector('.code-annotation-gutter');
1113                gutter.appendChild(gutterDiv);
1114              }
1115              gutterDiv.style.top = top - 2 + "px";
1116              gutterDiv.style.height = height + 4 + "px";
1117            }
1118            selectedAnnoteEl = annoteEl;
1119          }
1120        };
1121        const unselectCodeLines = () => {
1122          const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
1123          elementsIds.forEach((elId) => {
1124            const div = window.document.getElementById(elId);
1125            if (div) {
1126              div.remove();
1127            }
1128          });
1129          selectedAnnoteEl = undefined;
1130        };
1131          // Handle positioning of the toggle
1132      window.addEventListener(
1133        "resize",
1134        throttle(() => {
1135          elRect = undefined;
1136          if (selectedAnnoteEl) {
1137            selectCodeLines(selectedAnnoteEl);
1138          }
1139        }, 10)
1140      );
1141      function throttle(fn, ms) {
1142      let throttle = false;
1143      let timer;
1144        return (...args) => {
1145          if(!throttle) { // first call gets through
1146              fn.apply(this, args);
1147              throttle = true;
1148          } else { // all the others get throttled
1149              if(timer) clearTimeout(timer); // cancel #2
1150              timer = setTimeout(() => {
1151                fn.apply(this, args);
1152                timer = throttle = false;
1153              }, ms);
1154          }
1155        };
1156      }
1157        // Attach click handler to the DT
1158        const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
1159        for (const annoteDlNode of annoteDls) {
1160          annoteDlNode.addEventListener('click', (event) => {
1161            const clickedEl = event.target;
1162            if (clickedEl !== selectedAnnoteEl) {
1163              unselectCodeLines();
1164              const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
1165              if (activeEl) {
1166                activeEl.classList.remove('code-annotation-active');
1167              }
1168              selectCodeLines(clickedEl);
1169              clickedEl.classList.add('code-annotation-active');
1170            } else {
1171              // Unselect the line
1172              unselectCodeLines();
1173              clickedEl.classList.remove('code-annotation-active');
1174            }
1175          });
1176        }
1177    const findCites = (el) => {
1178      const parentEl = el.parentElement;
1179      if (parentEl) {
1180        const cites = parentEl.dataset.cites;
1181        if (cites) {
1182          return {
1183            el,
1184            cites: cites.split(' ')
1185          };
1186        } else {
1187          return findCites(el.parentElement)
1188        }
1189      } else {
1190        return undefined;
1191      }
1192    };
1193    var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
1194    for (var i=0; i<bibliorefs.length; i++) {
1195      const ref = bibliorefs[i];
1196      const citeInfo = findCites(ref);
1197      if (citeInfo) {
1198        tippyHover(citeInfo.el, function() {
1199          var popup = window.document.createElement('div');
1200          citeInfo.cites.forEach(function(cite) {
1201            var citeDiv = window.document.createElement('div');
1202            citeDiv.classList.add('hanging-indent');
1203            citeDiv.classList.add('csl-entry');
1204            var biblioDiv = window.document.getElementById('ref-' + cite);
1205            if (biblioDiv) {
1206              citeDiv.innerHTML = biblioDiv.innerHTML;
1207            }
1208            popup.appendChild(citeDiv);
1209          });
1210          return popup.innerHTML;
1211        });
1212      }
1213    }
1214  });
1215  </script>
1215
1216</div> <!-- /content -->
1217<footer class="footer">
1218  <div class="nav-footer">
1219    <div class="nav-footer-left">
1220<p><a href="https://hardin47.netlify.app/research/"><i class="fa-solid fa-book" aria-label="book"></i></a> <a href="https://hardin47.netlify.app/resume.pdf" target="_blank"><i class="fa-solid fa-bookmark"></i></a> <a href="mailto:[email protected]" target="_blank"><i class="fa-solid fa-at"></i></a> <a href="https://scholar.google.com/citations?user=c5Y77poAAAAJ&amp;hl=en" target="_blank"><i class="fa-brands fa-google-scholar"></i></a> <a href="https://www.researchgate.net/scientific-contributions/Johanna-Hardin-9764530" target="_blank"><i class="fa-brands fa-researchgate"></i></a><br>
1221<a href="https://github.com/hardin47" target="_blank"><i class="fa-brands fa-github"></i></a> <a href="https://www.linkedin.com/in/jo-hardin-b91a4b55" target="_blank"><i class="fa-brands fa-linkedin-in"></i></a></p>
1222</div>   
1223    <div class="nav-footer-center">
1224      <ul class="footer-items list-unstyled">
1225    <li class="nav-item">
1226 <br> © Jo Hardin, 2026 -- <a href="mailto: [email protected]">[email protected]</a> -- <a href="https://hardin47.netlify.app/">https://hardin47.netlify.app/</a> <br> <br>
1227DS002R -- Foundations of Data Science in R -- Pomona College <br>
1228  </li>  
1229</ul>
1230    </div>
1231    <div class="nav-footer-right">
1232      &nbsp;
1233    </div>
1234  </div>
1235</footer>
1236
1237
1238
1239
1240</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.