Giter Club home page Giter Club logo

curriculum-notebooks's Introduction

curriculum-notebooks

build check license DOI

Our Club and Summer Experience formats cover slightly different topics with significant overlap. This repo contains all of the Jupyter notebooks used in either or both of them. For the exact curriculum order & topics covered, see the corresponding repos:

The Lessons directory contains live coding demos meant to introduce each topic in ~15 minute interactive mini-lessons. These lessons are delivered in Jupyter Notebooks in a "fill in the blanks" style. Instructors will guide students through each lesson and the students will follow along, filling in the blanks on their own documents as we go.

The Practices directory contains practice exercises for students to spend ~30 minutes to solidify skills taught in each mini-lesson. These practices are delivered in Jupyter Notebooks in a "fill in the blanks" style. Students will work with partners/groups to fill in blanks within the documents, using code from the corresponding lesson as a resource. Instructors will work closely with students to help them complete and understand each practice.

Both Lessons and Practices directories contain _Keys subdirectories with correctly completed versions of each exercise. Sometimes GitHub doesn't render Jupyter notebooks in a timely manner, so we use continuous integration to compile all notebook keys to HTML. View the rendered keys here.

Links

Lesson Video Lesson Notebook Practice Notebook
Module I: Jupyter Setup
1 https://youtu.be/plRRJ1zupgI None, just watch the video. Practice01 Jupyter Setup
Module II: Coding Fundamentals
2 https://youtu.be/czhcehpotos Lesson02 HelloWorld and Variables Practice02 HelloWorld and Variables
3 https://youtu.be/cGVIyeGv2bw Lesson03 Variables and Types Practice03 Variables and Types
4 https://youtu.be/xY51hfthvrw Lesson04 Lists Intro Practice04 Lists Intro
5 https://youtu.be/g9U_q5yWjrQ Lesson05 Indexing Practice05 Indexing
6 Lesson06 2D Lists Intro (legacy lesson) Practice06 2D Lists Intro
7 Lesson07 2D Lists Indexing (legacy lesson) Practice07 2D Lists Indexing
8 https://youtu.be/WLhDlhKFB9Q Lesson08 Logic Practice08 Logic
9 https://youtu.be/8oNvm0wxSQI Lesson09 Conditionals Practice09 Conditionals
10 https://youtu.be/DWKg4zxW47k Lesson10 Loops I Practice10 Loops I
11 https://youtu.be/uq5O70xnDO4 Lesson11 Loops II Practice11 Loops II
12 https://youtu.be/5bSf_BbBjms Lesson12 Using Functions and Methods Practice12 Using Functions and Methods
Module III: Data Science Essentials
13 https://youtu.be/QKno1TQwfWg Lesson13 Packages Practice13 Packages
14 https://youtu.be/-zY18Hlhpho Lesson14 Pandas Intro Practice14 Pandas Intro
15 https://youtu.be/3NUfZWbTCnc Lesson15 Pandas Reading Practice15 Pandas Reading
16 https://youtu.be/RbJzkDfo-yY Lesson16 Pandas Subsetting I Practice16 Pandas Subsetting I
17 https://youtu.be/4RnR65I3Xmg Lesson17 Pandas Subsetting II Practice17 Pandas Subsetting II
18 https://youtu.be/PoGMlBSRGEE Lesson18 Dictionaries Practice18 Dictionaries
19 https://youtu.be/98lgF7doe-c Lesson19 Writing Functions Practice19 Writing Functions
20 https://youtu.be/qzTN0qEhMwk Lesson20 Numpy Intro Practice20 Numpy Intro
Module IV: Basic Statistical Analysis
21 https://youtu.be/qA4NCfefbQg Lesson21 Averages Practice21 Averages
22 https://youtu.be/g-Jto81Ei0c Lesson22 Percents Practice22 Percents
23 https://youtu.be/JBuVUdpTHoY Lesson23 Correlations Practice23 Correlations
24 https://youtu.be/j5P5THwDR_Q Lesson24 Significance Practice24 Significance
Module V: Data Visualization
25 https://youtu.be/I8R8v0-_xmY Lesson25 Line Graphs Practice25 Line Graphs
26 https://youtu.be/pFTh8bfezVw Lesson26 Scatterplots Practice26 Scatterplots
27 https://youtu.be/p7EsFg0aMRs Lesson27 Bar Charts and Histograms Practice27 Bar Charts and Histograms

