adventures in learning python...adventures in learning python acknowledgments this poster could not...

1
Elizabeth Wickes ([email protected]) Graduate School of Library and Information Science, University of Illinois at Urbana-Champaign Adventures in Learning Python Acknowledgments This poster could not have been possible without the support of numerous Py-CU members, including my fellow organizers: Liz Surbeck and Nadia Karlinsky. Additional thanks to GSLIS for travel funds. The Gap Once students have gained a basic skills, how do they gain mastery without a formal educational track? What is Py-CU? Originally established in February 2013, Py-CU is the Champaign-Urbana Python User Group and is a subgroup of the Urbana Makerspace. Py-CU holds weekly hack nights, monthly group meetings, semi- regular workshops, and has an active Facebook group. Introduction Programming and computer science education have many barriers to full inclusion of students and researchers who could benefit from acquisition of those skills. The desire to learn is often seen as the most significant barrier for entry into computer science education, and many programs and initiatives are designed to inspire prospective students into entering STEM education. Inspiration is not the only issue at play here. In many cases these students will enter into a formal and structured STEM-related educational program, but not every researcher who could benefit from computer science education will be in a computer science degree program. Many research domains are using increasingly data- driven methods, and these students and researchers will need programming skills to be competitive. Additionally, students may lack the funds to enter into college coursework or are working professionals trying to gain new and marketable job skills. These are important populations and should not be ignored. The state of programming education brings many disadvantages for these students: " a lack of educational materials targeting students outside of math and computer science " lack of support for students to move between beginner and experienced skill levels " focus on the usage of mathematical algorithms to convey concepts, even in non-programmer materials " few centralized hubs for resource discovery Inclusion doesn’t stop at the point of inspiration. Once students are inspired to learn, how can we facilitate the goal of mastery when they are outside a formal education or computer science program? While many of these problems are present no matter the language, the unique advantages that Python offers as a first or primary language means that it is a valuable choice for these populations: " readable " approachable " low cost to set up a development environment " availability of free or low cost of learning materials " a supportive and robust community " domain specific tools related to data and linguistic analysis There are pockets of progressive teaching methods and resources, but more needs to be done to support these alternative student populations. Proposed Community Objectives " Discovery of educational materials and resources for Python involves a certain amount of “dumb luck” on the part of the students. In my own experience, simple conversations with community members have yielded significantly better results than numerous web searches. In listening to Py-CU members and Hack Night participants, many have reported struggling to find items until someone directed them to just the thing they needed. This is likely due to two issues: 1) inexperience preventing searchers from using efficient search terms, and 2) noisy search results. Students participating in a formal course are given materials to use from professors, but independent students must rely on word of mouth or dumb luck to discover resources. To combat this problem, I have been gathering my own list of useful learning resources. " Python has grown into a valuable tool for research in communities without computing traditions. These current and future researchers need learning resources and support from the Python community. Materials targeting traditional CS students do not always map well to the learning needs of those in humanities and social science domains. The Python community should strive to collaborate with these research communities to understand their unique needs. " Targeted domain specific tools are greatly needed by these new research communities. Research environments are becoming more and more data centric and grant funding continues to decrease. Research programmers are usually included in large scale projects needing software or programming work which are outside the CS domain. With smaller grant funds to draw from, researchers either need to be their own research programmer or face abandoning their projects. While there is no replacement for an experienced research programmer, developing self sufficient programming skills can make or break a low funded project. Some domain researchers are creating these resources, but communities are dependent on researchers with the requisite programming skills and interest in creating them. The Programming Historian 4 is an excellent example of a domain targeted tutorial. " When creating introductory materials, be clear about the definition of “beginner” in your work. Is your work for" someone new to programming? " an experienced programmer new to Python? Do you expect your reader to have" a high level of math exposure? " an interest in mathematical programming? " access to specialized programs? " significant computing experience? " knowledge or expertise in another programming language? " Be active in your community! The Python community offers a unique experience that no longer requires a formal, structured program for beginners to get started. These students can now get set up and started within 30 minutes of first inspiration and without an expert. This still depends on community support: " create and maintain code resources for targeted domain tools " participate in online community forums such as /r/python and /r/pythonlearn and twitter " create learning materials, such as a blog or an ebook, for beginners to discover the tools you use every day " volunteer with your local user group to give presentations and run workshops " Don’t have a local user group? Start one! Resources Every Student Should Know " PythonLearn.com is a full course and offers YouTube lectures, a textbook (Python for Informatics), and online exercises. The lessons focus on data and text processing rather than mathematical algorithms. The videos are valuable as a secondary resource for students stuck on a particular topic. " Python In Your Pocket is a simple handy reference for structures, methods, idioms, and examples. Bonus blank pages allow you to add your own project specific notes. " Python Cookbook in an incredibly valuable resource for students, particularly those learning Python by working on a project. I would even argue that many classes could benefit from having this as a required textbook. " Learning Python is a massive book and valuable for students wanting to advance their basic skills, but not ideal for true beginners to start with. " Codecademy’s Python track offers important practice and is ideally used in conjunction with another resource, such as Python for Informatics. Unfortunately, the quality of the directions and lessons varies and could use some curation attention by Codecademy editors. " CodingBat Python supports coding practice on semi- arbitrary algorithms. Best suited for students to continue practicing after they have completed Codecademy. " The Programming Historian contains domain specific lessons for humanists starting up with text and natural language processing. " Directory of Python Learning Resources is a growing list of resources and tools I have been compiling and reviewing. The directory is designed to tackle the “dumb- luck” problem of resource discovery, and offers reviews of materials so they can make informed decisions about material selection. http://elizabethwickes.com/pythonresources References [1] http://py-curious.tumblr.com/, [2] http://cucfablab.org/, [3] http://pythonlearn.com/, [5] http://programminghistorian.org/ Py-CU’s Introduction to Programming Workshop In an effort to tackle educational access inequalities, Py-CU designed and ran a experimental six-session Introduction to Programming with Python workshop. The two-hour sessions took place on Monday nights between September 16 and October 21, 2013. Lab space for the class was generously donated by the Champaign-Urbana Community FabLab 2 . Participants were charged $20 for the entire workshop, with all funds going to support Py-CU. We specifically recruited participants from the Champaign-Urbana community either outside of a higher education program or part of a degree program lacking formal programming education opportunities. 15 participants were registered with 11-13 students attending each session. 11 students completed an intake survey to measure interests and background. Reporting participants were roughly even between males (5) and females (6). The most common majors represented were library science (5) and linguistics (3). Reported reasons for taking the class were a mix of: interest in pursuing a new career developing marketable job skills desire or need to use programming for a thesis or other academic research projects reduction of fear before taking a formal programming course inability to access formal programming education due to financial or educational restrictions While collected informally, these responses indicated that we successfully reached our target population. However, the participants reporting that they wanted to take the workshop as preparation for a programming class was an unexpected result. Participants falling into this category were mostly from UIUC’s library science college (GSLIS) and were particularly concerned about taking a programming course offered by GSLIS. The perspective Py-CU took toward the content of the class was not to replace an entire introductory class, but to provide students with a jump start for self study. We based our materials (with permission) on PythonLearn 3 , a Python MOOC developed and maintained by Dr. Charles Severance of the School of Information at the University of Michigan. Topics focused on: setting up development environments data types and associated methods foundational algorithms Classroom interaction was based on: short lectures turn-based code reading and analysis paired coding projects domain specific lightning talks Many members of Py-CU attended each session to assist in students with individual attention. Most sessions maintained a 2:1 ratio of students to teachers. Course presentations and materials were created in Google Drive and were publically published on a dedicated Tumblr 1 shared with the students. Spring break hack night in Makerspace Initial Inspiration Resource Discovery Basic Skills Mastery

