How to organize an introductory class of "Python Programming for Data Science"

474 views
Skip to first unread message

Gabriele Tolomei

unread,
Sep 6, 2017, 6:30:31 AM9/6/17
to Teaching with Jupyter Notebooks
Hello Everyone,

I'm actually extending a question that I've already posted as reply to another thread in this group about how convenient is to use RISE for showing Jupyter notebooks, as if they were PowerPoint slides.

Long story short, in a few weeks I'm gonna start teaching an introductory class of Python programming with a special focus on data science. This class is intended for ~40 first-year Master students with (hopefully) some basic coding skills (although not necessarily in Python).

My question is quite generic and it doesn't relate only to Jupyter. In fact, I'd like to hear from more experienced people in this group what is, in their opinion, a good plan and the best set of tools for organizing such a kind of class. In particular, I'm interested in the following aspects: presentation of the teaching material, assignments, information sharing and internal communications with students.
At the moment, I'm considering the following options (but, of course, I'm open to others which I might not have taken into account):
  • Presentation of the teaching material
1) Use PowerPoint slides to present lecture contents and switch to Jupyter Notebook for "interactive" coding sessions.
2) Use Jupyter Notebook only (both for presenting contents and, of course, coding sessions) without RISE (i.e., simply projecting the browser tab where the notebook is and navigate through cells).
3) Same as 2) but using RISE (i.e., presenting the notebook as if it was a PowerPoint presentation and switch back to "traditional" view as long as I need to run code cells interactively).
  • Assignments
1) Prepare notebooks and share them with the students (see main bullet below), allowing each student working on her/his own local environment (i.e., each student will need to install the correct environment beforehand, presumably using Anaconda). [PROs: no need to setup any remote web server; CONs: might take some efforts to let all students have their environment properly installed and configured; how about grading?]
2) Use JupyterHub (in combination with nbgrader) to allow students having a "common" remote environment [PROs: easier to manage/collect/grade assignments; CONs: might be hard to setup and estimate resources like CPU and storage to dedicate to each user; how about security/permissions for students who would like to access the remote platform from outside the internal network infrastructure?]
  • Information sharing and internal communications 
1) Use Google Groups to set up a group and a mailing list dedicated to students and share with this group a Google Drive folder containing the material I want to disseminate.
2) Use GitHub for sharing both the PowerPoint (or PDF) slides (if any) and the notebooks. 
 
Sorry for the long and quite broad message.
I really look forward to hearing from someone in this group!

Thanks Kindly,
Gabriele

Mario Menezes

unread,
Sep 6, 2017, 8:08:13 AM9/6/17
to Teaching with Jupyter Notebooks
Hi Gabriele,

  I'm also preparing myself to give a short course on Python for almost the same audience (students and a few teachers), but in my case, almost nobody with programming skills.

  My approach is:

    * Presentation of Teaching material:

       - I'll use traditional slides, but PDF type; I'm typing them in Rmarkdown (RStudio),  since I'm used to prepare my R classes this way. Latest versions of RStudio support Python cells which makes it interesting for including code as well as their output. I have to admit that to type slides in Rmarkdown (RStudio) and use Jupyter notebook is not my ideal workflow for Python classes (as opposed to my R classes); but it was somewhat natural to keep what was working well for me.
       - Jupyter notebooks will be used for practice and demonstrations; my course will not have graded assignments, so this will not be a concern.

    * Information sharing and internal communications:
 
        - I'll probably use Google Groups and Google Drive for this; it's not a regular course, and communications will be restricted to the course time. May be even Google Groups will be unnecessary.

     This is my small experience; the course was not taught yet, it' s planned to start in a few weeks.

     Best regards,

Mario M.

Gabriele Tolomei

unread,
Sep 6, 2017, 8:22:55 AM9/6/17
to Teaching with Jupyter Notebooks
Hey Mario,

