Author Archives: Kunal Baweja

Python Open Labs – Spring 2017

Hi

This post details my experience as a Digital Science Center Teaching Intern for the Spring ‘17 semester, wherein I hosted the weekly Python Open Labs to teach programming with python. This internship is my first full fledged teaching experience where I got complete freedom to choose the topics that I introduced during Python Open Labs and the way I conducted  weekly sessions and a couple of workshops on python through the semester. My internship this semester was in continuation of the year long Digital Science Centers Teaching Internship that I secured in Fall 2016. A detailed post about my last semester’s experience can be found on this link: Muggles Speak English. Pythonistas Speak Python

This semester I continued introducing new topics in Python, building on top of the basics of programming that were covered in the open labs held in Fall 2016 semester. The broad range of topics included object oriented programming, web scraping, file and data handling etc which included applying the basic concepts of programming from past sessions in a cohesive manner to solve relatively complex problems. In particular, I had two motives for the sessions this semester: 1) To be as inclusive as possible and hence I tried to keep the open labs generic, catering to the needs of attendees from various Columbia Schools such as Law, Journalism, Medical, SIPA etc rather than restricting ourselves to a particular domain like data science or scientific programming. 2) To introduce Python as a helping tool that would make the day to research, academic and professional tasks easier for the attendees, a majority of whom had little or no prior programming experience. I ensured that everyone who attended these labs had something to take away that would facilitate their encounters with programming.

In the first half of this semester I included some advanced topics in python such as object oriented programming, file I/O and some data structures. This was in continuation of the basics of programming with python that had already been covered during the open labs sessions from previous semester. At this point of open labs the main challenge I faced was to ensure that people attending the labs were able to grasp the concepts very well and tie the multiple concepts together as we moved towards more complex applications and problem solving. This required extended practice problems and discussions during the two hour long weekly open labs. This approach towards teaching meant less number of slides and more examples to give a better perspective to everyone, which also helped me get better at explaining concepts to others and be involved in detailed discussions.

The second half of semester was concentrated towards covering on-demand topics from the people who attended Python Open Labs. As a result we got to cover a good number of python libraries and topics like BeautifulSoup for web scraping, csv module for csv file handling, lxml parser for XML parsing and the requests module for handling web requests. These are some of the topics that I had initially thought to be too complex to be introduced in the open labs, but it turned out to be a pleasant experience that many of the attendees specifically asked for these topics which related with their academic and professional works and they were able to better relate with these topics combined together with the basics of programming. It ensured that they were able to practically apply the programming concepts that were covered throughout the open labs to their advantage and also gave me an opportunity to learn many new things about Python as a programming language.

To conclude this post I must mention that the past one year as a teaching intern with the Digital Science Center, Columbia University Libraries was a wonderful enriching experience that gave me a good insight into teaching a self-designed open course, an opportunity to interact with many people from various backgrounds and to brush up my skills on python. I am thankful to Columbia Libraries for providing this great opportunity for students.

Muggles Speak English. Pythonistas Speak Python.

Python is one of the fastest growing programming languages, owing to its simplicity of syntax, varied applications ranging from simplistic tasks such as Hello World program to crunching huge amounts of data for multi-million dollar companies or numerous research and academic works. As more and more fields integrate computer science into their regular work flow, the importance and need of programming knowledge is set to grow, especially Python.

In Fall 2016 semester, I had an awesome opportunity to host weekly open labs for sharing my knowledge of Python programming language with everyone from Columbia University, under the Digital Centers Internship Program with Columbia Libraries. This was quite a humbling experience for me as a teaching intern where I enjoyed the freedom and challenge to create my own course content, to closely interact with lots of people and introduce them to the niches of programming through Python.

As a Digital Center Teaching Intern, the most prominent takeaway was my first teaching experience, as I learned along the way how to grasp things myself in a crystal clear way and explain them simplistically to others. Initially I designed the open labs based on the Python course taught by Dr. Charles Severance on Coursera and gradually learned how to create my own new content to explain the concepts in a better way. Throughout the semester long internship I concentrated on introducing the basic concepts of programming and computation challenges through Python, not limiting the scope to just Python.

During this teaching internship in Fall 2016, the biggest challenge was to make teaching inclusive for all the attendees, most of whom had no or very little programming experience. The attendees of Python Open Labs were from various schools within Columbia, including Journalism, CUMC, SIPA and Columbia Law which posed a challenge to keep the content simple and basic yet informative enough to enable to take on any kind of programming task that might come along their way. Hence, I concentrated on introducing basics like conditional statements, string processing, file handling, loop statements, breaking solutions into small individual tasks, defining functions and organising code into packages and modules. This is where I enjoyed the most as I got to choose and design my own course as a first time teaching experience, right from scratch while trying to understand the same task or problem from the various different perspectives of attendees in open labs.

Python Open Labs this semester also included an experimental component of introducing a powerful and popular open source library to participants in each session, such as csv library for reading comma separated large sized files for data processing, however given the inexperience with prior programming for most of the audience of open labs, this turned out to be a difficult task, making me more aware of the knowledge gap that exists for people who want to use programming but are unable to do so due to lack of basics which most of the open sourced libraries assume at the user’s end. Therefore, I put this on hold for the rest of the semester and continued with the basics of programming through Python.

As the semester comes to close, so far we have had 10 open lab sessions in this semester wherein I covered programming topics ranging from simple tasks like printing or simple arithmetic to more complex ones like processing large input data from text files. In the next semester I will be continuing with the teaching internship and plan to once again try to introduce the open source libraries for various tasks such as data processing, analysis and a simplistic web development framework etc which truly unleash the power of Python as a modern programming language which is capable of accomplishing maximum work in minimal effort.