title | tags | authors | affiliations | date | bibliography | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FDS Python: Fundamentals and Data Structures with Python |
|
|
|
4 Februrary 2019 |
paper.bib |
It is well acknowledged that programming is a challenging endeavor [@Robins2003]. As such, considerations of the suitability of programming languages, such as Python, for teaching and learning programming have received growing interest [@Mannila2006]. In fact, among programming languages, Python is the most popular language for introductory computer science courses among US universities [@Guo2014].
Although Python provides a way to quickly write and test code and concepts in the interactive ">>>, chevron prompt" mode, the codes and results vanish and cannot be easily reproduced once the session is terminated. Moreover, writing multiple lines of codes or functions is not intuitive because of the language's strict syntactic rules on enforcing whitespaces to represent block of codes. Jupyter notebooks can easily overcome these drawbacks as one can quickly and interactively write single to many lines of codes and at the same time keep track of the output results as part of the notes. Furthermore, students can refer to what they have done and manage all their notes in one convenient location.
These notebooks are designed to accommodate beginners as well as experienced programmers who are interested in teaching and learning to code in Python. More importantly, the interactive nature of these notebooks force students to code to learn and not learn to code. Pythontutor [@Guo2013] is used to help students visualize and understand the concepts better by working on problems from open.kattis.com [@Basnet2018] where appropriate.
Textbooks, powerpoint slides, notes and code snippets are commonly used for delivering course content in programming courses; however, "a majority of university students do not regularly read course textbooks" [@Rockinson-Szapkiw2013]. Moreover, teaching and learning programming using notes and slides alone can be pretty dry and less effective. Even if this technique is supplemented by live interactive coding session, it may seem disorganized and harder to follow, especially for novice programmers who are learning everything -- concepts, definitions, syntax and coding -- at the same timeTo ameliorate this situation, educators have suggested the use of computational notebooks, such as the Jupyter computational notebook project, for offering both new ways of instruction and making interactive curricula [@OHara2015;@Shen2014].
Most successful commercial textbooks provide a lot of pre-built teaching materials (powerpoint slides, notes, question bank and answers, source codes, etc.) needed for an instructor to quickly adopt their text and teach the courses. On the other hand, most open-source textbooks mostly lack these required teaching aids making it harder for instructors to adopt them into their curriculum.
FDS Python is an open-source set of Jupyter notebooks that covers fundamental concepts of programming and data structures using Python. These interactive notebooks are based on the open-source textbook: Think Python: How to Think Like a Computer Scientist [@Wentworth2012]. The notebooks consist of a summary of the theory/lecture notes and syntax of concepts (similar to powerpoints) along with interactive code examples compounded with code visualization and interesting problems to help engage beginner as well as advanced programmers. Besides most of the concepts covered in the textbook, these notebooks also contain several new, important and advanced concepts on automated testing, code optimization and memoization, Python language intricacies such as built-in libraries and functions, list and dictionary comprehension, lambda functions, etc.
The notebooks, however, are not intended to be complete learning modules or entirely replace the textbook but rather much needed teaching materials for new instructors to aid in adopting the open-source textbook to especially teach Python using a practical, follow-along live coding approach. These notebooks are being used in university courses (Beginning and Advanced Programming courses) since 2017 at Colorado Mesa University. Depending on the need and the audience skill level, instructors in introductory programming course can spend more time demonstrating the concepts with many examples supplementing them with visualization; in contrast, in advanced or intensive boot camp like courses, instructors can skip the theoretical portions and instead focus on the syntax and spend more time on advanced topics and concepts with live examples.