Python Workshops for Beginners/Reflections: Difference between revisions

Editing general feedback about the sessions
imported>Ehashman
m (1 revision: Python Workshops for Beginners - UWaterloo)
imported>Ehashman
(Editing general feedback about the sessions)
Line 1:
Over three weekends in SpringFall 2014, a group of volunteers organized the [[Python Workshops for Beginners]] (CDSWPWFB) — a series of four sessions designed to introduce some of the basic tools of programming and analysis of data from online communities to absolute beginners. The CDSWPWFB were held between September 26th and November 15th in 2014 at the University of WashingtonWaterloo in Seattle.Waterloo, ON, Canada.
 
This page hosts reflections on organization and curriculum and is written for anybody interested in organizing their own CDSWPWFB — including the authors!
 
In general, the mentors and students, suggested that the workshops were a huge success. Students suggested that learned an enormous amount and benefited enormously. Mentors were also generally very excited about running similar projects in the future. That said, we all felt there were many ways to improve on the sessions which are detailed below.
 
If you have any questions or issues, you can contact [[Benjaminmailto:ehashman@uwaterloo.ca MakoElana HillHashman]] directly or can email the whole group of mentors at cdsw-mentors@uw.edu.
 
== Structure ==
Line 11:
The [[CDSW]] consisted of [[CDSW#Schedule|four sessions]]:
 
* '''Session 0 (Friday September 26th)''': [[CDSW#Session 0 (Friday September 26th Evening 6-9pm)|Setup and Programming Practice]]
* '''Session 1 (Saturday September 27th)''': [[CDSW#Session 1 (Saturday September 27th)|Introduction to Python]]
* '''Session 2 (Saturday October 25th)''': [[CDSW#Session 2 (Saturday October 25th)|Building data sets using web APIs]]
* '''Session 3 (Saturday November 15th)''': [[CDSW# Session 3 (Saturday November 15th)|Data analysis and visualization]]
 
The evening session ran from 6 to 9PM, and involved self-guided completion of setup and introductory exercises. The rest of the sessions followed this approximate structure:
Our organization and the curriculum for Sessions 0 and 1 were borrowed from the [http://bostonpythonworkshop.com/ Boston Python Workshop] (BPW): Session 0 was a three hour evening session to install software. The other sessions were all day-long session (10am to 4pm) sessions broken up into the following schedule:
 
* '''Morning, 10am10:30 AM -noon 12:00 PM:''': A 21.5 hour lecture.
* '''Lunch, noon12:00 PM -1pm 1:00 PM:''' Lunch is served.
* '''Afternoon, 1pm1:00 PM -3 1:15 PM:30pm''': PracticeAfternoon workingsessions onare projects in 3 breakout sessionsintroduced.
* '''Afternoon, 1:15 PM - 3:30 PM:''' Afternoon sessions with short projects.
* '''Wrap-up, 3:30pm30 PM -4pm 4:00 PM:''': Wrap-upClosing remarks, next steps, and upcoming opportunitieshomework.
 
Session 2 also featured a review session prior to the morning lecture.
We had 12 mentors volunteer initially although more joined as the event progressed.
 
We had a total of 10 mentors volunteer per session, with a total group of 22 volunteers.
We had about 150 participants apply to attend the sessions. We selected on programming skill (to ensure that all attendees were complete beginners), enthusiasm, and randomly to maintain a learner to mentor ratio of between 4 and 5. We admitted just over 50 participants.
 
We had about 230 participants apply to attend the sessions. About 100 of those were immediately filtered out for eligibility: no math or engineering undergrads were permitted to attend the workshops, as their programs have significant required programming components (often 2-3 classes in far more depth than we covered). We selected on programming skill (to ensure that all attendees were complete beginners), enthusiasm, and overall application quality, and I capped the total at 50 participants given our budget.
Our feeling was that nearly every student who came to the first week (Sessions 0 and 1) came to Session 2. Retention between the second two sessions was much worse with perhaps only 60% of the full group returning for Session 3. We attribute this rentention to poor timing (the weekend before finals at UW which affected many students) and to the long space between the sessions.
 
Sessions 0 and 1 had full attendance, but we lost about half our students for Session 2, which was held four weeks later during midterm season (initially planned to be a week earlier but there was a room booking conflict). Session 3 retained those students that attended Session 2. We attribute this rentention to poor timing (the heart of midterm season) and to the long space between the sessions.
We collected detailed feedback from users at three points using the following Google forms (these are copies):
 
We collected detailed feedback from users at threefive points using the following Google forms (these are copies):
* [https://docs.google.com/forms/d/1gPmgZvOxfE0KVRkb_ySgTqNvCaa4Rl8PYUY9u-NVwTE/viewform Application to the workshop]
* [https://docs.google.com/forms/d/1FGASnZLA3V13JTuJg5LF0fVvrUX9quKYc95yeEATzHY/viewform After Session 1]
* [https://docs.google.com/forms/d/1UhEU3aWKSuLpfBgR8CZcW8JrdgNRDj6FuT8yAqFCFmE/viewform After Session 2]
 
* [https://docs.google.com/forms/d/1gPmgZvOxfE0KVRkb_ySgTqNvCaa4Rl8PYUY9u-NVwTE1g82HOjmwfLCKWVwmFJSZTOKwihl4J7F6kfvuomdllkE/viewform Application to the workshop]
We used this feedback to both evaluate what worked well and what did not and to get a sense of what students wanted to learn in the next session and which afternoon sessions they might find interesting. We did not collect feedback after the final session but we should have.
* [https://docs.google.com/forms/d/1FGASnZLA3V13JTuJg5LF0fVvrUX9quKYc95yeEATzHY1pALHg2A1-HavPeeCqK0-w6DJOYAYV2JMl4-xk2frRho/viewform After Session 1]
* [https://docs.google.com/forms/d/1UhEU3aWKSuLpfBgR8CZcW8JrdgNRDj6FuT8yAqFCFmE1Uk3RAEXScOwBqa-V7tCpUF6yu5sXddNJLC4YhlF2YMo/viewform After Session 2]
* [https://docs.google.com/forms/d/1tzjhvcmF5bg2AX2QKwtksAUri3gx71jCdNHt2LBrFe8/viewform After Session 3]
* [https://docs.google.com/forms/d/15SfIlAWJinmax2m1r98L36FzLKWQl4QsEB9N0KyhgYg/viewform Follow-up survey]
 
We used this feedback to both evaluate what worked well and what did not. The final follow-up survey was intended to evaluate how effective the workshops were.
 
=== Morning Lectures ===
 
The CDSW began each full day with 2h lectures with no breaks. This was a little too intense for the students, so I decided to reduce the length to 1.5h and break things up with short, self-directed exercises. These went over very well. Furthermore, I'm not as experience of a lecturer as Mako, so I chose to use slides and distribute them to students, who told me it made it easier to follow along.
[[Benjamin Mako Hill]] gave all three of the two-hour morning lectures. All of the lectures involved the teacher working through material in the interactive Python interpreter shown on a projector with students following along in a Python interpretor on their own computers. In general, the lectures were rated well received by students.
 
Concern with the lectures include feedback that:
 
* Two hours of straight lecture of difficult material was long and difficult to sit through.
* If students became lost, it could be very hard to catch up given how the interactive Python session tended to build on earlier steps and assume the presense of variables or particular states.
* There were often more mentors than really needed in the morning sessions meaning that many mentors were often idle.
* As the lectures progressed and the work and tasks became more complex, working in the interactive interpreter become increasingly difficult — particularly for long for loops or deeply nested blocks of codes.
 
To address these concerns, we are planning the following changes to how we run these sessions in the future:
 
In the Session 3 survey, 35% of respondants said the lectures were "Good", 35% called them "Very Good" and 18% called them "Excellent".
* Breaking up the lecture into at least two parts. Between those parts, we will try include a small (~10-15 minute long) exercise. This will both break things up, allow mentors to be of more help during the sssions, and give students who fell behind a chance to catch up. It will also allow students to grab coffee or use the bathroom if they need to.
* Record the lectures so that students can catch up after the sessions. We did not do this but should have.
* Arrange for some mentors to arrive after noon if they would prefer.
* Upload not only the outline, but examples of all of the code we'll use as part of the lectures.
* Switch into writing code in separate files and running those files much earlier — perhaps as soon as we hit more than 2-3 lines in a <code>for</code> loop in Session 1.
 
=== Projects ===
 
In the afternoons, we broken into small groups to work on "projects". In each afternoon we tried to have three afternoon project tracks: Two projects on different substantive topics for learners with different interests and a third project thatwhich was much more self-directed study, for those not interested in the first two.
 
In Sessions 1 and 2, the self-directed projects were based on working through examples from [http://www.codecademy.com/ Code Academy] that we had put from material already online on the website. In the self-directed track, students could work at their own pace with mentors on hand to work with them when they became stuck.
 
In Session 3, one of our session leads did not show up; at the behest of students, I held a single afternoon session that involved working through various data science examples together as a class, and answered general questions about Python programming. It ended up being more of an extension of the morning lecture and next steps than the projects we had imagined.
In Session 3, we did not use Code Academy but instead devoted the self-directed room to students working with mentors on data science projects of their choice. Because of issues with the student to mentor ratio, we asked that students only participate in the self-directed track if they felt confident they could be self-sufficient working on their own 70-80% of the time.
 
In allthe other tracks, student would download a prepared example in the form a of a <code>zip</code> file or <code>tar.gz</code> file. In each case, these projects would include:
 
* All of the libraries necessary to run the examples (e.g., [http://www.tweepy.org/ Tweepy] for the Session 2 Twitter track).
* All of the data necessary to run the example programs (e.g., a full English word list for the Wordplay exampl,eexample).
* Any other necessary code or libraries we had written for the example.
* A series of small numbered example programs (~5-10 examples). Each example program attempts to be sparse, well documented, and not more than 10-15 lines of Python code. Each program tried both to do something concrete but also provide an example for learners to modify. Althought it was not always possiible, the example programs tried to only used Python concepts we had covered in class.
 
On average, the non-self-directed afternoon tracks constituted of about 30% impromptu lecture where a designated lead mentor would walk through one or more of the examples explaining the code and concepts in detail and answeriniganswering questions.
 
Afterward, the lead mentor would then present a list of increasingly difficult challenges which would be listed for the entire group to work on sequentially. These were usually written on a whiteboard or projected and were often added to dynamically based on student feedback and interest.
Line 83 ⟶ 75:
== Session 0: Python Setup ==
 
The goal of this session was to get users setup with Python and starting to learn some of the basics. The setup curriculum was adpated from BPW. We ran into the following challanges:
 
* Users on Windows struggled to get Python setup and added to their path.
Anonymous user