Upload: others

Post on 22-Jun-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adventures in Learning Python...Adventures in Learning Python Acknowledgments This poster could not have been possible without the support of numerous Py-CU members, including my fellow

Elizabeth Wickes ([email protected]) Graduate School of Library and Information Science, University of Illinois at Urbana-Champaign

Adventures in Learning Python

Acknowledgments This poster could not have been possible without the support of numerous Py-CU members, including my fellow organizers: Liz Surbeck and Nadia Karlinsky. Additional thanks to GSLIS for travel funds.

The Gap Once students have gained a basic skills, how do they gain mastery without a formal educational track?

What is Py-CU? Originally established in February 2013, Py-CU is the Champaign-Urbana Python User Group and is a subgroup of the Urbana Makerspace. Py-CU holds weekly hack nights, monthly group meetings, semi-regular workshops, and has an active Facebook group.

Introduction Programming and computer science education have many barriers to full inclusion of students and researchers who could benefit from acquisition of those skills. The desire to learn is often seen as the most significant barrier for entry into computer science education, and many programs and initiatives are designed to inspire prospective students into entering STEM education. Inspiration is not the only issue at play here. In many cases these students will enter into a formal and structured STEM-related educational program, but not every researcher who could benefit from computer science education will be in a computer science degree program. Many research domains are using increasingly data-driven methods, and these students and researchers will need programming skills to be competitive. Additionally, students may lack the funds to enter into college coursework or are working professionals trying to gain new and marketable job skills. These are important populations and should not be ignored. The state of programming education brings many disadvantages for these students:�� " a lack of educational materials targeting students outside of math and computer science " lack of support for students to move between beginner and experienced skill levels " focus on the usage of mathematical algorithms to convey concepts, even in non-programmer materials " few centralized hubs for resource discovery Inclusion doesn’t stop at the point of inspiration. Once students are inspired to learn, how can we facilitate the goal of mastery when they are outside a formal education or computer science program? While many of these problems are present no matter the language, the unique advantages that Python offers as a first or primary language means that it is a valuable choice for these populations: " readable " approachable " low cost to set up a development environment " availability of free or low cost of learning materials " a supportive and robust community " domain specific tools related to data and linguistic analysis There are pockets of progressive teaching methods and resources, but more needs to be done to support these alternative student populations.

