Community Data Science Workshops (Spring 2014)/Reflections: Difference between revisions

imported>Mako
imported>Mako
Line 116:
== Session 2: Learning APIs ==
 
Mentors and students felt that this session was the most successful and effective session — including, surprisingly, the most widely tested BPW session.
 
=== Morning Lecturelecture ===
 
The morning lecture was well received — if delivered too quickly by Benjamin Mako Hill. Unsurprisingly, the example of [http://placekitten.com/ PlaceKitten] as an PIAPI was an enormous hit: informative ''and'' cute.
 
Generally, speaking, explaining whatDefining APIs are iswas difficult. In particularFirst, it'sgeneral usefulambiguity toaround explicitlythe sayuse thatof wethe areterm focusedand onthe webdifference between APIs in general and thatweb APIs are protocolsshould orbe languagesforegrounded. Learners frequently wanted to ask questions like, "Where in thethis Python program is the API?" TheIt API,was ofdifficult course,for some to grasp that the API is the ''protocol'' that describes what a client can ask for and what they can expect to receive back. Preparing a concise answer to this question ahead of time iswould have been worthwhile. We spent too much time on this in the session.
 
Although there was some debate among the mentors, if there is one thing we might remove from curriculum for a future session, it mightwould probably be JSON. The reason it seemed less useful is that most of the APIs that most learners plan to use (e.g., Twitter and Wikipedia) already have Python interfaces in the form of modules. In this sense, spendspending 30 1/4minutes of a lecture to learn how to parse JSON objects seems like a poor use of time. On the other hand, spending time looking at JSON objects provides practicing think about more complex data structures (e.g., nested lists and dictionaries) which is something that ''is'' necessary and that students will otherwise not be prepared for.
 
On the other hand, time spent looking at JSON objects provides practicing think about more complex data structures (e.g., nested lists and dictionaries) which is something that is necessary and that students will otherwise not be prepared for. We were undecided as a group.
=== Afternoon Sessions ===
 
=== Afternoon Sessionssessions ===
In our session, more than 2/3 students were interested in learning Twitter and the session was heavily attended.
 
In our session, more than 2/360% of students were interested in learning Twitter and thethat sessiontrack was heavily attended.
In Twitter, discoverability on the tweepy objects was a challenge. Users will have an object but you it's not easy to introspect those objects and see what's there in the same way you can with a JSON object. This came a surprise to us and required some real-time consultation with the TweePy documentation.
 
In Twitter, discoverability onof the structure of [http://www.tweepy.org/ Tweepy] objects was a challenge. Users willwould havecreate an object but you it's was not easy to introspect those objects and see what's is there in the same way youwe had candiscussed with a JSON objectobjects. This came a surprise to us and required some real-time consultation with the TweePy[http://tweepy.readthedocs.org/en/v2.3.0/ Tweepy module documentation].
The Wikipedia session ended up spending very little time working with the example code we had prepared at all. Instead, we worked directly from examples in the morning and wrote code almost from Scratch while looking directly at the API.
 
The Wikipedia session ended up spending very little time working with the example code we had prepared at all. Instead, we worked directly from examples in the morning and wrote code almost entire from Scratchscratch while looking directly at the output from the API.
Our session focused on building a version of the game Catfishing. Essentially, we set out to write a program that would get a list of categories for a set of articles, randomly select an articles, and then show categories back to the user to have them "guess" the article. We modified the program to not include obvious giveaways (e.g., to remove categories that include the answer itself as a substring).
 
Our session focused on building a version of the [http://kevan.org/catfishing.php game Catfishing]. Essentially, we set out to write a program that would get a list of categories for a set of articles, randomly select anone articlesof those articlse, and then show categories associated with that article back to the user to have them "guess" the article. We modified the program to not include obvious giveaways (e.g., to remove categories that include the answer itself as a substring).
Both sessions worked well and received good feedback.
 
Both sessions worked well and received goodpositive feedback.
In future session, we might like to focus on other APIs including, perhaps, APIs that do not include modules which provide a stronger non-pedagogical reason to focus on reading and learning JSON.
 
SimpleIn future session, we might like to focus on other APIs including, perhaps, APIs that do not include modules. This would provide a stronger non-pedagogical reason to focus on reading and learning JSON. Working with simple APIs might have been a good example of something we could do as a small group exercise between parts of the lecture.
 
== Session 3: Data Analysis and Visualization ==
Anonymous user