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.