Embedding skills for a new profession by teaching programming in an immersive and authentic environment
Creators: name: Hooley, Fran
name: Casuey-Freeman, Pete
Publisher: name: F1000 Research Limited
Year: 2020

description: This poster summaries the teaching methods used for a unit introducing programming which was launched in 2019 as part of a new PG Cert in Clinical Bioinformatics. It highlights five different key areas that helped make the course a success, these were: <b>About our audience - </b>Focusing on our students needs Building an <b>authentic and immersive </b>learning environment <b>Teaching methods - </b>Designing using robust pedagogical models Choosing <b>tools </b>and platforms carefully Aligning the course with <b>Clinical Bioinformatics in practice</b> <b>About our Audience</b><br>The new profession in the title refers to Clinical Bioinformatics which brings together computer science and genomics in clinical practice. The skills needed to become a clinical bioinformatician have been in short supply in the NHS with training and education filling the gap with creative new approaches. Those new to the field come from many different backgrounds; be it from the health sector with little or no programming experience to those with IT knowledge but with limited clinical experience. Therefore the course needed to account for this variety and potential different gaps in knowledge. The aim of the course was to teach the fundamentals of genomics medicine including basic coding in Python to a diverse cohort of distance learners, whilst ensuring that students were fully supported throughout. We provided students with access to real-world learning experiences reflecting the challenges of clinical bioinformatics. We also created high quality reusable materials, adaptable to meet the needs of different audiences.<br> <br><b>Authentic and Immersive Approaches</b><br>The aim of the Introduction to Programming unit was to simulate a real-world experience by building a situated learning environment, within which students could learn current best practices for programming in clinical bioinformatics, in a safe learning environment providing space to fail and learn from their mistakes both individually and as a team. Being immersed in this environment facilitated the co-development of code and team-based discussion and problem solving. Embedding social constructivist learning methods (Laurillard, 2012) within the course activities encouraged the sharing of knowledge and group-based support. Students were able to support each other’s learning, yielding efficiencies in facilitation and were taught principles of self-education to advance their programming and research skills. This self-regulated learning ethos ensured the students were well positioned to progress as programmers through interacting with peers and sourcing code from community platforms such as Stack Overflow. Experienced facilitators were available asynchronously on Slack throughout the course as well as synchronously at set intervals. This enabled agile and adaptive support for the entire cohort, including the educators.<br> <br><b>Teaching Methods and Tools</b><br>We prioritised pedagogy over technology in the learning design to ensure learning took precedence over the ability to use technology. It also focused attention to the needs of diverse cohorts needs now and in the future. The students were taught to use Anaconda to install Python3 onto their own machines and also installed git. Windows users also installed and initialised git bash so that all students could be taught in a Linux environment. The advantages of this approach over a virtual environment were: students own machines were correctly configured allowing them to continue programming after the unit ended; and educators were kept up-to-date with any platform-specific difficulties the students faced during configuration. Course material was delivered in Jupyter Notebooks which were interactive online workbooks that included coding exercises within the teaching materials. The notebooks built learning incrementally, with exercises living code examples in short easily-accessible steps, alongside practice-based tasks, all of which were well-suited to introducing the basic principles of Python programming. After covering the basics, the notebooks introduced the students to coding activities commonly used to collate genomics data. We then used the notebooks to introduce team-based Sprint scenarios requiring the students to prototype code to meet real-world needs of NHS scientists and co-develop software that is used in clinical practice, for example VariantValidator (Freeman et al 2017).<br><br>We constructed the learning by beginning with key tools such as GitHub and using Git to provide the version control workflow during the course. GitHub also enabled the course materials to be downloaded and taken away post-course, including all collaboratively developed code. We introduced real-world development processes and methods such as Agile, an iterative process used to develop software, in order to organise the team into practice-based problems in the form of Sprints (see figure - Flow of sprint process) . This entirely agile delivery strategy enabled us to engage the students in a realistic software development process with the flexibility to change the requirements of each Sprint such that the students could be simultaneously taught domain-specific best practices, <i>e.g.</i> how to source reliable and robust genomic data, the difficulties associated with working with APIs, and meeting the needs of an end user by iterative code development and user interaction.<br> <br>General discussions, team strategy and product owner interaction (where an educator would act as the customer for the Sprint task) were delivered through Slack. Slack was also used for group work and educational support, such as solving initial configuration issues, pastoral support and providing personal feedback on activities. The students demonstrated great team-working skills within groups of ~5 members which lessened feelings of isolation commonly associated with distance learning (Ally, 2002). This peer-supported learning involved over 600 messages and sharing 123 resources and files in a cohort of 10 students. Collaboration on tasks and helping less-experienced cohort members were key to enabling students to develop a community of practice, which is essential to sharing best practice and reuse of code within clinical bioinformatics (Davies et al, 2019).<br> <br><b>Clinical Bioinformatics in Practice</b><br>The students developed tools that will ultimately be refined and put into clinical practice, for example, in the final Sprint they built resources from requirements gathered locally in their own practice as well as additional prototype resources to support the VariantValidator software. The challenge was to provide students with enough support to help deal with any issues they had with the tools and techniques being taught but enough autonomy to develop problem-solving skills. This balancing act required significant resource both at the design stage with additional materials for different learner requirements and during the delivery stage, with two facilitators providing support via Slack. <br> <br><b>References</b><br>Ally, M., 2004. Foundations of educational theory for online learning. <i>Theory and practice of online learning</i>, <i>2</i>, pp.15-44.<br>Davies, A.C., Harris, D., Banks-Gatenby, A. and Brass, A., 2019. Problem-based learning in clinical bioinformatics education: Does it help to create communities of practice?. <i>PLoS computational biology</i>, <i>15</i>(6).<br>Freeman, P.J., Hart, R.K., Gretton, L.J., Brookes, A.J. and Dalgleish, R., 2018. VariantValidator: Accurate validation, mapping, and formatting of sequence variation descriptions. <i>Human mutation</i>, <i>39</i>(1), pp.61-68.<br>Laurillard, D., 2013. Teaching as a design science: Building pedagogical patterns for learning and technology. Routledge.