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

Content added Content deleted
imported>Mako
imported>Mako
Line 98: Line 98:
== Session 2: Learning APIs ==
== Session 2: Learning APIs ==


Mentors and students felt that this session was the most successful and effective session — including, suprisingly, the most widely tested BPW session.
the most successful project, by far


=== Morning Lecture ===
** lectures
placekitten was a complete hit


The morning lecture was well received — if deliviered too quickly by Benjamin Mako Hill. Unsuprisingly, the example of PlaceKitten as an PI was an enormous hit.
explaining what an API is was hard. it's something worth preparing for in advance


Generally, speaking, explaining what APIs are is difficult. In particular, it's useful to explicitly say that we are focused on web APIs and that APIs are protocols or languages. Learners frequently wanted to ask questions like, "Where in the program is the API?" The API, of course, 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 is worthwhile.
if we removed anything from the whole thing it might be JSON


Although there was some debate among the mentors, if there is one thing we might remove from curriculum for a future session, it might be JSON. The reason it seemed less useful is that most of the APIs that most learners plan to use (e.g., Twitter) already have Python interfaces in the form of modules. In this sense, spend 1/4 of a lecture to learn how to parse JSON objects seems like a poor use of time. On the other hand, spendig time looking at JSON objects provides practicing think about more complex data structures (e.g., nested lists and dictionaries) which is something that ''is'' neccessary and that students will otherwise not be prepared for.
- benefits are that it provides a way to think to think about more complex data structures
- downside is that since most apis students will use already have python interfaces, it ends up being a little irrelevant


=== Afternoon Sessions ===
** afternoon sessions


In our session, more than 2/3 students were interested in learning Twitter and the session was heavily attended.
twitter/tweepy projects:


discoverability on the tweepy objects was a challenge. you get an object but you it's not easy to introspect those and see what's there in the same way you can with a json object. this comes as a suprise and was not something we taught.
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 suprise to us and required some real-time consultation with the TweePy 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 exmaples in the morning and wrote code almost from Scratch while looking directly at the API.
wikipedia:


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 artilce, 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).
- we focused on building a version of categories and catfishing


both worked very well. reviews were generally super posiitive
Both sessions worked well and received good 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-pedogogical reason to focus on reaeding and learning JSON.
** ideas


SimpleAPIs might have been a good example of somethign we could do as a small group excercise between parts of the lecture.
- other APIS, maybe ones without existing modules
- mabye work on toehr apis in small groups


== session 3 ==
== session 3 ==