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 13<title>syllabus â Foundations of Data Science in R</title> 14<style> 15/* Default styles provided by pandoc. 16** See https://pandoc.org/MANUAL.html#variables-for-html for config info. 17*/ 18span.smallcaps{font-variant: small-caps;} 19div.columns{display: flex; gap: 1.5em;} 20div.column{flex: auto;} 21@media screen { 22div.columns{gap: min(4vw, 1.5em);} 23div.column{overflow-x: auto;} 24} 25div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} 26ul.task-list{list-style: none;} 27ul.task-list li input[type="checkbox"] { 28 width: 0.8em; 29 margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 30 vertical-align: middle; 31} 32</style> 33 34
35<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 35
35
36<script src="site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 36
36
37<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 37
37
38<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 38
38
39<script src="site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 39
39
40<script src="site_libs/quarto-search/quarto-search.js"></script>
40 41<meta name="quarto:offset" content="./"> 42<link href="./images/favicon.ico" rel="icon">
43<script src="site_libs/quarto-html/quarto.js" type="module"></script>
vendor: 1 bytes, line 43
43
44<script src="site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
vendor: 1 bytes, line 44
44
45<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 45
45
46<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
vendor: 1 bytes, line 46
46
47<script src="site_libs/quarto-html/anchor.min.js"></script>
47 48<link href="site_libs/quarto-html/tippy.css" rel="stylesheet"> 49<link href="site_libs/quarto-html/quarto-syntax-highlighting-64a204ab8560d761af7679ceaba22944.css" rel="stylesheet" id="quarto-text-highlighting-styles">
50<script src="site_libs/bootstrap/bootstrap.min.js"></script>
50 51<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> 52<link href="site_libs/bootstrap/bootstrap-a8111dbb49da88347f07f358db18fe74.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light"> 53<link href="site_libs/quarto-contrib/fontawesome6-1.2.0/all.min.css" rel="stylesheet"> 54<link href="site_libs/quarto-contrib/fontawesome6-1.2.0/latex-fontsize.css" rel="stylesheet">
55<script id="quarto-search-options" type="application/json">{ 56 "location": "navbar", 57 "copy-button": false, 58 "collapse-after": 3, 59 "panel-placement": "end", 60 "type": "overlay", 61 "limit": 50, 62 "keyboard-shortcut": [ 63 "f", 64 "/", 65 "s" 66 ], 67 "show-item-context": false, 68 "language": { 69 "search-no-results-text": "No results", 70 "search-matching-documents-text": "matching documents", 71 "search-copy-link-title": "Copy link to search", 72 "search-hide-matches-text": "Hide additional matches", 73 "search-more-match-text": "more match in this document", 74 "search-more-matches-text": "more matches in this document", 75 "search-clear-button-title": "Clear", 76 "search-text-placeholder": "", 77 "search-detached-cancel-button-title": "Cancel", 78 "search-submit-button-title": "Submit", 79 "search-label": "Search" 80 } 81}</script>
81 82 83 84</head> 85 86<body class="nav-fixed fullcontent quarto-light"> 87 88<div id="quarto-search-results"></div> 89 <header id="quarto-header" class="headroom fixed-top"> 90 <nav class="navbar navbar-expand-lg " data-bs-theme="dark"> 91 <div class="navbar-container container-fluid"> 92 <div class="navbar-brand-container mx-auto"> 93 <a href="https://ds002r-fds.netlify.app/" class="navbar-brand navbar-brand-logo"> 94 <img src="./images/st47s.png" alt="" class="navbar-logo light-content"> 95 <img src="./images/st47s.png" alt="" class="navbar-logo dark-content"> 96 </a> 97 <a class="navbar-brand" href="https://ds002r-fds.netlify.app/"> 98 <span class="navbar-title">Foundations of Data Science in R</span> 99 </a> 100 </div> 101 <div id="quarto-search" class="" title="Search"></div> 102 <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(); }"> 103 <span class="navbar-toggler-icon"></span> 104</button> 105 <div class="collapse navbar-collapse" id="navbarCollapse"> 106 <ul class="navbar-nav navbar-nav-scroll ms-auto"> 107 <li class="nav-item"> 108 <a aria-current='page' class='nav-link active' href='/syllabus'> 109<span class="menu-text">Syllabus</span></a> 110 </li> 111 <li class="nav-item"> 112 <a class='nav-link' href='/notes'> 113<span class="menu-text">Class Notes</span></a> 114 </li> 115 <li class="nav-item"> 116 <a class='nav-link' href='/clicker_study'> 117<span class="menu-text">Clicker Q</span></a> 118 </li> 119 <li class="nav-item"> 120 <a class='nav-link' href='/r-tip'> 121<span class="menu-text">R tip</span></a> 122 </li> 123 <li class="nav-item"> 124 <a class='nav-link' href='/endangered_data'> 125<span class="menu-text">Endangered Data</span></a> 126 </li> 127 <li class="nav-item dropdown "> 128 <a class="nav-link dropdown-toggle" href="#" id="nav-menu-project" role="link" data-bs-toggle="dropdown" aria-expanded="false"> 129 <span class="menu-text">Project</span> 130 </a> 131 <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="nav-menu-project"> 132 <li> 133 <a class='dropdown-item' href='/project'> 134 <span class="dropdown-text">semester mini-projects</span></a> 135 </li> 136 <li> 137 <a class='dropdown-item' href='/project1'> 138 <span class="dropdown-text">project 1 - website</span></a> 139 </li> 140 <li> 141 <a class="dropdown-item" href="./project2.html"> 142 <span class="dropdown-text">project 2 - text analysis</span></a> 143 </li> 144 <li> 145 <a class="dropdown-item" href="./project3.html"> 146 <span class="dropdown-text">project 3 - simulation</span></a> 147 </li> 148 <li> 149 <a class="dropdown-item" href="./project4.html"> 150 <span class="dropdown-text">project 4 - ethics</span></a> 151 </li> 152 <li> 153 <a class="dropdown-item" href="./project5.html"> 154 <span class="dropdown-text">project 5 - SQL</span></a> 155 </li> 156 <li> 157 <a class="dropdown-item" href="./project6.html"> 158 <span class="dropdown-text">project 6 - fin</span></a> 159 </li> 160 <li> 161 <a class="dropdown-item" href="https://hardin47.netlify.app/courses/data/"> 162 <span class="dropdown-text">Data Sources</span></a> 163 </li> 164 </ul> 165 </li> 166 <li class="nav-item"> 167 <a class='nav-link' href='/github'> 168<span class="menu-text">GitHub</span></a> 169 </li> 170</ul> 171 </div> <!-- /navcollapse --> 172 <div class="quarto-navbar-tools"> 173</div> 174 </div> <!-- /container-fluid --> 175 </nav> 176</header> 177<!-- content --> 178<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar"> 179<!-- sidebar --> 180<!-- margin-sidebar --> 181 182<!-- main --> 183<main class="content" id="quarto-document-content"> 184 185<header id="title-block-header" class="quarto-title-block default"> 186<div class="quarto-title"> 187<h1 class="title">syllabus</h1> 188</div> 189 190 191 192<div class="quarto-title-meta"> 193 194 195 196 197 </div> 198 199 200 201</header> 202 203
204<section id="foundations-of-data-science-in-r" class="level1"> 205<h1>Foundations of Data Science in R</h1> 206<section id="ds002r-fall-2026" class="level2"> 207<h2 class="anchored" data-anchor-id="ds002r-fall-2026">DS002R, Fall 2026</h2> 208<p>Jo Hardin<br> 2092351 Estella<br> 210[email protected]</p> 211<p>Class: Mondays & Wednesdays, 11-12:15pm<br> 212Estella 2141</p> 213<p><strong>Office Hours: (Estella 2351)</strong><br> 214Monday: 1:30-4:00pm<br> 215Tuesday: 9-11am<br> 216Thursday: 1:30-3pm</p> 217<p><strong>Mentor Sessions: (Estella 2141)</strong><br> 218Monday: 8-10pm<br> 219Tuesday: 8-10pm</p> 220<div class="cell" data-preview="true"> 221<div class="cell-output-display"> 222<div class="quarto-figure quarto-figure-center"> 223<figure class="figure"> 224<p><img src="images/tidydata_6.jpg" class="img-fluid figure-img" alt="A group of personified tables getting together and seemingly very happy to see each other."></p> 225<figcaption>Artwork by <span class="citation" data-cites="allison_horst">@allison_horst</span>.</figcaption> 226</figure> 227</div> 228</div> 229</div> 230</section> 231<section id="the-course" class="level2"> 232<h2 class="anchored" data-anchor-id="the-course">The course</h2> 233<p><strong>Foundations of Data Science in R</strong> is a first course in data science. Data play an increasingly important role in many fields. Being able to understand data and the ethical implications in data driven decisions is paramount to being an informed member of society. As an introduction to data science with R, this course will introduce students to basic data science concepts. Prerequisite: CSCI004 or CSCI005 or CSCI051 or equivalent experience in programming.</p> 234<div class="callout callout-style-default callout-tip no-icon callout-titled"> 235<div class="callout-header d-flex align-content-center"> 236<div class="callout-icon-container"> 237<i class="callout-icon no-icon"></i> 238</div> 239<div class="callout-title-container flex-fill"> 240<span class="screen-reader-only">Tip</span>Anonymous Feedback 241</div> 242</div> 243<div class="callout-body-container callout-body"> 244<p>As someone who is, myself, constantly learning and growing in many ways, I welcome your feedback about the course, the classroom dynamics, or anything else youâd like me to know. There is a link on Canvas to an anonymous feedback form. Please feel free to provide me with feedback at any time!</p> 245</div> 246</div> 247</section> 248<section id="student-learning-outcomes." class="level2"> 249<h2 class="anchored" data-anchor-id="student-learning-outcomes.">Student Learning Outcomes.</h2> 250<p>By the end of the term, students will be able to:</p> 251<ul> 252<li>scrape, process, and clean data from the web</li> 253<li>wrangle data in a variety of formats</li> 254<li>contextualize variation in data</li> 255<li>construct point and interval estimates using resampling techniques</li> 256<li>design accurate, clear and appropriate data graphics</li> 257<li>query large relational databases (using SQL)</li> 258<li>work fluently with regular expression</li> 259<li>communicate data-driven decisions</li> 260</ul> 261</section> 262<section id="inclusion-goals" class="level2"> 263<h2 class="anchored" data-anchor-id="inclusion-goals">Inclusion Goals</h2> 264<blockquote class="blockquote"> 265<p>Inclusive teaching is intentional and reflective. Inclusive teaching builds community, is student-centered, acknowledges the whole student, and is accessible to all students. Inclusive teaching develops critical and creative thinkers who positively contribute to our community.</p> 266</blockquote> 267<p>The above definition of inclusive teaching was developed by Pomona faculty over the past few years, and it is what I aim to practice in our classroom. Please contact me if you have any suggestions to improve the quality of the course materials.</p> 268<p>Furthermore, I would like to create a learning environment for my students that supports a diversity of thoughts, perspectives and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.) To help accomplish this:</p> 269<ul> 270<li>If you have a name and/or set of pronouns that differ from those that appear in your official records, please let me know!</li> 271<li>If you feel like your performance in the class is being impacted by your experiences outside of class, please donât he
271sitate to come and talk with me. You can also relay information to me via your mentors. I want to be a resource for you.</li> 272</ul> 273<p>I (like many people) am still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to me about it. As a participant in course discussions, you should also strive to honor the diversity of your classmates.</p> 274</section> 275<section id="technical-details" class="level2"> 276<h2 class="anchored" data-anchor-id="technical-details">Technical Details</h2> 277<section id="text" class="level4"> 278<h4 class="anchored" data-anchor-id="text">Text:</h4> 279<p><b> <a href="https://mdsr-book.github.io/mdsr3e/" target="_blank">Modern Data Science with R, 3rd edition</a></b> by Baumer, Kaplan, and Horton.</p> 280<p><b><a href="https://r4ds.hadley.nz/" target="_blank">R for Data Science, 2nd edition</a></b> by Wickham, Ãetinkaya-Rundel, and Grolemund.</p> 281<div class="callout callout-style-default callout-tip no-icon callout-titled"> 282<div class="callout-header d-flex align-content-center"> 283<div class="callout-icon-container"> 284<i class="callout-icon no-icon"></i> 285</div> 286<div class="callout-title-container flex-fill"> 287<span class="screen-reader-only">Tip</span>Dates 288</div> 289</div> 290<div class="callout-body-container callout-body"> 291<ul> 292<li>Quizzes on Sep 23, Oct 7, Oct 26, Nov 11, Nov 23, and Dec 9 (in class)</li> 293<li>9.29.26 Project 1 due</li> 294<li>10.13.26 Project 2 due</li> 295<li>11.3.26 Project 3 due</li> 296<li>11.17.26 Project 4 due</li> 297<li>12.1.26 Project 5 due</li> 298<li>12.11.26 (Friday) or 12.18.26 (Friday) Project Presentations (9am-noon)</li> 299<li>12.18.26 Project 6 write-up due (on GitHub by midnight)</li> 300</ul> 301</div> 302</div> 303</section> 304</section> 305<section id="links-to-resources" class="level2"> 306<h2 class="anchored" data-anchor-id="links-to-resources">Links to resources:</h2> 307<section id="git-resources" class="level3"> 308<h3 class="anchored" data-anchor-id="git-resources">Git resources</h3> 309<div class="note"> 310<ul> 311<li>Best and most comprehensive Git help: <a href="http://happygitwithr.com/" target="_blank">http://happygitwithr.com/</a></li> 312<li>Git within Positron: <a href="https://positron.posit.co/git.html" target="_blank">https://positron.posit.co/git.html</a></li> 313<li><a href="http://swcarpentry.github.io/git-novice/" target="_blank">Version control with Git</a></li> 314<li><a href="https://aberdeenstudygroup.github.io/studyGroup/lessons/SG-T1-GitHubVersionControl/VersionControl/#2.4.2." target="_blank">More on Git</a></li> 315<li><a href="https://git-scm.com/book/en/v2" target="_blank">Online Git book</a> with lots of info</li> 316</ul> 317</div> 318</section> 319<section id="r-resources" class="level3"> 320<h3 class="anchored" data-anchor-id="r-resources">R resources</h3> 321<div class="note"> 322<ul> 323<li>A fantastic <a href="https://www.cedricscherer.com/2019/08/05/a-ggplot2-tutorial-for-beautiful-plotting-in-r/" target="_blank">ggplot2 tutorial</a></li> 324<li>Tutorials through the <a href="https://ourcodingclub.github.io/tutorials/" target="_blank">Coding Club</a></li> 325<li><a href="http://www.rseek.org/" target="_blank">Google for R</a></li> 326<li>Helpful <a href="https://posit.co/resources/cheatsheets/" target="_blank">cheatsheets</a> from Positron. 327<ul> 328<li><a href="https://rstudio.github.io/cheatsheets/html/data-transformation.html" target="_blank">data wrangling</a></li> 329<li><a href="https://rstudio.github.io/cheatsheets/html/data-visualization.html" target="_blank">ggplot2</a></li> 330<li><a href="https://rstudio.github.io/cheatsheets/html/shiny.html" target="_blank">Shiny</a></li> 331<li><a href="https://rstudio.github.io/cheatsheets/html/quarto.html" target="_blank">Quarto</a></li> 332<li><a href="https://rstudio.github.io/cheatsheets/html/positron.html" target="_blank">Positron IDE</a></li> 333</ul></li> 334</ul> 335</div> 336</section> 337<section id="sql-resources" class="level3"> 338<h3 class="anchored" data-anchor-id="sql-resources">SQL resources</h3> 339<div class="note"> 340<ul> 341<li>W3 schools <a href="https://www.w3schools.com/sql/sql_intro.asp" target="_blank">Introduction to SQL</a></li> 342<li>W3 schools <a href="https://www.w3resource.com/sql-exercises/" target="_blank">SQL Exercises, Practice, Solution</a></li> 343<li><a href="https://cran.r-project.org/web/views/Databases.html" target="_blank">R packages</a> for working with databases</li> 344<li><a href="https://dbplyr.tidyverse.org/articles/dbplyr.html" target="_blank">Introduction to <code>dbplyr</code></a></li> 345</ul> 346</div> 347</section> 348<section id="regular-expression-resources" class="level3"> 349<h3 class="anchored" data-anchor-id="regular-expression-resources">Regular expression resources</h3> 350<div class="note"> 351<ul> 352<li><a href="https://cran.r-project.org/web/packages/stringr/vignettes/stringr.html" target="_blank"><strong>stringr</strong> vignette</a></li> 353<li><a href="https://stringr.tidyverse.org/" target="_blank"><strong>stringr</strong> package</a></li> 354<li>Jenny Bryan et al.âs <a href="https://stat545.com/character-vectors.html" target="_blank">STAT 545 notes</a></li> 355<li><a href="http://regexpal.com/" target="_blank">regexpal</a><br> 356</li> 357<li><a href="http://www.regexr.com/" target="_blank">RegExr</a></li> 358<li><a href="https://regexone.com/" target="_balnk">RegexOne</a></li> 359</ul> 360</div> 361<section id="hw-grading" class="level5"> 362<h5 class="anchored" data-anchor-id="hw-grading">HW Grading</h5> 363<p>Homework assignments will be graded out of 5 points, which are based on a combination of accuracy and effort. Below are rough guidelines for grading.</p> 364<p>[5] All problems completed with detailed solutions provided and 75% or more of the problems are fully correct. Additionally, there are no extraneous messages, warnings, or printed lists of numbers.<br> 365[4] All problems completed with detailed solutions and 50-75% correct; OR close to all problems completed and 75%-100% correct. Or all problems are completed and there are extraneous messages, warnings, or printed lists of numbers. [<a href='https://ds002r-fds.netlify.app/superfluous_material' target='_blank'>Here is an example</a> of extraneous messages and printed lists of numbers.]<br> 366[3] Close to all problems completed with less than 75% correct. OR an assignment that didnât make it all the way to Canvas as the correctly rendered pdf.<br> 367[2] More than half but fewer than all problems completed and > 75% correct.<br> 368[1] More than half but fewer than all problems completed and < 75% correct; OR less than half of problems completed.<br> 369[0] No work submitted, OR half or less than half of the problems submitted and without any detail/work shown to explain the solutions. You will get a zero if your file is not compiled and submitted on GitHub.</p> 370</section> 371</section> 372</section> 373<section id="projects" class="level2"> 374<h2 class="anchored" data-anchor-id="projects">Projects:</h2> 375<p>There will be 5 mini-projects (due roughly every other week). You will also compile the projects, reflect on the process, and present your work to your classrmates. Project information is available here: <a href="./project/">DS 002R Projects</a></p> 376</section> 377<section id="computing" class="level2"> 378<h2 class="anchored" data-anchor-id="computing">Computing:</h2> 379<ul> 380<li><p>GitHub will be used as a way to practice reproducible and collaborative science. There may be a slight learning curve, but knowing Git will be an extremely useful skill as you venture beyond this class.</p></li> 381<li><p>R will be used for all homework assignments. R is freely available at <a href="http://www.r-project.org/" target="_blank">http://www.r-project.org/</a> and is already installed on college computers. Additionally, you need to install Positron in order to use Quarto, <a href="https://positron.posit.co/" target="_blank">https://positron.posit.co/</a>
381. If you are not already familiar with R, please work through some of the materials provided ASAP.</p></li> 382<li><p>You are welcome to use Pomonaâs Positron server at <a href="https://rstudio.campus.pomona.edu/" target="_blank">https://rstudio.campus.pomona.edu/</a> (or <a href="https://rstudio.pomona.edu" target="_blank">https://rstudio.pomona.edu</a> if you are off campus). If you use the server, you can connect directly to your Git account without installing Git locally on your own computer. [If you are not a Pomona student, you will need to get an account from Pomonaâs ITS. Go to ITS, tell them that you are taking a Pomona course, and ask for an account for using Positron.]</p></li> 383</ul> 384</section> 385<section id="engagement" class="level2"> 386<h2 class="anchored" data-anchor-id="engagement">Engagement:</h2> 387<ul> 388<li><p>This class will be interactive, and your engagement is expected (every day in class). Although notes will be posted, your engagement is an integral part of the in-class learning process.</p></li> 389<li><p>In class: after answering one question, wait until 5 other people have spoken before answering another question. [Feel free to <strong>ask</strong> as many questions as often as you like!]</p></li> 390<li><p>To get full participation points, you will be expected to contribute at least one R tip of the day, sometime during the semester.</p></li> 391</ul> 392<section id="academic-honesty" class="level4"> 393<h4 class="anchored" data-anchor-id="academic-honesty">Academic Honesty:</h4> 394<p>Throughout the semester, you will be challenged, and you may find yourself stuck. Every single one of us has been there, I promise. Below, Iâve provided Pomonaâs academic honesty policy. But before the policy, Iâve given some thoughts on cheating which I have taken from Nick Ballâs CHEM 147 Collective (thank you, Prof Ball!). Prof Ball gives us all something to think about when we are learning in a classroom as well as on our journey to become scientists and professionals:</p> 395<div class="callout callout-style-default callout-tip no-icon callout-titled"> 396<div class="callout-header d-flex align-content-center"> 397<div class="callout-icon-container"> 398<i class="callout-icon no-icon"></i> 399</div> 400<div class="callout-title-container flex-fill"> 401<span class="screen-reader-only">Tip</span>Why Cheat? 402</div> 403</div> 404<div class="callout-body-container callout-body"> 405<p>There are many known reasons why we may feel the need to âcheatâ on problem sets or exams:</p> 406<ul> 407<li>An academic environment that values grades above learning.</li> 408<li>Financial aid is critical for remaining in school that places undue pressure on maintaining a high GPA.</li> 409<li>Navigating school, work, and/or family obligations that have diverted focus from class.</li> 410<li>Challenges balancing coursework and mental health.</li> 411<li>Balancing academic, family, peer, or personal issues.</li> 412</ul> 413<p>Being accused of cheating â whether it has occurred or not â can be devastating for students. The college requires me to respond to potential academic dishonesty with a process that is very long and damaging. As your instructor, I care about you and want to offer alternatives to prevent us from having to go through this process.</p> 414</div> 415</div> 416<p>If you find yourself in a situation where âcheatingâ seems like the only option, please come talk to me. We will figure this out together.</p> 417<section id="pomonas-academic-honesty-policy" class="level5"> 418<h5 class="anchored" data-anchor-id="pomonas-academic-honesty-policy">Pomonaâs Academic Honesty Policy</h5> 419<p>The College expects students to understand and adhere to basic standards of honesty and academic integrity. These standards include but are not limited to the following:</p> 420<ul> 421<li>In projects and assignments (including homework) prepared independently, students never intentionally represent the ideas or the language of others as their own, examples include but are not limited to plagiarism, failing to use citations, unapproved use of artificial intelligence and resubmitted personal work for another course.</li> 422<li>Students do not destroy or alter either the work of other students or the educational resources and materials of the College.</li> 423<li>Students neither give nor receive assistance with examinations.</li> 424<li>Students do not represent work completed for one course as original work for another or deliberately disregard course rules and regulations.</li> 425<li>In laboratory or research projects involving the collection of data, students accurately report data observed and do not alter or fabricate data for any reason</li> 426</ul> 427<div class="callout callout-style-default callout-tip no-icon callout-titled"> 428<div class="callout-header d-flex align-content-center"> 429<div class="callout-icon-container"> 430<i class="callout-icon no-icon"></i> 431</div> 432<div class="callout-title-container flex-fill"> 433<span class="screen-reader-only">Tip</span>My AI use policy<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> 434</div> 435</div> 436<div class="callout-body-container callout-body"> 437<p>If you choose to use AI for any of the assignments for this class, you should pay attention to where you obtained any relevant information. Submitting work created by a generative AI as your own in any assignment is considered plagiarism, and therefore an academic integrity violation, just the same as copying work from any other source.</p> 438<p><strong>Attribution</strong><br> 439* As with any other reference you might find, any directly copied text from generative AI should be in quotes and given a citation. Any summarized text from generative AI should be referenced. * Cite all AI tools when used or referred to in assigned work. For example, see how to cite generative AI in <a href="https://apastyle.apa.org/blog/how-to-cite-chatgpt" target="_blank">APA</a>, <a href="https://style.mla.org/citing-generative-ai/" target="_blank">MLA</a>, or <a href="https://www.chicagomanualofstyle.org/qanda/data/faq/topics/Documentation/faq0422.html" target="_blank">Chicago</a> styles.</p> 440<p><strong>Permitted</strong></p> 441<ul> 442<li>Clarifying concepts (after attempting to understand them yourself, and then checking course materials or other credible sources for accuracy)</li> 443<li>Organizing and outlining your thoughts</li> 444<li>Grammar and spelling assistance</li> 445<li>Asking AI for practice questions or explanations of concepts (after attempting them yourself first), then checking your understanding against course materials</li> 446<li>Using AI to generate examples, counterarguments, or alternative perspectives that help you develop more nuanced thinking</li> 447<li>Debugging code, checking syntax, or troubleshooting errors (with the expectation that you understand and <strong>can explain</strong> any final code that you submit)</li> 448<li>Asking for help understanding a concept (please include âdo not generate code. only explain in words.â to the prompt).</li> 449</ul> 450<p><strong>Not permitted</strong></p> 451<ul> 452<li>Having AI generate any sentences or paragraphs that appear in your final work without quotation marks and attribution</li> 453<li>Using AI to write arguments, code, proofs, or problem solutions that you submit as your own</li> 454<li>Generating code for an assignment (please include âdo not generate code. only explain in words.â within any prompt designed to help you understand ideas from the course)</li> 455<li>Asking AI to outline or structure your assignment before you have developed your own approach</li> 456<li>Using AI to summarize readings or course materials in place of doing the reading yourself</li> 457<li>Submitting code (or full chunks of code) that has been written in whole by AI</li> 458</ul> 459<p><strong>My commitment</strong><br> 460I commit to not using AI to assess any part of your work. I will fully engage with your assignments without the use of AI.</p> 461</div> 462</div> 463</section> 464</section> 465<section id="advice" class="level4"> 466<h4 class="anchored" data-anchor-id="advice">Advice:</h4> 467<p>Please email and / or set up a time to talk if you have any questions about or difficulty with the material, the computing, or the course. Talk to me as soon as possible if you find yourself struggling. The material will build on itself, so it will be much easier to catch up if the concepts get clarified earlier rather than later. This semester is going to be fun. Letâs do it.</p> 468</section> 469</section> 470<section id="philosophy-on-ai-use" class="level2"> 471<h2 class="anchored" data-anchor-id="philosophy-on-ai-use">Philosophy on AI use</h2> 472<p>The goals of the course including <strong>learning</strong> core content and becoming skilled at using analysis tools accurately and effectively. While sometimes quite helpful, there are ways that AI can get in the way of the <strong>learning</strong>, for example:</p> 473<ul> 474<li>Learning takes struggle, and generative AI usually removes the struggle.</li> 475<li>Generative AI will often be wrong, maybe because it doesnât understand the prompt or maybe because it is hallucinating.</li> 476<li>Learning takes practice, particularly by building muscles related to creative and independent thinking. Generative AI removes the practice.</li> 477</ul> 478<p>There are also ways that AI can be <strong>ethically problematic</strong>, for example:</p> 479<ul> 480<li>Generative AI queries use large amounts of resources.</li> 481<li>Generative AI is based on intellectual property (often illegally) taken from scholars, artists, and journalists.</li> 482<li>The rise of generative AI impacts the number of jobs available to people like you.</li> 483</ul> 484<p>I encourage you to reflect on your use of AI in this class and elsewhere. Is your use consistent with the <strong>learning</strong> that brings you to a place like Pomona College? Are you considering the <strong>ethical ramifications</strong> associated with using AI? See the academic honesty part of the syllabus for generative AI policy.</p> 485<div class="callout callout-style-default callout-tip no-icon callout-titled"> 486<div class="callout-header d-flex align-content-center"> 487<div class="callout-icon-container"> 488<i class="callout-icon no-icon"></i> 489</div> 490<div class="callout-title-container flex-fill"> 491<span class="screen-reader-only">Tip</span>Grading 492</div> 493</div> 494<div class="callout-body-container callout-body"> 495<ul> 496<li>15% homework</li> 497<li>60% in-class quizzes</li> 498<li>20% projects & final presentation</li> 499<li>5% class engagement</li> 500</ul> 501</div> 502</div> 503 504 505</section> 506</section> 507 508 509<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document" role="doc-endnotes"><h2 class="anchored quarto-appendix-heading">Footnotes</h2> 510 511<ol> 512<li id="fn1"><p>Many of the ideas below are from https://provost.tufts.edu/celt/online-resources/artificial-intelligence/ai-syllabus-statements/<a href="#fnref1" class="footnote-back" role="doc-backlink">â©ï¸</a></p></li> 513</ol> 514</section><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 -->
515<script id="quarto-html-after-body" type="application/javascript"> 516 window.document.addEventListener("DOMContentLoaded", function (event) { 517 const icon = "î§"; 518 const anchorJS = new window.AnchorJS(); 519 anchorJS.options = { 520 placement: 'right', 521 icon: icon 522 }; 523 anchorJS.add('.anchored'); 524 const isCodeAnnotation = (el) => { 525 for (const clz of el.classList) { 526 if (clz.startsWith('code-annotation-')) { 527 return true; 528 } 529 } 530 return false; 531 } 532 const onCopySuccess = function(e) { 533 // button target 534 const button = e.trigger; 535 // don't keep focus 536 button.blur(); 537 // flash "checked" 538 button.classList.add('code-copy-button-checked'); 539 var currentTitle = button.getAttribute("title"); 540 button.setAttribute("title", "Copied!"); 541 let tooltip; 542 if (window.bootstrap) { 543 button.setAttribute("data-bs-toggle", "tooltip"); 544 button.setAttribute("data-bs-placement", "left"); 545 button.setAttribute("data-bs-title", "Copied!"); 546 tooltip = new bootstrap.Tooltip(button, 547 { trigger: "manual", 548 customClass: "code-copy-button-tooltip", 549 offset: [0, -8]}); 550 tooltip.show(); 551 } 552 setTimeout(function() { 553 if (tooltip) { 554 tooltip.hide(); 555 button.removeAttribute("data-bs-title"); 556 button.removeAttribute("data-bs-toggle"); 557 button.removeAttribute("data-bs-placement"); 558 } 559 button.setAttribute("title", currentTitle); 560 button.classList.remove('code-copy-button-checked'); 561 }, 1000); 562 // clear code selection 563 e.clearSelection(); 564 } 565 const getTextToCopy = function(trigger) { 566 const outerScaffold = trigger.parentElement.cloneNode(true); 567 const codeEl = outerScaffold.querySelector('code'); 568 for (const childEl of codeEl.children) { 569 if (isCodeAnnotation(childEl)) { 570 childEl.remove(); 571 } 572 } 573 return codeEl.innerText; 574 } 575 const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', { 576 text: getTextToCopy 577 }); 578 clipboard.on('success', onCopySuccess); 579 if (window.document.getElementById('quarto-embedded-source-code-modal')) { 580 const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', { 581 text: getTextToCopy, 582 container: window.document.getElementById('quarto-embedded-source-code-modal') 583 }); 584 clipboardModal.on('success', onCopySuccess); 585 } 586 var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); 587 var mailtoRegex = new RegExp(/^mailto:/); 588 var filterRegex = new RegExp("https:\/\/ds002r-fds\.netlify\.app\/"); 589 var isInternal = (href) => { 590 return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); 591 } 592 // Inspect non-navigation links and adorn them if external 593 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)'); 594 for (var i=0; i<links.length; i++) { 595 const link = links[i]; 596 if (!isInternal(link.href)) { 597 // undo the damage that might have been done by quarto-nav.js in the case of 598 // links that we want to consider external 599 if (link.dataset.originalHref !== undefined) { 600 link.href = link.dataset.originalHref; 601 } 602 } 603 } 604 function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) { 605 const config = { 606 allowHTML: true, 607 maxWidth: 500, 608 delay: 100, 609 arrow: false, 610 appendTo: function(el) { 611 return el.parentElement; 612 }, 613 interactive: true, 614 interactiveBorder: 10, 615 theme: 'quarto', 616 placement: 'bottom-start', 617 }; 618 if (contentFn) { 619 config.content = contentFn; 620 } 621 if (onTriggerFn) { 622 config.onTrigger = onTriggerFn; 623 } 624 if (onUntriggerFn) { 625 config.onUntrigger = onUntriggerFn; 626 } 627 window.tippy(el, config); 628 } 629 const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); 630 for (var i=0; i<noterefs.length; i++) { 631 const ref = noterefs[i]; 632 tippyHover(ref, function() { 633 // use id or data attribute instead here 634 let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); 635 try { href = new URL(href).hash; } catch {} 636 const id = href.replace(/^#\/?/, ""); 637 const note = window.document.getElementById(id); 638 if (note) { 639 return note.innerHTML; 640 } else { 641 return ""; 642 } 643 }); 644 } 645 const xrefs = window.document.querySelectorAll('a.quarto-xref'); 646 const processXRef = (id, note) => { 647 // Strip column container classes 648 const stripColumnClz = (el) => { 649 el.classList.remove("page-full", "page-columns"); 650 if (el.children) { 651 for (const child of el.children) {
652 stripColumnClz(child); 653 } 654 } 655 } 656 stripColumnClz(note) 657 if (id === null || id.startsWith('sec-')) { 658 // Special case sections, only their first couple elements 659 const container = document.createElement("div"); 660 if (note.children && note.children.length > 2) { 661 container.appendChild(note.children[0].cloneNode(true)); 662 for (let i = 1; i < note.children.length; i++) { 663 const child = note.children[i]; 664 if (child.tagName === "P" && child.innerText === "") { 665 continue; 666 } else { 667 container.appendChild(child.cloneNode(true)); 668 break; 669 } 670 } 671 if (window.Quarto?.typesetMath) { 672 window.Quarto.typesetMath(container); 673 } 674 return container.innerHTML 675 } else { 676 if (window.Quarto?.typesetMath) { 677 window.Quarto.typesetMath(note); 678 } 679 return note.innerHTML; 680 } 681 } else { 682 // Remove any anchor links if they are present 683 const anchorLink = note.querySelector('a.anchorjs-link'); 684 if (anchorLink) { 685 anchorLink.remove(); 686 } 687 if (window.Quarto?.typesetMath) { 688 window.Quarto.typesetMath(note); 689 } 690 if (note.classList.contains("callout")) { 691 return note.outerHTML; 692 } else { 693 return note.innerHTML; 694 } 695 } 696 } 697 for (var i=0; i<xrefs.length; i++) { 698 const xref = xrefs[i]; 699 tippyHover(xref, undefined, function(instance) { 700 instance.disable(); 701 let url = xref.getAttribute('href'); 702 let hash = undefined; 703 if (url.startsWith('#')) { 704 hash = url; 705 } else { 706 try { hash = new URL(url).hash; } catch {} 707 } 708 if (hash) { 709 const id = hash.replace(/^#\/?/, ""); 710 const note = window.document.getElementById(id); 711 if (note !== null) { 712 try { 713 const html = processXRef(id, note.cloneNode(true)); 714 instance.setContent(html); 715 } finally { 716 instance.enable(); 717 instance.show(); 718 } 719 } else { 720 // See if we can fetch this 721 fetch(url.split('#')[0]) 722 .then(res => res.text()) 723 .then(html => { 724 const parser = new DOMParser(); 725 const htmlDoc = parser.parseFromString(html, "text/html"); 726 const note = htmlDoc.getElementById(id); 727 if (note !== null) { 728 const html = processXRef(id, note); 729 instance.setContent(html); 730 } 731 }).finally(() => { 732 instance.enable(); 733 instance.show(); 734 }); 735 } 736 } else { 737 // See if we can fetch a full url (with no hash to target) 738 // This is a special case and we should probably do some content thinning / targeting 739 fetch(url) 740 .then(res => res.text()) 741 .then(html => { 742 const parser = new DOMParser(); 743 const htmlDoc = parser.parseFromString(html, "text/html"); 744 const note = htmlDoc.querySelector('main.content'); 745 if (note !== null) { 746 // This should only happen for chapter cross references 747 // (since there is no id in the URL) 748 // remove the first header 749 if (note.children.length > 0 && note.children[0].tagName === "HEADER") { 750 note.children[0].remove(); 751 } 752 const html = processXRef(null, note); 753 instance.setContent(html); 754 } 755 }).finally(() => { 756 instance.enable(); 757 instance.show(); 758 }); 759 } 760 }, function(instance) { 761 }); 762 } 763 let selectedAnnoteEl; 764 const selectorForAnnotation = ( cell, annotation) => { 765 let cellAttr = 'data-code-cell="' + cell + '"'; 766 let lineAttr = 'data-code-annotation="' + annotation + '"'; 767 const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; 768 return selector; 769 } 770 const selectCodeLines = (annoteEl) => { 771 const doc = window.document; 772 const targetCell = annoteEl.getAttribute("data-target-cell"); 773 const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); 774 const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); 775 const lines = annoteSpan.getAttribute("data-code-lines").split(","); 776 const lineIds = lines.map((line) => { 777 return targetCell + "-" + line; 778 }) 779 let top = null; 780 let height = null; 781 let parent = null; 782 if (lineIds.length > 0) { 783 //compute the position of the single el (top and bottom and make a div) 784 const el = window.document.getElementById(lineIds[0]); 785 top = el.offsetTop; 786 height = el.offsetHeight; 787 parent = el.parentElement.parentElement; 788 if (lineIds.length > 1) { 789 const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); 790 const bottom = lastEl.offsetTop + lastEl.offsetHeight; 791 height = bottom - top; 792 } 793 if (top !== null && height !== null && parent !== null) { 794 // cook up a div (if necessary) and position it 795 let div = window.document.getElementById("code-annotation-line-highlight"); 796 if (div === null) { 797 div = window.document.createElement("div"); 798 div.setAttribute("id", "code-annotation-line-highlight"); 799 div.style.position = 'absolute'; 800 parent.appendChild(div); 801 } 802 div.style.top = top - 2 + "px"; 803 div.style.height = height + 4 + "px"; 804 div.style.left = 0; 805 let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); 806 if (gutterDiv === null) { 807 gutterDiv = window.document.createElement("div"); 808 gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); 809 gutterDiv.style.position = 'absolute'; 810 const codeCell = window.document.getElementById(targetCell); 811 const gutter = codeCell.querySelector('.code-annotation-gutter'); 812 gutter.appendChild(gutterDiv); 813 } 814 gutterDiv.style.top = top - 2 + "px"; 815 gutterDiv.style.height = height + 4 + "px"; 816 } 817 selectedAnnoteEl = annoteEl; 818 } 819 }; 820 const unselectCodeLines = () => { 821 const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; 822 elementsIds.forEach((elId) => { 823 const div = window.document.getElementById(elId); 824 if (div) { 825 div.remove(); 826 } 827 }); 828 selectedAnnoteEl = undefined; 829 }; 830 // Handle positioning of the toggle 831 window.addEventListener( 832 "resize", 833 throttle(() => { 834 elRect = undefined; 835 if (selectedAnnoteEl) { 836 selectCodeLines(selectedAnnoteEl); 837 } 838 }, 10) 839 ); 840 function throttle(fn, ms) { 841 let throttle = false;
842 let timer; 843 return (...args) => { 844 if(!throttle) { // first call gets through 845 fn.apply(this, args); 846 throttle = true; 847 } else { // all the others get throttled 848 if(timer) clearTimeout(timer); // cancel #2 849 timer = setTimeout(() => { 850 fn.apply(this, args); 851 timer = throttle = false; 852 }, ms); 853 } 854 }; 855 } 856 // Attach click handler to the DT 857 const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); 858 for (const annoteDlNode of annoteDls) { 859 annoteDlNode.addEventListener('click', (event) => { 860 const clickedEl = event.target; 861 if (clickedEl !== selectedAnnoteEl) { 862 unselectCodeLines(); 863 const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); 864 if (activeEl) { 865 activeEl.classList.remove('code-annotation-active'); 866 } 867 selectCodeLines(clickedEl); 868 clickedEl.classList.add('code-annotation-active'); 869 } else { 870 // Unselect the line 871 unselectCodeLines(); 872 clickedEl.classList.remove('code-annotation-active'); 873 } 874 }); 875 } 876 const findCites = (el) => { 877 const parentEl = el.parentElement; 878 if (parentEl) { 879 const cites = parentEl.dataset.cites; 880 if (cites) { 881 return { 882 el, 883 cites: cites.split(' ') 884 }; 885 } else { 886 return findCites(el.parentElement) 887 } 888 } else { 889 return undefined; 890 } 891 }; 892 var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); 893 for (var i=0; i<bibliorefs.length; i++) { 894 const ref = bibliorefs[i]; 895 const citeInfo = findCites(ref); 896 if (citeInfo) { 897 tippyHover(citeInfo.el, function() { 898 var popup = window.document.createElement('div'); 899 citeInfo.cites.forEach(function(cite) { 900 var citeDiv = window.document.createElement('div'); 901 citeDiv.classList.add('hanging-indent'); 902 citeDiv.classList.add('csl-entry'); 903 var biblioDiv = window.document.getElementById('ref-' + cite); 904 if (biblioDiv) { 905 citeDiv.innerHTML = biblioDiv.innerHTML; 906 } 907 popup.appendChild(citeDiv); 908 }); 909 return popup.innerHTML; 910 }); 911 } 912 } 913 }); 914 </script>
914 915</div> <!-- /content --> 916<footer class="footer"> 917 <div class="nav-footer"> 918 <div class="nav-footer-left"> 919<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> 920<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> 921</div> 922 <div class="nav-footer-center"> 923 <ul class="footer-items list-unstyled"> 924 <li class="nav-item"> 925 <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> 926DS002R -- Foundations of Data Science in R -- Pomona College <br> 927 </li> 928</ul> 929 </div> 930 <div class="nav-footer-right"> 931 932 </div> 933 </div> 934</footer> 935 936 937 938 939</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.