Thanks a lot for your reply!
I'm also tempted of presenting the material of the course using "traditional" slides (PDF may actually work better than PowerPoint).
The thing is that I've tried playing with RISE (https://github.com/damianavila/RISE) in combination with Jupyter; this is a nice and quite customizable extension to quickly present your notebook in a "slideshow" fashion using reveal.js. My main concern with this approach is mostly due to the possible overhead that I would introduce if I decided to go for it.

Cheers,
Gabriele

Michael Zingale

unread,
Sep 6, 2017, 8:25:06 AM9/6/17
to Mario Menezes, Teaching with Jupyter Notebooks
I've taught a similar class a number of times.  My latest iteration is to have them download Jupyter notebooks ahead of class and work through during the week and then in class we work on a notebook with a bunch of exercises to test ideas.  I use slack for class communication.  It's nice cause in the class time, I can show that on the screen and people can post their solutions on slack and we can discuss them easily.  It's a nice way for students to share what they did with the class.  Outside of class, students ask questions on slack about the notebooks they are working through.  I graded based on participation, using a simple script to keep track of participation on slack.

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-education+unsubscribe@googlegroups.com.
To post to this group, send email to jupyter-education@googlegroups.com.
Visit this group at https://groups.google.com/group/jupyter-education.
To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/9f0f7ed1-0585-4fe2-a469-724ff54242e3%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Michael Zingale
Associate Professor

Dept. of Physics & Astronomy • Stony Brook University • Stony Brook, NY 11794-3800
phone:  631-632-8225

Damián Avila

unread,
Nov 23, 2017, 4:11:12 PM11/23/17
to Michael Zingale, Mario Menezes, Teaching with Jupyter Notebooks
My main concern with this approach is mostly due to the possible overhead that I would introduce if I decided to go for it.

Gabriele, what would be the overhead, specifically? And what you actually tried/did in your course ;-) ?

Cheers.


For more options, visit https://groups.google.com/d/optout.



--
Damián Avila

Gabriele Tolomei

unread,
Nov 27, 2017, 4:17:05 PM11/27/17
to Damián Avila, Mario Menezes, Michael Zingale, Teaching with Jupyter Notebooks
Hi Damián,

I guess that was mostly due to the fact that before this experience I had just used Jupyter Notebook without taking advantage of all its features. My concern was about the possible steepness of the learning curve I would have faced if I had opted for Jupyter Notebook also for presenting my slides. After 6 weeks of lectures, and considering the feedback that I have been getting from my students, I can confirm the choice of using only Jupyter Notebook (rather than, for instance, MS PowerPoint and Notebook) was the best I could have made. This is also thanks to the way in which RISE works nicely with decktape to create good looking pdf slides.

Cheers,
Gabriele

To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.
To post to this group, send email to jupyter-...@googlegroups.com.
--
Michael Zingale
Associate Professor

Dept. of Physics & Astronomy • Stony Brook University • Stony Brook, NY 11794-3800
phone:  631-632-8225

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.
To post to this group, send email to jupyter-...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jupyter-education/IeyzVOX0JBM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jupyter-educat...@googlegroups.com.
To post to this group, send email to jupyter-...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
--
Gabriele

Please, consider encrypting your email messages with my public key if you mind about the security and privacy of our communications!

Mario Menezes

unread,
Nov 27, 2017, 5:26:09 PM11/27/17
to Teaching with Jupyter Notebooks
Hi Gabriele,

 Thanks for this follow up! I'll give RISE a try, for sure!

 Best regards,

Gabriele Tolomei

unread,
Nov 28, 2017, 4:20:11 AM11/28/17
to Teaching with Jupyter Notebooks
Sure!

From my personal experience, RISE + decktape is the way to go if you want to both show (RISE) and transform into PDF files (decktape) your Notebook slides.

Regards,
Gabriele

Damián Avila

unread,
Dec 2, 2017, 8:45:52 AM12/2/17
to Gabriele Tolomei, Teaching with Jupyter Notebooks
Thanks for the feedback, nice to know the decktape approach work well.

