Author Archives: Madiha Zahrah Choksi

Python Open Labs S.2018: How it all went down

Lab Structure and Technicalities:

This semester I returned to running the Python Open Labs with another student intern and upon started, we had some discussions about our ideas for structuring the labs over the next few months. We decided to stay consistent with the formatting of the lab: started the semester with the starter kit (Python fundamentals), and continued to build on those fundamentals every week (see weekly blogs here).

The first change we implemented was switching to Jupyter notebooks as opposed to running the labs on the console itself. For me, this was quite a challenge! I had never used Jupyter notebooks, it seemed like a strange and abstract way to code, one that was definitely built with user experience in mind and something that was unfamiliar to me on all fronts. I spent a few weeks playing around with its functionality – the headings and commenting features as well as common errors that can happen (e.g. running every cell to ensure the code works). Once I got the hang of it though, everything changed! I have tasted and enjoyed the Jupyter notebook kool-aid and there is no going back.

One of the best features of the Jupyter notebooks is the UX of its layout. The simplicity of its layout makes the code that much easier to parse out and build upon. Organizing the code, or in our case, entire lesson in the Jupyter notebooks meant that we could share the lessons with the class at the end. Prior to the lesson, we would come up with the content and create the notebook in full. Then, we would go back and recreate another lesson without the completed cell blocks so that we could use the prompts and live code. At the end of the lesson, we shared the lessons in full with the class to ensure that students could spend time going over and reviewing the examples and problems with the full code (i.e. all answers) readily available.

That being said, we also changed how we shared the lessons with the students. This semester, we maintained a google folder with all the Jupyter notebook lessons and .pdfs and shared it with the students that came. A welcome change considering the amount of paper it took last semester to print and share each lesson! We also received great feedback on the organization and sharing of the Jupyter lessons so that’s definitely something we will keep in mind and hope to continue next semester.

Students:

This semester, the range of programs represented by the students who attended the labs were incredibly diverse. Students from the School of Professional Studies and the School of International and Public affairs were the most consistent, however we did encounter students from Journalism, Economics, and Latin American Studies as well. Although it’s a challenge to encourage students to attend on a regular basis, we were able to see some faces week after week, and sharing the lessons on an accessible drive folder ensured that those who were not able to make it in person but interested in continuing to expand their coding horizons could keep up.

Most enjoyable Lab:

The lab we held on python classes in early April was my favorite lab – partly because I taught the entire session on my own, but mostly because I structured the lesson in a way that focused on fewer and more intense practice problems. Instead of going through quicker and shorter sample problems I thought I would try create problem sets that incorporated functions as well to keep things interesting and to offer students a challenge. The class was well received and you can find the lesson on the DSSC blog if you want to check it out!

Ideas for future labs:

To conclude this post, I will underline two suggestions for future lab lessons:

  1. Plan out lessons before the labs

It would be great, in my opinion, to post a description of each lab before it happens to outline the structure of the lab and the concepts covered. This was the route we took for the R open labs towards the end of the semester and it worked really great – I am excited to try it out for Python as well!

  1. Continue to market to a diverse group of students

Before commencing in the fall, I would like to spend some time strategizing on how to market to different departments. The open labs are such a great way to learn a coding language – they are free (!!!), but more importantly the communal vibe is optimistic and welcoming and a great space to learn.

I have learned so much this year in preparing and leading labs and now that they have wound down for the summer, I feel motivated to continue to market the space and engage students across all departments.

>>> myPythonOpenLab = (“A Holistic Approach to Python”)

Overview of the Fall 2017 Python Open Labs

Python Open Labs reconvened in September with three new DSSC interns. Unlike my colleagues studying Computer Science and Computer Engineering, I am a Human Rights Masters Student at SIPA/ISHR. While we come from different backgrounds and levels of expertise in Python, this semester has been both productive and challenging as we worked to leverage our abilities and share our experiences in Python in an accessible and comprehensible format.

Teaching Style:

Our approach to the workshops was simple: teaching in a lecture-style format week after week– a slow progression to build on concepts introduced the previous session. We collectively agreed that Python is a coding language that is relatively easy to grasp given that the correct tools are available. Moreover, given its relevance to a variety of academic disciplines and careers, we strove elicit a positive reception from students attending these sessions. The latter point was quickly reciprocated by learners, who responded really well to the linear format of the labs. We welcomed students from a wide variety of schools, including Teacher’s College, SIPA, Urban Planning, and Journalism.

There was always too much material (or too much ambition — call it what you may), and we tried our best to manage time, but often found that sessions ran over their allotted time and continued on to the following week. Our pseudo lectures always included practicing concepts (eg. classes, dictionaries, loops etc.) a few times over the course of the 2 hours to see how students interpreted and applied them. We felt inspired by the variety of solutions that students shared! It has been incredibly rewarding to watch students become more confident in their abilities to write code and utilize their fluency of Python applications to solve a given exercise or problem as we delved deeper into the language.

Challenges:

As a student disengaged from Python in my day to day studies, I found myself trying to push my fellow interns to simplify material and slow down! This has definitely been one of our most obvious challenges as moving through material too quickly has caused confusion and an influx of questions via email post-lab. It has been difficult at times to gauge exactly how students are responding to a specific concept such as list methods (a particularly complex lesson), as we receive little to no participatory feedback from students in the lab. I hope to challenge this next semester by pausing more often for feedback and for creating a space where active dialogue between interns and students allows us to work in sync.

Looking Beyond:

Between the three interns, we have had great fun amalgamating our skills, strengths, and weaknesses in and around the lab to optimize students’ experiences. In doing so, we have learned more than we imagined about our own approaches to the language as well as teaching habits. Next semester, though my teammates will be graduating and moving on from Columbia, I am very much looking forward to continuing the labs in the aforementioned format.

One of the ways I hope to further enhance the workshop format is to focus on team, or group learning by way of small projects or discussions to accompany the lessons. Collaborative learning not only promotes learning by bringing people of different skill levels together, it also replicates the type of environment (think career) in which one would participate as a professional with coding expertise.

I also hope replace the weekly handouts I would create for lessons with an electronic format. I hope to share lesson structures and practice problems in a blog post or a Jupyter notebook to alleviate the environmental impact of printing paper.

Already looking forward to the Spring semester! All questions, comments, and feedback are strongly encouraged.

Please visit the DSSC blog for Fall 2017 Python Open Lab weekly summaries and materials.