Interview with Trinket.io

I had the great pleasure of meeting Elliott Hauser and the awesome development team of Trinket.io at PyCon 2014.  Trinket taps into the web-based power of Python by creating a framework to host interactive Python sessions as part of lessons or embedded in a blog.

Trinket’s blog has been featuring a series of interviews with programming educators, showcasing a wide assortment of approaches and tools.  I was recently interviewed by them about the Python group that I co-organize and the various outreach we’ve taken up.

Trinket offers a platform to document your workshop or instructional notes in such a way that your students can take the link home for reference or sharing.  I’ll be posting about a workshop I recently documented on their platform shortly.

Advertisements

Summer 2014 PyCamps are scheduled

Summer 2014 PyCamp schedules have just been announced!  I attended PyCamp last year and loved every moment of it.  Being self-taught, it helped fill in a ton of gaps I had and introduced me to so much new stuff to explore.  These are not meant for absolute beginners, but you don’t need to be an expert to get a lot out of it.  You should be fine if you’ve gone through a basic book, Codecademy, or PythonLearn.

Here’s the blurb of the PyOhio PyCamp:

PyOhio PyCamp 2014 is an ultra-low-cost, five-day, Python boot camp taking place July 21-25 in a high tech classroom on the campus of The Ohio State University. PyCamp has taught the fundamentals of Python programming to thousands. You can get up to speed on the most modern programming language at PyCamp. Sign up today at http://tripython.org/pyohio14

These camps are usually held the week leading up to a larger conference, such as PyOhio.  Be sure to stay for the conferences if you can.  Depending on the colleges and universities you have nearby, these may be your only opportunity for a truly affordable Python class.  Tuition for the one leading up to PyOhio is $300, which is much less than a community college or university’s tuition cost.  The money raised by these camps is also used to cover the cost of the host conference.

This year they have some limited scholarships available:

An anonymous donor has stepped forward for PyOhio PyCamp 2014 and offered four scholarships. The scholarships are specified for “women and minorities under-represented in computer science.” Two additional criteria apply: applicants must not already be working in IT nor may they be already enrolled in a “formal” (i.e., secondary or university classroom) programming course or major (MOOCs are OK). The scholarships cover $150 of the eligible tuition. Therefore, an early bird tuition becomes $150. Or an early bird tuition with an OSU email address becomes just $100. These scholarships are first-come, first-served. If you qualify, please send an email, subject line “PyOhio PyCamp 2014 Scholarship,” with how you meet with criteria and why you need PyCamp to pycamp@trizpug.org.

 

In defense of documentation and /r/learnpython

I feel like any discussion of reddit as a source of anything requires a “defense of” perspective.  There is a traditional and justified fear of going to the internet for help, but I have been pleasantly surprised at the /r/learnpython community.  Perhaps it is because the entire purpose of this group is for newbies to ask newbie questions that participants of the community are so kind.  Having /r/python as a separate group is also helpful.

Any student new to a domain needs to find a learning community.  This may be a friend who knows the topic, classmates, or internet forums.  Given the small number of Python communities out there in physical space, having virtual communities is often the only recourse.

Why do I find that /r/learnpython is a pretty awesome group?  Mostly, everyone is really nice.  We all need supportive and nice communities and tutors. Being afraid to ask a question prevents growth.  This is not to say that you shouldn’t try to resolve things on your own.  I have often answered my own questions while trying to write them up for other people.  I never really used these resources to ask questions, because it is very rare for me to ask a question that hasn’t already been asked somewhere else.

The other important factors:

  • a solid list of resources, if not obviously organized
  • huge range of research domains represented
  • fast and kind answers

A big issue I hear reported from students, particularly from the humanities and social science crowds, is a lack of comfort when using documentation.  Their discomfort is usually communicated as something like “Looking at documentation means I don’t really understand it.”  My theory behind this is that the kind of training that we get in our coursework is just different from math/CS.  The idea of the ‘cheat sheet’ isn’t really present in our normal studies.  We read original materials, discuss them, write about them, and come away with a mastery of concepts rather than a memorization of syntax.  I would argue that items like docs.python.org and Python in Your Pocket are viewed by some as if they were Cliffs Notes.  This doesn’t map perfectly, but it gets my point across.  I hypothesize that the non-STEM students view referencing documentation as implying that they don’t understand the material.  I wonder if language students feel differently from this because of the need to reference dictionaries.

This is an interesting distinction between these two groups.  In programming you learn semantic concepts and study language specific syntax.  On the other side of the coin, humanities and social science students use human language our or syntax and deeply study the semantics of various theoretical domains.  Referencing syntax for this later group amounts to reviewing style guides for citation and dictionaries, but is viewed as functionally different from the semantics they are learning.  They have such a focus on semantics that syntax is often not formally distinguished.  On the other hand, to programming, semantics and syntax are (usually) taught at the same time and are intertwined.  Referencing documentation for syntax is similar to referencing how to spell a word or how to use commas.  This isn’t “cheating” because it isn’t giving you the answer and doesn’t imply weakness in understanding.

I try to focus on making these distinctions when working with students reporting this hesitation:  it is completely normal to reference documentation all the time when writing programs.  It is not giving away the answer, but just telling you how to spell your answer correctly.  You still have to come up with the answer.  There could also be an argument that looking at documentation is not only normal, but ideal.  Particularly when using syntactical forms outside your normal toolbox, or when the teaching process is focusing on the semantic forms rather than memorizing syntax.

As explained to me by my web design professor when announcing that all our exams were open book and open internet:  we are never alone when coding.  When writing a program in a professional environment you will have your books and coworkers available.  Communication, discussion, etc. are vital to the process and professional growth.  Our society introduction specialization for a reason:  there are benefits to people having deep a understanding of one particular domain, but specialization requires that we all work together.