To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-education+unsubscribe@googlegroups.com.
To post to this group, send email to jupyter-education@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Damián Avila

Damián Avila

unread,
Dec 2, 2017, 8:47:37 AM12/2/17
to Gabriele Tolomei, Teaching with Jupyter Notebooks
work >> works ;-)
--
Damián Avila

Stephen Smith

unread,
Jan 7, 2018, 1:57:31 AM1/7/18
to Teaching with Jupyter Notebooks
Hi Gabriele,

With regards to your issue with getting all students set up to use the same environment, perhaps you might want to look at Vagrant? (www.vagrantup.com). I just recently stumbled on vagrant myself and have only run through the Getting Started Guide so far but it seems very capable and would provide a solution for having all of your students using the same environment. I'm considering it for an upcoming course I will be teaching using Python.

Basically you run through these steps:
  • set up a base image (Ubuntu, Fedora, whatever you want) for VirtualBox or a similar technology like VMWare (vagrant supports several) (OS images are also available for download ready-to-go)
  • add all your tools either to the base image or create a simple bash script that automates the build and installation of any tools you want upon boot-up of the virtual machine
  • your students then run 'vagrant up' to launch their own virtual machine, pre-configured with everything you installed in your image or specified in the bash script

Your students would simply need to download Vagrant, VirtualBox, your Vagrantfile and the bash script if needed, and run a couple of simple 'vagrant' commands that would download, install and provision a dev environment automatically for them. Each student would then get exactly the same environment. Your config files (Vagrantfile and the bash script) would go under revision control so any updates are easily distributed.

If you run through the Getting Started Guide on the vagrant site you'll get a better idea/explanation of the process. It runs through installing a base Ubuntu image and configuring it to run an Apache web-server. Shared folders are also automatically configured so your students can access the files from their host machine using their favorite editors and tools.

Regards,
Stephen S.



Gabriele Tolomei

unread,
Jan 7, 2018, 11:46:27 AM1/7/18
to Teaching with Jupyter Notebooks
Hi Stephen,

Thanks a lot for your reply.
It sounds indeed really helpful; I might give it a try next year, as this year's class is almost over.
In the meantime, it would be great if you could keep me posted with your own experience with Vagrant.

Many Thanks,
G.

Garren Shannon

unread,
Feb 6, 2018, 1:36:24 PM2/6/18
to Teaching with Jupyter Notebooks
Hello Gabriele, et al,

   I am reading your post here with interest and I realize is it a bit dated but.... I just started a high school class of 30 students in Python basics that was created by Microsoft and made available to schools via the Imagine Academy. The curriculum is solid and the Jupyter Notebook is a fantastic engine for deploying the curriculum.

   I wanted to add to the discussion. Similar to you, I find the challenge with the system is in assessment. I can see student work, field their questions and the course layout is almost self-directed learning. My students are able to work rapidly through each section. However, the only method for assessment is for them to either share their cloned library back to me or download their current section assignment and post that jynb file or pdf for grading. We use Moodle here (I deployed it a decade ago for our LMS) and I deploy jynb files and submission through that system.

   I am wondering how you ended up with students submitting their completed work? Library share, PDF or .JYNB file? Or did you turn to another way of assessment? Also, how did it go for you or how much additional work was grading based on the tools you have?

Thanks in advance for sharing...

Gabriele Tolomei

unread,
Feb 6, 2018, 3:31:57 PM2/6/18
to Teaching with Jupyter Notebooks
Hello Garren,

Thanks for your message.

I will try to give you some feedback on the basis of my (recent) experience. 
Incidentally, here at the University of Padua, Italy, we also use Moodle as our default LMS.

Concerning class material, I opted for both disseminating notebook files (.ipynb), i.e., one for each lecture, as well as their PDF version generated with the RISE (Jupyter) plugin in combination with decktape utility. I found this option the very best among the ones that I have tried.

