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.