Proposed Community Objectives " Discovery of educational materials and resources for Python involves a certain amount of “dumb luck” on the part of the students. In my own experience, simple conversations with community members have yielded significantly better results than numerous web searches. In listening to Py-CU members and Hack Night participants, many have reported struggling to find items until someone directed them to just the thing they needed. This is likely due to two issues: 1) inexperience preventing searchers from using efficient search terms, and 2) noisy search results. Students participating in a formal course are given materials to use from professors, but independent students must rely on word of mouth or dumb luck to discover resources. To combat this problem, I have been gathering my own list of useful learning resources. " Python has grown into a valuable tool for research in communities without computing traditions. These current and future researchers need learning resources and support from the Python community. Materials targeting traditional CS students do not always map well to the learning needs of those in humanities and social science domains. The Python community should strive to collaborate with these research communities to understand their unique needs. " Targeted domain specific tools are greatly needed by these new research communities. Research environments are becoming more and more data centric and grant funding continues to decrease. Research programmers are usually included in large scale projects needing software or programming work which are outside the CS domain. With smaller grant funds to draw from, researchers either need to be their own research programmer or face abandoning their projects. While there is no replacement for an experienced research programmer, developing self sufficient programming skills can make or break a low funded project. Some domain researchers are creating these resources, but communities are dependent on researchers with the requisite programming skills and interest in creating them. The Programming Historian4 is an excellent example of a domain targeted tutorial. " When creating introductory materials, be clear about the definition of “beginner” in your work. Is your work for…

" someone new to programming? " an experienced programmer new to Python? Do you expect your reader to have…