To new students of Python or any other programming language:

  • embrace documentation
  • collect helpful documentation for your domain together
  • don’t be afraid to make annotations or notes in your reference books
  • looking at documentation doesn’t mean you don’t know what you’re doing
  • we very often answer our own questions when trying to formulate them
  • find a community and talk to your learning peers

Programming for Everybody

I was very pleased to see that Dr. Chuck has started up a new Coursera class, Programming for Everybody.

A few things caught my eye immediately:

  • There are six sessions listed that run regularly through next year.
  • The activities are data centered.
  • Material is based on Python for Informatics, which I know and highly regard.

As some of you may know from reading my list of resources, I haven’t been too happy with the “beginner-ness” of some of the Python courses offered by Coursera.  For example, many presume that students can easily catch on to and develop mathematical algorithms for programs with minimal instruction.  Additionally, the skills taught in those classes do not always directly map to the needs of researchers needing Python for data processing and analysis.  Learning how to program by creating interactive games is awesome, if you want to make interactive items, but not always the most useful exposure if all  you need to do is manipulate text.

One of my first exposures to Python was through Python for Informatics, so I am excited to see the perspective of this class as a foundational boot camp and gentle introduction.  This course seems to be designed similarly to the way Py-CU designed the Introduction to Programming workshop, and that worked out well.  Our perspective was to give students enough introduction so that they could dive right into a book or other resource and not feel so overwhelmed.  We found that this worked out well and students left inspired and ready to tackle new things.

I look forward to seeing these types of classes and resources evolve over time, and I am particularly excited they are being designed to run on a regular basis.

Presenting at PyCon!

PyCon 2014 is coming up quickly!  I am so excited to be presenting a poster and have been working madly to finish it up.

Link to the program entry for my poster

My poster focuses on students who are attempting to learn programming and/or Python from outside a standard computer science educational track.  These students include (but not limited to) those who cannot access college courses due to financial or time issues, undergraduates out of credit hours to begin a new major or minor, and graduate students unable to add CS coursework into their program.

Students in this situation are facing complications beyond basic access. They may not have the traditional prerequisite math and physics, lack basic computing skills, and materials that don’t speak to their learning needs.  These other issues do not take away from their desire and need to learn.

In this poster, I have attempted to summarize the situation, listed a set of Python community goals, described the outreach work of Py-CU, and highlighted some of the best resources for students in this situation.  The goal of this poster is to encourage members of the Python community to give back, explain the unique situation these students are in, and provide readers with learning resources they can direct students to.  This has been a wonderful topic to explore, and is framing additional work that I’m hoping to complete over the summer.  I’ll post a copy of my poster once I’ve finalized it.

The talk list for PyCon is amazing and I’m looking forward to being able to report on some new resources people are presenting about.  Going to PyCon?  Check out the posters on Sunday!

Why programming?

Every time I mention to someone that I believe all students should have some exposure to the fundamentals of programming, I keep getting the same question:  “Why would I need learn how to program?”  This is a sane response, but the conversation after that often highlights many of the misconceptions about programming and computer literacy topics.  I don’t find it cute when people, particularly woman, express their disinterest in developing computing literacy skills with pride. But that’s a post for another time.  

I’m not going to try and romanticize the idea of coding and programming as some glorious state of being everyone should experience, but I will say that it is a skill everyone should have exposure to.  We all learn how to change tires and open up the hood of our cars not because our parents and teachers think we should be car mechanics, but because a car is a tool we often use on a daily basis and should know a little something about.  Programming and computers are no different.

Before we get started, let’s make a note of what I have and have not said here.  I have not said that all students should learn to be programmers.  That would be annoying and impractical.  What I did say is that all students should have exposure to the fundamentals.   There is a huge difference between these two concepts.  Being a skilled professional programmer requires many years of experience and a lot of education.  Having experience with the basic framework allows you to see how programming tools may be of use.

Let’s look at an example to explore why even understanding the basics can significantly benefit someone.

The other day I was playing Pokémon, and an old man by the sea told me he had given me the power to read the text on some ancient underwater ruins. I am a dutiful servant to the NPCs, so off I went.  I typed up all the messages I found, but it turned out to all look like gibberish.  The old man lied!  Except not.  When I went back, he told me “Oh ya, they read right to left.”  Thanks, bro.

So there are a few reactions a player can have here, ranging from:

  •  “I can read all the things backwards!”
  •  “Okay, I’ll write up or type all the messages starting from the end.”
  •  “I know how to print text backwards in Python.”

Now, try to imagine this scenario happening not in a video game, but in a research lab.  Instead of trying to read backwards text from fictional ancient ruins, imagine that your data came in backwards or garbled in some formulaic way.  Oh, and you have approximately 100,000+ data points. How would you resolve this situation without the ability to program?  Sure, your department may have a go-to person for programming stuff, or you may have access to an army of research assistants who could manually go through the data and make the corrections.  But are those optimal solutions?

Exposure to programming concepts opens up access to that third reaction.  Instead of visualizing a room full of undergrads trying to manually fix the errors, you can say to yourself “I’ll google how to do that in (whatever language you may be familiar with).”

And this is the core of my argument.  We are no longer living in an era where you have to be a professional programmer to do basic programming tasks.  Without having the exposure to what is possible to do with computers, people will be limited in their options for solutions.  My hope for students of the humanities is to give them the ability to recognize when programmatic tools should be used, and the skills to find and implement whatever solutions they may need.

Many other bloggers out there have explored this topic, and I feel like the best general answer is “Why do you want to limit yourself?”  Particularly because the entry into basic understanding an be completed with <10 hours of exposure.