As per the assessment, instead, I have used another Jupyter extension which is called nbgrader. This is pretty well documented, and - among other things - it allows you to create, grade, and give feedback to students.

Hope this helps.

Kind Regards,
G.

Garren Shannon

unread,
Feb 6, 2018, 5:11:21 PM2/6/18
to Teaching with Jupyter Notebooks
Thank you Gabriele, this information does indeed help. I will look into nbgrader.

I happen to live in Pullman WA, home of Washington State University and I used to work for the university in the School of Electrical Engineering and Comp Sci. so I know the challenges of teaching to adult learners. I will tell you, I find the kids at the High School level far more engaging. It seems, at least in our university environment, the young adults expect things to be given to them where our high school kids are so much more appreciative. I hope the same is not true in Italy. 

Cheers... and thank you again.

Gabriele Tolomei

unread,
Feb 6, 2018, 6:21:11 PM2/6/18
to Teaching with Jupyter Notebooks
Hi Garren,

Thank you also for sharing your experiences (both in the Academia and at the High School).

Unfortunately, I don't have any teaching experience at the High School level, and therefore it's hard for me to make a fair comparison, but from what I have seen so far here at the University I totally agree with you on the fact that young adults seem never totally satisfied with what you give to them, no matter how much effort you put through it. If on the one hand this may be understandable (all in all we've all been students!), on the other hand I'm firmly convinced that one of the "meta-goals" of the Academia should be to foster the ability of students of standing (and, possibly, walking) on their own feet.

Cheers :)
G.

Luke Thompson

unread,
Apr 20, 2018, 6:15:21 PM4/20/18
to Teaching with Jupyter Notebooks
Hi everyone,

I thought this thread would be a good place to share a Python course I recently finished teaching that makes heavy use of Jupyter notebooks. The course, "Python for Data Analysis", is offered at the Scripps Institution of Oceanography, and it includes a command line tutorial and everything one needs to do data science using the Python programming language. Topics include:

* Command line and bash
* Python data types and operations on them
* Pandas and Numpy packages, including Pandas DataFrames and time-series support
* Plotting with Matplotlib and Seaborn
* Interactive visualization
* Regular expressions
* Git and GitHub

All materials are provided on GitHub, and lectures are provided on YouTube, at the links below:


I hope these resources are useful to some of you.

Luke

--
Luke R. Thompson, Ph.D.
Lecturer, Scripps Institution of Oceanography, UC San Diego

Garren Shannon

unread,
Apr 20, 2018, 7:21:43 PM4/20/18
to Luke Thompson, Teaching with Jupyter Notebooks

Very Cool Luke,

 

                I am approaching finishing up “Introduction to Python” with my high school students using the Jupyter Notebooks driven through https://Notebooks.Azure.com (Microsoft of course). I like the Notebook system but more importantly, the students LOVE (I didn’t say that loud enough), LOVE the notebook approach. Realistically, for 9th to 12th graders, it is one of the best learning engines I have seen.

 

                The show-try-do capability of Jupyter is fantastic. Of course, it is all in how the curriculum has been laid out. IMHO, Microsoft did a great job putting the intro curriculum together.

 

                I forwarded your suggestion of using nbgrader plug-in to MS and they sent it right up to the curriculum dev team. I hope to see a complete program that is built in such a way as it can be offered to HS students by a teacher who does NOT have to be strong in Comp Sci. This is the only way we will be able to get CS ED into more than just a few K12 schools nationwide.

 

                OK… with that said, regarding your course… as I stated, very cool. I will share it with my HS students. A small handful of them would be interested, though it may be too much for them at this time.

 

Cheers… and thanks for sharing.

 

 

Need Help? HTTP://helpdesk.psd267.org

 

****************************
Garren Shannon, MS, PMP

Description: PullmanSchoolcolor

Director Information Systems

Teacher – Pullman High School


