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&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 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.