Help & Contributing

If you need help getting started or using the material, feel free to open an issue or send us an email and we'll be happy to help!

If you come across a bug, open an issue and include a minimal reproducible example.

If you’d like to contribute, see our guidelines.

Code of Conduct

Please note that this curriculum is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Citation

The paper describing our curriculum and the development process is out in JOSE! If you would like to cite our work, please use:

Duda & Sovacool et al., (2021). Teaching Python for Data Science: Collaborative development of a modular & interactive curriculum. Journal of Open Source Education, 4(46), 138, https://doi.org/10.21105/jose.00138

A bibtex entry for LaTeX users:

@article{duda_teaching_2021,
  doi = {10.21105/jose.00138},
  url = {https://doi.org/10.21105/jose.00138},
  year = {2021},
  publisher = {The Open Journal},
  volume = {4},
  number = {46},
  pages = {138},
  author = {Marlena Duda and Kelly Sovacool and Negar Farzaneh and Vy Nguyen and Sarah Haynes and Hayley Falk and Katherine Furman and Logan Walker and Rucheng Diao and Morgan Oneka and Audrey Drotos and Alana Woloshin and Gabrielle Dotson and April Kriebel and Lucy Meng and Stephanie Thiede and Zena Lapp and Brooke Wolford},
  title = {Teaching Python for Data Science: Collaborative development of a modular & interactive curriculum},
  journal = {Journal of Open Source Education}
}

curriculum-notebooks's People

Contributors

akriebs avatar audreydrotos avatar bnwolford avatar brissend avatar echou89 avatar geeklogan avatar github-actions[bot] avatar katiefurms avatar kelly-sovacool avatar lechten avatar marlenad avatar morganoneka avatar negarf avatar sarah-haynes avatar thomasa avatar zenalapp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curriculum-notebooks's Issues

Lesson 21: clarify rank

In Lesson 21, there are references to rank 1 and rank 2. Since students haven't taken linear algebra yet, we might want to change this to refer to one dimensional and two dimensional data instead?

Seeking support

This is in relation to the JOSE review.

"Community guidelines" ask for guidelines on seeking support. While you address contributing and reporting issues excellently, I do not find seeking support explicitly mentioned. I would personally assume that I can try opening an issue asking for support on something, but my assumption may be wrong and in any case, it might be a good idea to also briefly mention in your README whether and how you can ask for support on the lesson material.

Inconsistent index counting in lessons 16 and 17

In lesson 16, you show iloc[99:105] with the comment 100 through 105. In lesson 17, iloc[5:11] with 5 through 10. I suggest to use a consistent numbering. Personally, I prefer the latter variant (maybe with a reminder that counting starts at 0).

I did not attempt to spot other locations. Similarly to issue #14, notebooks do not contain source code, making it hard to search through code on my filesystem...

Lesson 09: using Boolean variables in if/else blocks

Moving this part from #16: "In the subsequent lesson 09 it might be good to mention that we neither use is nor == with Boolean values (but just the value itself instead of == True; or not for == False)."

We could do something like this toward the end:

my_list = [0, 1, 2, 3, 4, 5, 6, 7]

is_short = len(my_list) < 10
is_medium = not is_short and len(my_list) < 20

if is_short:
  print("This list is short!")
elif is_medium:
  print("This list is a medium length.")
else:
  print("This list is on the long side!")

Files:

  • Lesson Key (Lessons/_Keys/KEY_LessonXX_Topic.ipynb)
    • all cells run
  • Lesson notebook (Lessons/LessonXX_Topic.ipynb)
    • all cell outputs cleared
  • Practice Key (Practices/_Keys/KEY_PracticeXX_Topic.ipynb)
    • all cells run
  • Practice notebook (Practices/PracticeXX_Topic.ipynb)
    • all cell outputs cleared

Jupyter can't convert notebooks containing images to PDF

Jupyter cannot convert Key notebooks that contain images (e.g. Lesson 09 & 24). When running jupyter nbconvert in the build action, it fails with this error:

LaTeX Warning: File `https://raw.githubusercontent.com/GWC-DCMB/curriculum-note
books/main/Figures/IfElifElseDiagram.png' not found on input line [598](https://github.com/GWC-DCMB/curriculum-notebooks/actions/runs/3686899000/jobs/6239765330#step:7:599).

! Unable to load picture or PDF file 'https://raw.githubusercontent.com/GWC-DCM
B/curriculum-notebooks/main/Figures/IfElifElseDiagram.png'.
<to be read again> 
                   }
l.598 ...books/main/Figures/IfElifElseDiagram.png}
                                                  
? 
! Emergency stop.
<to be read again> 
                   }
l.598 ...books/main/Figures/IfElifElseDiagram.png}

Using local file paths instead of https links doesn't resolve the problem. It appears to be a known issue: jupyter/nbconvert#1079

Since we're mostly teaching in a flipped classroom style rather than with live-coding these days, let's temporarily stop trying to keep the PDFs updated until nbconvert resolves the issue.

Practice 21: Boston dataset no longer loadable

The Boston dataset referenced in practice notebook 21 is no longer available for download--we should choose a new dataset and re-write this practice notebook, referencing the concepts used in the lesson.

String comparisons in Loops 2

In the Loops 2 lesson & practice (and possibly other) notebooks we have some string comparisons using is, e.g.:

image

We should consider changing is to == instead for equality comparison (instead of identity comparison, which will only sometimes work due to string interning)

Note to editor in lesson 8

Lesson 8 contains a "note to editor" about is. For an upcoming iteration my suggestion would be to remove it here. A typical use is in tests for None, which you do not seem to cover. In the subsequent lesson 09 it might be good to mention that we neither use is nor == with Boolean values (but just the value itself instead of == True; or not for == False).

JOSE: Prerequisites and collaboration on notebooks?

This is related to your JOSE submission.

I did not use Google Colab before. After reading the paper I thought that the Python source code for the notebooks was available on GitHub (so that I could retain/reuse/revise/remix/redistribute it as OER, without Google Colab). I may be missing something fundamental here, but this does not seem to be the case. E.g., how would I create a PR to address issue #14 and change & into and?

Besides, if I open a workbook via a link from the README, pressing "play" asks me to log in to Google. Is that a hard prerequisite to use the notebooks? If so, please document this.

Spotify dataset needs more documentation

One of our facilitators noted this year that the Spotify dataset is a big difficult to understand especially for beginners, so we should either document what the values mean for this dataset or remove it from our capstone project dataset folder.

JOSE: Paper contents

This is related to your JOSE submission.

The paper is well written and addresses the questions relevant to JOSE. I've got some comments/questions:

At the end of the summary you write that anyone can contribute. I suggest to emphasize that you describe Open Educational Resources (OER) under free and open licenses. Actually, I wonder about the videos. They do not indicate license information, do they? Are they OER too? Are they only available on Youtube or also elsewhere for download and reuse?

Section "Collaborative Curriculum Development"

  • You describe a process of quality control via PRs. I do not see those PRs in this repository. Are they publicly visible somewhere?
  • JOSE papers prominently feature a link to the repository. Thus, the link at the end of the section may not be necessary. Besides, is this section really the best place for such a link?

I suggest to phrase learning objectives with action verbs (what will students be able to do?). The first objective is too vague in this regard, while the other two are fine.

You write about "paired programming". I suggest "pair programming".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.