240 SE Dexter Dr, Pullman WA, 99163

gar...@psd267.wednet.edu

 

Cell: 509.432.4010   Desk: 509.336-7220
****************************
"Watch your thoughts; they become words. Watch your words; they become actions. Watch your actions; they become habits. Watch your habits; they become character. Watch your character; it becomes your legacy"

Frank Outlaw

--

You received this message because you are subscribed to a topic in the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jupyter-education/IeyzVOX0JBM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jupyter-educat...@googlegroups.com.
To post to this group, send email to jupyter-...@googlegroups.com.
Visit this group at https://groups.google.com/group/jupyter-education.

Lorena Barba

unread,
Apr 20, 2018, 7:29:28 PM4/20/18
to Luke Thompson, Lorena Barba, Teaching with Jupyter Notebooks
Hi Luke,

Thanks for sharing. This looks very nice, and it’s ready for reuse as a must-do course for incoming graduate students!

I have a new course that is rather aimed at undergraduate students, but it has some things in common with yours. It only covers basic Python data types (strings, lists, but no more), and it doesn’t include any command line, git/GitHub. It does use NumPy, pandas, and Matplotlib.

The course is built out of three shorter modules:

Module 3: Fly at change in systems https://github.com/engineersCode/EngComp3_flyatchange

Here is the syllabus:
Barba, Lorena A. (2017): Course Syllabus: Engineering Computations (MAE 2117). figshare. Paper.

And I’m making online courses on our Open edX platform. Only the first module is there, so far.
https://openedx.seas.gwu.edu/courses/course-v1:GW+EngComp1+2018/about
_______________________________________
Lorena A. Barba
Associate Professor, Mechanical and Aerospace Engineering
The George Washington University
twitter.com/LorenaABarba

--
You received this message because you are subscribed to the Google Groups "Teaching with Jupyter Notebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jupyter-educat...@googlegroups.com.

Bois, Justin S.

unread,
Apr 20, 2018, 7:39:16 PM4/20/18
to Lorena Barba, Luke Thompson, Teaching with Jupyter Notebooks
These are great courses! In the spirit of sharing, I thought I'd share a couple data science-y courses I do here at Caltech aimed at students in the biological sciences.

A weeklong summer bootcamp on intro to programming (2018 edition coming in about 2 months' time):
http://justinbois.github.io/bootcamp/

A 10-week course on data analysis with emphasis on Bayesian inference (in future editions, we'll use Stan for MCMC and will cut image processing in favor of more statistical inference):
http://bebi103.caltech.edu/

I hope these materials are useful to you!

Cheers,
Justin
> To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/E56E735D-1E27-4A88-BF1E-7F6D783B8AA3%40email.gwu.edu.

William Stein

unread,
Apr 20, 2018, 10:59:31 PM4/20/18
to Bois, Justin S., Lorena Barba, Luke Thompson, Teaching with Jupyter Notebooks, Kiran S. Kedlaya
Hi,

Here's the complete materials under a CC license from a course "Intro
to Mathematical Software" that I taught a few times at Univ of
Washington, then Kiran Kedlaya just taught twice at UC San Diego. It's
a bunch of Jupyter notebooks.

https://github.com/kedlaya/math157

-- William
> To view this discussion on the web visit https://groups.google.com/d/msgid/jupyter-education/1FD5941C-74AB-4295-8E92-75652E2F6962%40caltech.edu.
> For more options, visit https://groups.google.com/d/optout.



--
William (http://wstein.org)

Luke Thompson

unread,
Apr 21, 2018, 2:36:09 AM4/21/18
to William Stein, Bois, Justin S., Lorena Barba, Teaching with Jupyter Notebooks, Kiran S. Kedlaya
Thanks, William and all the other respondents! People are putting together some pretty rad Python courses. The Jupyter notebook makes it easy. :)

Luke
Reply all
Reply to author
Forward
0 new messages