Module Hacking with UDL
As a programming language, Python has seen a surge in popularity in part driven by the rise of data science. In response to feedback from students and employers, a new ‘Python for Finance’ elective module was introduced onto BSc Finance in the first semester of 2020/21. While most students taking the class with be programming novices, the design of the module reflects some important and interlinked realities for professional developers.
The first reality is that the developer universe is vast (not to mention constantly changing and expanding), and one cannot reasonably expect to be thoroughly acquainted with every corner of it. One should, however, be sufficiently equipped and confident to explore this universe independently. For good developers, this means being comfortable with a ‘just in time’ approach to learning, by reviewing documentation and tutorials to acquire new knowledge as and when required.
The second reality for developers is that most generic problems have already been encountered and addressed by the developer community. Independently solving a problem for which a solution already exists may be virtuous, but it is far from efficient. For good developers, this means making use of established packages and being efficient in searching for and evaluating potential solutions.
The third reality is that developers make continuous use of the online documentation, learning resources, and developer forums available to them. Authentic practice must recognise and reflect these realities.
In designing the module, attempts were made to apply UDL principles to allow students to engage with the module and related content in different ways.
Lecture notes are created using Jupyter Notebooks. While presented as reveal.js slides, students have access to the original notebooks allowing them to annotate, edit, and run the code used to demonstrate core principles. Asynchronous MS Stream video demonstrations (recorded and annotated using Camtasia) allow students to watch code being developed at any convenient time and at their own pace. These videos introduce the lab classes which again use Jupyter Notebooks to review worked examples, before attempting exercises that require use of online resources to acquire new knowledge and skills. Students can also choose to avail of module companion notes, textbooks, ebooks, package documentation, and a host of online (video) tutorials and exercises.
Canvas is used to promote student appreciation of the value of the developer community. A ‘Student Overflow’ discussion forum (named after Stack Overflow, the developer go-to resource) encourages students to post questions and answers, share useful resources, and set/solve coding challenges.
Fundamental python coding ability is assessed using two open-book practical exams. This means that students have access to the internet and are encouraged to utilise module resources, online documentation, and trouble-shooting developer forums. Indeed, stretch questions require students to use documentation to solve problems using previously unseen functions and packages.
Student motivations for enrolling on the module often reference filling a gap in their skill set or observing/using coding while on placement. To foster continued motivation, the design of the final individual project incorporates a number of features.
The first is to incorporate two project pathways that make an association between the project and the student’s career ambitions and anticipated future use cases. Route A is described as being for those who see themselves as ‘data scientists’, using python as a tool to analyse data. Route B is described as being for those who see themselves as ‘developers’, using python as a tool to implement generalised solutions to specific problems.
The second is to provide wide scope to self-select the data or problem that will form the basis of their project. This allows students flexibility to pursue something of personal interest to them and harness their intrinsic motivation.
The third, is in the packaging of the assessment as a ‘developer showcase’. Students are asked to use the project to demonstrate what they can do with their python skills, rather than being required to complete a fixed set of tasks. Students are therefore free to focus their efforts on aspects of python that they find more interesting or those that they wish to develop further. Crucially, students are made aware that to perform well, they must demonstrate some degree of independent learning.
Various other elements of the project are designed to ensure reflection on the part of the student of their learning journey, use of resources, and management of time.
While coding will never be “everyone’s cup of tea”, feedback on the module has been hugely encouraging. Indeed, it has been wonderful to see students rise to the challenge of extending their own coding repertoire, their personal reflections, and their sense of achievement. As module coordinator, my own sense of achievement is perhaps best encapsulated in the feedback from one student: “I feel I have been taught to fish.”
Queen’s Management School