" a high level of math exposure? " an interest in mathematical programming? " access to specialized programs? " significant computing experience? " knowledge or expertise in another programming language? " Be active in your community! The Python community offers a unique experience that no longer requires a formal, structured program for beginners to get started. These students can now get set up and started within 30 minutes of first inspiration and without an expert. This still depends on community support: " create and maintain code resources for targeted domain tools " participate in online community forums such as /r/python and /r/pythonlearn and twitter " create learning materials, such as a blog or an ebook, for beginners to discover the tools you use every day " volunteer with your local user group to give presentations and run workshops " Don’t have a local user group? Start one!

Resources Every Student Should Know " PythonLearn.com is a full course and offers YouTube lectures, a textbook (Python for Informatics), and online exercises. The lessons focus on data and text processing rather than mathematical algorithms. The videos are valuable as a secondary resource for students stuck on a particular topic. " Python In Your Pocket is a simple handy reference for structures, methods, idioms, and examples. Bonus blank pages allow you to add your own project specific notes. " Python Cookbook in an incredibly valuable resource for students, particularly those learning Python by working on a project. I would even argue that many classes could benefit from having this as a required textbook. " Learning Python is a massive book and valuable for students wanting to advance their basic skills, but not ideal for true beginners to start with. " Codecademy’s Python track offers important practice and is ideally used in conjunction with another resource, such as Python for Informatics. Unfortunately, the quality of the directions and lessons varies and could use some curation attention by Codecademy editors. " CodingBat Python supports coding practice on semi-arbitrary algorithms. Best suited for students to continue practicing after they have completed Codecademy. " The Programming Historian contains domain specific lessons for humanists starting up with text and natural language processing. " Directory of Python Learning Resources is a growing list of resources and tools I have been compiling and reviewing. The directory is designed to tackle the “dumb-luck” problem of resource discovery, and offers reviews of materials so they can make informed decisions about material selection. http://elizabethwickes.com/pythonresources

References

[1] http://py-curious.tumblr.com/, [2] http://cucfablab.org/, [3] http://pythonlearn.com/, [5] http://programminghistorian.org/

Py-CU’s Introduction to Programming Workshop In an effort to tackle educational access inequalities, Py-CU designed and ran a experimental six-session Introduction to Programming with Python workshop. The two-hour sessions took place on Monday nights between September 16 and October 21, 2013. Lab space for the class was generously donated by the Champaign-Urbana Community FabLab2. Participants were charged $20 for the entire workshop, with all funds going to support Py-CU. We specifically recruited participants from the Champaign-Urbana community either outside of a higher education program or part of a degree program lacking formal programming education opportunities. 15 participants were registered with 11-13 students attending each session. 11 students completed an intake survey to measure interests and background. Reporting participants were roughly even between males (5) and females (6). The most common majors represented were library science (5) and linguistics (3). Reported reasons for taking the class were a mix of: •  interest in pursuing a new career •  developing marketable job skills •  desire or need to use programming for a thesis or

other academic research projects •  reduction of fear before taking a formal programming

course •  inability to access formal programming education due

to financial or educational restrictions While collected informally, these responses indicated that we successfully reached our target population. However, the participants reporting that they wanted to take the workshop as preparation for a programming class was an unexpected result. Participants falling into this category were mostly from UIUC’s library science college (GSLIS) and were particularly concerned about taking a programming course offered by GSLIS. The perspective Py-CU took toward the content of the class was not to replace an entire introductory class, but to provide students with a jump start for self study. We based our materials (with permission) on PythonLearn3, a Python MOOC developed and maintained by Dr. Charles Severance of the School of Information at the University of Michigan. Topics focused on: •  setting up development environments •  data types and associated methods •  foundational algorithms

Classroom interaction was based on: •  short lectures •  turn-based code reading and analysis •  paired coding projects •  domain specific lightning talks Many members of Py-CU attended each session to assist in students with individual attention. Most sessions maintained a 2:1 ratio of students to teachers.

Course presentations and materials were created in Google Drive and were publically published on a dedicated Tumblr1 shared with the students. Spring break hack night in Makerspace

Initial Inspiration

Resource Discovery

Basic Skills

Mastery