The Pros and Cons of Autograders in Programming Courses

Programming courses typically require assignments where students write code to fulfill specific specifications. In such courses, an autograder serves as an automated tool designed to assess student code submissions by conducting input and output tests. Autograders have been in existence since the inception of computer science as a field of study (Hollingsworth, 1960). More recently, with the increase of massive online programming courses hosting up to 500 students, autograders have gained popularity as an efficient means for grading programming assignments (Keuning et al., 2018). They are instrumental in student engagement (Iosup & Epema, 2014) and pivotal in providing students with constructive feedback (Keuning et al., 2018). However, like any educational technology, autograders come with their own set of advantages and disadvantages that warrant consideration. This post aims to explore the significant pros and cons of employing autograders for assessments in programming courses.

Several renowned proprietary programming autograders are currently available, including CodePost, CodeGrade, Codio, and Mimir. Each tool offers a wealth of academic programming resources, including built-in problems, user-friendly interfaces, flexible question setting, and code review capabilities. However, these companies impose a substantial annual fee on institutions, ranging from $20,000 to $100,000 CAD, for a standard school comprising 1000 students. Additionally, each student is required to pay a monthly fee between $10 and $50 CAD.

In my view, such pricing is excessive (and greedy) and contradicts the principles outlined in the computer science code of ethics, particularly when the software is intended to advance software development. As a result, many post-secondary institutions opt to develop and maintain autograders in-house, tailoring them to their specific preferences. This approach allows faculty to propose new features and enhancements, and students can also contribute suggestions for improvement.

Advantages of Autograders

One of the most compelling incentives for using an autograder is the significant time savings it offers instructors compared to manual grading. Studies indicate that autograders can assess assignments at least three to four times faster than human graders (Ihantola et al., 2010; Keuning et al., 2018). This substantial reduction in grading workload allows instructors to allocate more time to essential teaching tasks such as lesson planning, curriculum development, and providing student support and feedback. The time savings can be particularly substantial in large classes.

Autograders also benefit students by providing quicker feedback on their work. This is especially valuable in introductory programming classes, where receiving prompt results on smaller assignments can significantly enhance student learning and motivation (Keuning et al., 2018). Unlike human grading, which can take days or weeks, autograders can assess submissions within seconds or minutes and instantly inform students whether their code has passed or failed the test cases. This expedited feedback allows students to validate and refine their work much more rapidly than traditional grading methods permit.

A prevalent concern with human graders is the inconsistency in grading from one assignment to another, from one student to another, or even within a single assignment. Factors such as fatigue, emotional states, and biases can impact the quality of human grading, potentially leading to unfairness or errors. Autograders, by contrast, eliminate this subjectivity by applying uniform standards and tests to all submissions, ensuring consistent and equitable grading across the entire class, and thereby enhancing student satisfaction (Hagerer, 2021).

In courses that employ autograders, students quickly learn the necessity of writing code that meets all the autograder test cases to secure maximum assignment credit. While the efficacy of test-driven development (TDD) as a software testing methodology is debatable, this workflow provides students with experience in the TDD framework. Here, students continually run tests on their code to rectify errors and attain the desired functionality (Wang et al., 2011). Essentially, autograders compel students to consider testing as an integral part of coding, rather than merely striving to meet the minimal functional requirements.

Disadvantages of Autograders

A significant drawback of autograders, frequently cited in literature, is their inflexibility compared to human graders (Ihantola et al., 2010; Keuning et al., 2018; Wang et al., 2018). Autograders strictly apply identical test cases to all submissions without exception. Consequently, creative solutions that meet the assignment requirements but deviate from the expected implementation or output format are marked incorrect. Even a minor discrepancy such as a missing whitespace can be the difference between a pass and a fail. Unlike autograders, human graders can exercise judgment to accommodate alternative approaches.

Most autograders assess the functional correctness of student codes, evaluating output for given tests. However, programming courses also aim to instill good coding practices, such as readability, modularization, adherence to naming conventions, coherent design, and appropriate commenting, in students. Autograders do not adequately assess these crucial design and style aspects, leading students to neglect good design principles as long as their code passes the functionality tests.

Another concern is that while autograders are designed to offer students a structured means to advance their knowledge across multiple courses, achieving uniformity in their application across various courses is challenging, especially in larger institutions. Typically, post-secondary institutions employ autograders to maintain consistency across different courses, enabling students to track their progress effectively. However, in institutions where numerous faculty members teach diverse courses with varying requirements, achieving universal acceptance and use of autograders is complex. Faculty members may prefer different tools they are more comfortable with, and some might choose not to use autograders. This results in a lack of uniformity in tool usage from one course to another, creating a disjointed student experience.

Relying exclusively on autograders poses the risk of students learning to pass test cases without acquiring a deeper understanding of programming concepts and problem-solving skills. The emphasis on meeting the autograder’s criteria can lead students to adopt a procedural approach, focusing on achieving the correct output rather than understanding the underlying logic. Some might resort to a trial-and-error method, tweaking their program until it gains autograder approval. While this approach may secure the desired grades, it does not foster genuine understanding or long-term retention of knowledge. Baniassad et al. (2021) introduced a submission penalty at the University of British Columbia to discourage over-reliance on their in-house autograding tool. This adaptation exemplifies the flexibility of modifying tool requirements, a possibility uniquely available when the tool is developed in-house.

Finally, like any web-based software system, autograders can experience technical issues that lead to grading failures and student frustration. The UC Berkeley incident highlights the “single point of failure” risk where an autograder disruption blocks all grading capabilities. Unlike distributed human graders, a centralized automated grader represents a vulnerability to technical problems. Some may fail to meet deadlines through no fault of their own. Furthermore, if instructors refuse to make accommodations for autograder malfunctions, students can feel cheated and that the grading is unfairly disconnected from actual instruction. This speaks to larger concerns around over-reliance on algorithmic systems in education. Automated aids like autograders should not be seen as the sole means of assessment.

Conclusion

The existing body of research on autograders underscores that they are not a panacea for replacing human graders entirely. Instead, to optimize their advantages and mitigate their limitations, autograders are most effective when thoughtfully integrated into a course assessment strategy, complemented by manual grading where it is most beneficial. Below are some best practices for incorporating autograders effectively:

  • Employ autograders for basic functionality testing, while manually reviewing selected assignments for flexibility, creativity, and design.
  • Utilize autograders to assess the correctness of core logic, and rely on human graders to evaluate structure, style, and readability.
  • Complement autograder evaluations with human feedback on prevalent mistakes and areas requiring enhancement.
  • Impose penalties for excessive submissions to discourage over-reliance on the autograder.

Proper integration of autograders aligns with technology integration frameworks like SAMR, enhancing existing processes without entirely transforming the grading in programming courses. It also redefines the manner in which students engage with programming, introducing a more gamified approach. Like any educational technology, the value of autograders is derived from their strategic utilization within well-defined goals and contexts.

References

Hollingsworth, J. (1960). Automatic graders for programming classes. Communications of the ACM3(10), 528–529. https://doi.org/10.1145/367415.367422

Keuning, H., Jeuring, J., & Heeren, B. (2016). Towards a Systematic Review of Automated Feedback Generation for Programming Exercises. Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education. https://doi.org/10.1145/2899415.2899422

Iosup, A., & Epema, D. (2014). An experience report on using gamification in technical higher education. Proceedings of the 45th ACM Technical Symposium on Computer Science Education – SIGCSE ’14. https://doi.org/10.1145/2538862.2538899

Ihantola, P., Ahoniemi, T., Karavirta, V., & Seppälä, O. (2010). Review of recent systems for automatic assessment of programming assignments. Proceedings of the 10th Koli Calling International Conference on Computing Education Research – Koli Calling ’10. https://doi.org/10.1145/1930464.1930480

Hagerer, G. (2021). An Analysis of Programming Course Evaluations Before and After the Introduction of an Autograder. (n.d.). Ieeexplore.ieee.org.

 Wang, T., Su, X., Ma, P., Wang, Y., & Wang, K. (2011). Ability-training-oriented automated assessment in introductory programming course. Computers & Education56(1), 220–226. https://doi.org/10.1016/j.compedu.2010.08.003

Baniassad, E., Zamprogno, L., Hall, B., & Holmes, R. (2021). STOP THE (AUTOGRADER) INSANITY: Regression Penalties to Deter Autograder Overreliance. Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. https://doi.org/10.1145/3408877.3432430

Leveraging GitHub Co-pilot to Enhance Programming Education

Overview

Introductory programming courses are the foundation for students to gain fundamental coding abilities and analytical thinking skills required for various fields. However, programming poses unique challenges for beginners, like struggling with syntax, grasping complex concepts and developing logical reasoning. As computer science education continues to evolve, AI-powered tools like GitHub Copilot are emerging that can augment programming instruction for novices.

This blog post explores how GitHub Copilot could be effectively integrated into introductory programming courses to enhance student outcomes. Relevant education literature is drawn upon to support the recommendations.

An Introduction to GitHub Copilot

GitHub Copilot is a relatively new AI pair programmer that suggests complete lines of code, functions, and entire code blocks based on comments and the code context. It is powered by Codex, a large deep-learning model trained on billions of lines of public code from GitHub repositories. Copilot employs natural language processing, neural code synthesis, and semantic code search to generate helpful code recommendations tailored to the programmer’s intent. Copilot is a Visual Studio Code extension that integrates into the coding workflow. At its core, it transforms a natural language problem statement into executable code. It aims to boost programmer productivity by reducing boilerplate code and suggesting subsequent lines. Here’s a quick demo:

Advantages of Using Copilot for Introductory Programming Education

Copilot has several characteristics that make it well-suited for enhancing student outcomes in introductory programming courses.

Firstly, it assists with syntax. Beginners often struggle with syntax rules and tedious boilerplate code, such as import statements, which slow learning. Copilot speeds development by handling repetitive code, allowing students to concentrate on higher-level problem-solving.

Secondly, Copilot provides varied examples. Giving several possible output suggestions for a piece of code from a comment enables students to select the best code required, much like a built-in multiple-choice question. Exposure to diverse examples aids conceptual understanding according to constructivist learning theories. The numerous code suggestions from Copilot illustrate varied programming approaches, which require students to analyze each one to fit their needs, thereby promoting language learning.

Many CS curriculums fall short due to little attention given to debugging and problem-solving. As of this writing, the beta version of Copilot chat has features that fix broken code (/fix command) and explains a block of code (/explain command). This is incredibly useful for finding bugs and suggesting changes, keeping student motivation high by mitigating frustrations from debugging errors. The explanation feature helps students work comfortably with legacy code, i.e., code that is undocumented and generally difficult to read and understand. Acting much like a virtual teaching assistant increases the learning rate.

Plagiarism Concerns

Lau & Guo (2023) present findings from interviews with 20 instructors across 9 countries in early 2023, right after ChatGPT’s public release. This captures a unique snapshot before best practices have converged. In the short-term, many instructors are concerned about cheating and have reacted by banning AI tools, weighing exams more heavily, or exposing students to AI capabilities/limitations. Most agree that in the longer term, CS educators must learn to embrace these tools opinions diverge on whether to resist or embrace AI tools by integrating tools into courses to prepare students for using AI in future jobs. New assignments could have students collaborate with AI.

In my testing, I have found that manual intervention is still needed to produce functional code (as you can see from the video above). Nguyen & Nadi (2022) found that out of 33 programming problems from LeetCode, a popular competitive programming practice site, Copilot produced a correct answer 57% in Java, compared to only 27% of the time in JavaScript. This means proper tool use requires students to learn and apply the language’s nuances. We should note that this tool is made for the programmer to lessen their workload. Tools like Intelli-sense and extensions for specific languages already exist that do similar things. It is important to remind students that the goal is to learn the language; this tool will help them get there. It is still essential to learn things like modularization, design, and other programming abstractions as a CS student. Copilot is a great tool to give students a close enough answer and for them to figure out the rest of the code. This requires an understanding beyond what can be taught in the classroom.

Strategies for Productive Use of Copilot in Introductory Programming Courses

I believe Github Copilot should not be used in assessments in first-year courses due to its ease of use for basic programming problems. However, in later courses, once students become more familiar with language syntax and proper software design techniques, it can be used to solve more elaborate problems. I think Copilot will allow students in upper-division courses to express what they’ve learned rather than getting bogged down by syntax.

Still, to leverage Copilot effectively, instructors should provide guidance on integrating it into the learning objectives. Here are some best practices. First, let Copilot provide hints, not complete solutions. Encourage students to trace through Copilot code proposals line-by-line manually to build understanding rather than passively accepting suggestions. Second, students must refine and improve upon Copilot’s recommendations and learn to identify any incorrect suggestions. This practice enhances critical thinking and reinforces good practices. In teaching, we must balance Copilot usage with understanding documentation. Lastly, it’s vital to underscore that Copilot is an assistive aid, not a replacement for foundational coding skills.

Conclusion

GitHub Copilot has significant potential to be a transformative tool in introductory programming education. It offers a variety of functions that can significantly benefit beginners. Used strategically and under close supervision, Copilot can become an asset in a novice programmer’s toolkit. It can provide help and immediate feedback to increase comprehension and build confidence, much like a virtual tutor. However, it’s essential to recognize the delicate balance between assistance and over-reliance on AI tools. The challenges faced in integrating GitHub Copilot into programming education are reminiscent of those faced by mathematics educators when determining at what grade level a student should be allowed to use a calculator. Just as a calculator can aid in complex calculations but should not substitute for understanding basic mathematical principles, Copilot can be a valuable tool for code suggestions and error corrections but should not replace a solid understanding of programming concepts.

References

Nguyen, N., & Nadi, S. (2022). An empirical evaluation of GitHub copilot’s code suggestions. Proceedings of the 19th International Conference on Mining Software Repositories. https://doi.org/10.1145/3524842.3528470

Lau, S., & Guo, P. (2023). 16. https://doi.org/10.1145/3568813.3600138

Using Discord in the Classroom

Introduction

The education sector has undergone a tremendous shift during forced remote education during the pandemic. Teachers have learned to adopt technology as an essential role in evolving students’ learning. Communication channels and messaging apps have emerged to meet the needs of educators and their students, and one such platform is Discord. Initially developed as a social platform for gamers, Discord has become an essential tool for teachers looking for a more engaging and efficient communication method with their students. In this post, we will discuss the many features of Discord and how they can be leveraged in the classroom

Discord in the Classroom

Students at my university have already started utilizing various technologies, including Discord, for every course. However, concerns have arisen regarding the potential misuse of these platforms for academic dishonesty, such as coordinating cheating, seeking unauthorized help on assignments, and sharing exam questions. Despite these concerns, it is important to acknowledge the positive aspects of Discord as a tool for facilitating class discussions.

Compared to traditional email, Discord offers greater flexibility in communication. Email is typically one-directional and personal, which may limit its effectiveness in specific scenarios. For instance, if a student wishes to address the entire class or a teacher would like to avoid repeatedly answering the same questions from multiple students, Discord provides a more efficient platform. Additionally, using email as the primary mode of communication can inadvertently perpetuate biases, as teachers may unconsciously form prejudiced views based on students’ language use, which may be influenced by their cultural backgrounds rather than intentional rudeness (Danielewicz-Betz, 2013). Discord allows for anonymous communication, as students can choose nicknames instead of real names.

While the concerns regarding academic integrity on Discord should not be dismissed, it is important to recognize the potential benefits of utilizing such platforms for class discussions. By adopting a proactive approach and establishing clear guidelines and expectations for students, educators can harness the benefits of Discord while mitigating the risks associated with academic dishonesty. Educators should explore strategies to create a collaborative and inclusive digital environment that encourages meaningful interactions and knowledge sharing among students.

Discord Basic Features

Privacy, moderation, and safety are among Discord’s best features. Teachers can set up rules for behaviour, and the platform allows for monitoring and removing inappropriate content. Establishing community norms and guidelines helps create a safe and productive space for learning where students can comfortably share their thoughts and ideas. Many studies have shown that students’ perceptions of learning, satisfaction, student-to-student interactions, student-to-instructor interactions, and grades improve in a remote and anonymous learning environment (Sher, 2009; Mogus et al., 2012; Gray & DiLoreto, 2016).

Additionally, Discord offers an organized messaging system that allows for different channels for various courses, assignments, and discussions. Teachers can create individual channels for different activities or assignments, minimizing confusion and making it easier for students to find and access what they need. The platform also enables students to directly message each other for quick clarifications or reach out to their teachers, thereby improving student-teacher communication.

Discord’s voice and video call features make it easy for students and teachers to collaborate remotely. The screen-sharing feature is convenient during virtual classrooms (sharing screen) or group projects, and the voice chat promotes an engaging and active learning experience. Teachers can use the platform to host study groups, where students can engage in group discussions while working on assignments.

Furthermore, Discord’s customizable interface allows for creative expression, which can stimulate student engagement and participation. Teachers can customize emojis for positive feedback, and students can personalize their profiles according to their interests and personalities. Discord also allows teachers to integrate external web tools, such as Google Docs, links, and intranets, making it easier for students to access external resources.

The Basic Setup of a Classroom Server

To get started, you need to create a server on Discord. This server will serve as the central place to store channels and information. When setting up the server, choosing an appropriate structure is essential. An organized server structure will make it easier for students to navigate through the channels.

Channels in Discord are where discussions are grouped. They allow students to find specific information about a course activity or engage in conversations about a particular subject. I recommend creating a different channel for each assessment, discussion group, or activity in your classroom. For instance, you can have channels like “Assignment 1 Discussion,” “Assignment 2 Discussion,” “Tutorials,” “Group Project Meetup,” and “Office Hour.” It may also be helpful to set up a “General” channel where students can chat and get to know each other.

Roles in Discord group the users within your server. Roles can be used for dedicated communication with specific groups of people, such as teaching assistants in your classroom. Students can send direct messages to each other and those with predefined roles. For instance, a student can ask for clarification on an assignment by tagging the teaching assistants specifically. You can also assign limitations to created roles on the server. For example, you can create a “student-leader” role that has access to create new channels but does not have the ability to ban a specific member.

The Discord support site provides a useful template that sets up channels and roles and enables security features for a typical classroom. This template can be an excellent starting point for beginners on Discord.

Discord Extensibility

Discord bots can greatly enhance the classroom setup for more advanced users by automating administrative tasks, facilitating real-time interaction between students and teachers, providing customized instruction and feedback, and simplifying assignment delivery. They offer an excellent way to maintain engagement, collaboration, and interactive learning, while also keeping students engaged and attentive. Incorporating bots is a prime example of how technology can assist educators in delivering lessons effectively and achieving better student outcomes. Integrating Discord bots is one of the most effective methods for significantly improving the quality of teaching.

Discord bots are capable of efficiently handling various administrative tasks. They can facilitate polling, schedule events and moderate chat rooms. Bots can also help maintain organized and spam-free chat rooms and send students reminders about important dates. By utilizing bots, instructors can free up more time to focus on classroom activities. To invite a Discord bot to your server, use bot hosting sites like top.gg. Once invited, the bot will be installed on your classroom server. The following video demonstrates a basic setup of a classroom and the workflow for integrating Discord bots:

Tips for Encouraging Students to be Active Participants Online

Students are more likely to actively participate in online classes if the platform is safe, user-friendly, and easy to navigate. As a teacher, it’s essential to ensure that students have access to tutorials, guidelines, and support resources to help them navigate the platform easily. Encourage students to ask questions and be prepared to respond to their concerns. Additionally, assigning role colours can provide incentives for students who complete specific tasks. For example, you can create a role called “level-2-XP” and assign it a red colour on the server. This visual recognition can motivate students to engage more frequently.

Providing feedback is crucial in maintaining student engagement and fostering improvement on the platform. Regularly offer constructive feedback to students, highlighting their strengths and areas for improvement. It’s important to provide feedback positively and privately to avoid discouraging students from participating. This approach allows students to take ownership of their learning and motivates them to persist.

Engaging students by asking open-ended questions, facilitating discussions, and creating breakout rooms for group brainstorming is also important. Initiating discussions on topics beyond the scope of the class can help students feel a sense of safety and encourage their participation. Here are some examples of questions I have used in online discussion forums with great success:

  • Is social media more harmful or beneficial to society?
  • Who would win in a hypothetical fight (if they could ever meet), Batman or Spiderman?
  • Is it better to be an only child or have siblings? Why?
  • What is the best video game you’ve ever played?
  • What’s the best software ever written?

Digital Citizenship Warnings and Recommendations

While Discord offers many valuable features for teachers, it is important to prioritize rules for proper digital citizenship. Due to uncertainties regarding data storage, academic assessments should not be conducted on Discord. Additionally, personal conversations about grades should not be discussed. It is essential to treat Discord as a public sandbox where you interact with your students and remain accessible at all times. Furthermore, it is crucial to comply with student privacy laws specific to your institution or country and refrain from exceeding those regulations.

One of the main concerns associated with Discord is the potential for distractions. The platform provides various features, such as chat rooms, voice channels, and direct messaging, which can easily divert students’ focus away from educational activities. Anonymity among users raises privacy and safety concerns, as interactions with unknown individuals can occur on Discord. As an educator, you must establish clear guidelines and expectations regarding appropriate behaviour and usage to address these risks. Posting the rules and regulations in the server’s description, promoting responsible digital citizenship, teaching students about respectful communication, and discouraging the posting of disinformation or rumours are necessary steps. Creating private and moderated channels, educating students about online safety in the classroom, and regularly monitoring the platform are additional measures to ensure a positive and secure learning environment.

References

Danielewicz-Betz, A. (2013). (Mis)Use of Email in Student-Faculty Interaction: Implications for University Instruction in Germany, Saudi Arabia, and Japan. JALT CALL Journal9(1), 23–57. https://eric.ed.gov/?id=EJ1107960

Sher, A. (2009). Assessing the relationship of student-instructor and student-student interaction to student learning and satisfaction in Web-based Online Learning Environment. Journal of Interactive Online Learning Www.ncolr.org/Jiol8(2). https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=7810cfba73c549ffc94437375b9e6e8f84336af5

Mogus, A. M., Djurdjevic, I., & Suvak, N. (2012). The impact of student activity in a virtual learning environment on their final mark. Active Learning in Higher Education13(3), 177–189. https://doi.org/10.1177/1469787412452985

Gray, J. A., & DiLoreto, M. (2016). The Effects of Student Engagement, Student Satisfaction, and Perceived Learning in Online Learning Environments. International Journal of Educational Leadership Preparation11(1). https://eric.ed.gov/?id=EJ1103654

Collaborating on Git!

Introduction

Background and Motivation

Git is the industry-leading version control system that streamlines software development and helps teams collaborate more efficiently. It provides a wide range of features to track changes, manage projects, store code, resolve conflicts, create branches/rollbacks and keep an eye on contributions from each team member. Its excellent performance, security, scalability and many implementations make it the standard version control system today. It also has powerful integrations within modern integrated development tools to help coordinate tasks such as code reviews merging or scheduling efficiently amongst multiple developers.

To my surprise, I discovered that when it comes to the fundamentals of Git, many second-year software engineering students are completely lost. They lack the collaboration skills needed for a successful project and don’t understand how crucial requesting proper merges is with this online tool. Instead of utilizing proper merge requests for documents through Git’s powerful online tooling capabilities, these same students are emailing their work in and waiting for manual merges from leaders, which disregards best practices and overlooks useful commands available at their disposal.

Overview

This project aims to equip second-year post-secondary computing science students with the basic knowledge and confidence necessary for working on team projects with an introduction to Git. Through specific workflows that reflect real-world situations, students will experience how software developers can use Git efficiently, effectively, and ethically when collaborating in a group setting. As most have no prior exposure upon starting their course in Software Engineering at my school – this proposed lesson provides them with an invaluable opportunity before participating in more extensive collaborations later in the course.

ISTE Standards

The exercise is developed to align with the International Society for Technology in Education standards for students.  These standards promote students taking charge of their learning by giving them a voice and encouraging the process to be led by them. This creates an empowering environment in which they can reach new levels of achievement.

ISTE 2 Digital Citizenship

By exploring the Git-suggested workflows, students will gain a valuable understanding of working and collaborating ethically in teams. We’ll ask them to consider their rights as content producers on this platform while respecting its privacy rules, by making sure they use public/private repositories appropriately and only grant necessary access when needed. This is in alignment with ISTE standard 2a. “Students cultivate and manage their digital identity and reputation and are aware of the permanence of their actions in the digital world.”, 2c. “Students demonstrate an understanding of and respect for the rights and obligations of using and sharing intellectual property.” and 2d “Students manage their personal data to maintain digital privacy and security and are aware of data-collection technology used to track their navigation online.”

ISTE 1 Digital Citizenship

By using Git, students have the ability to interact with one another and merge their efforts on a project. This allows them to share feedback within the team and quickly implement it into their development cycle for greater overall productivity. This is in line with ISTE standard 1b. “Students use technology to seek feedback that informs and improves their practice and to demonstrate their learning in a variety of ways,” and 1c, “Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies.”

ISTE 7 Digital Citizenship

Broadly stated, ISTE standard 7 states, “Students use digital tools to broaden their perspectives and enrich their learning by collaborating with others and working effectively in teams locally and globally.” This collaborative exercise will enable students to hone their skills remotely, allowing them to experience working with peers from different backgrounds globally, the exercise centers around this core standard.

Backwards Design

We utilize the backwards design principles to create a successful learning experience (Wiggins & McTighe, 2005). This process involves three distinct stages. Firstly, our goals are aligned with accepted content standards and curriculum expectations to identify desired results. Secondly, acceptable evidence is established in order to validate that these objectives have been achieved, emphasizing knowledge over activities or covered material alone. Finally, we plan instructional experiences and instruction based on what learners need to achieve their goals.

Stage 1 Identify Desired Results

Establish Goals:

There are two main departmental learning outcomes based on this exercise:

  1. (LO1a) Students will be introduced to team processes and cooperative programming and understand their pros and cons.
    • Students will understand the use and workflows of using Git as a collaboration tool.
    • Students will collaborate on a document.
  2. (LO2a) Students will understand how to communicate effectively within a team.
    • Students will decide on a workflow for conflict resolution.

Essential Questions:

The provocative questions that foster student inquiry, understanding and transfer of learning:

  • How can you resolve conflicts or disagreements with a spouse or significant other?
  • Why is it important to communicate in any relationship?
  • Why is it essential to collaborate instead of working alone in a software development setting?

Understandings:

Students will understand

  • The general workflow of Git.
  • Why it is essential to use a collaboration tool in software development.

Knowledge:

Students will know the following:

  • What a Git repository is, and what it’s used for
  • The basics of collaborative development
  • The Git conflict resolution process

Skills:

Students will be able to:

  • Fork a project
  • Push updates to branches
  • Merge branches
  • Create merge requests
  • Communicate with teammates over git

Stage 2 – Assessment Evidence

The following are acceptable evidence of learning. We will assess the following via the six facets of understanding outlined by Wiggins (Ch4). To demonstrate mature understanding, students: can explain, can interpret, can apply, can empathize, have perspective, and have self-knowledge of the concepts.

Performance Tasks: what would be sufficient and revealing evidence of understanding?

  • Students can create a branch for their own work (can apply)
  • Students can create a pull request and communicate via the Git interface with the team. (can apply)
  • Students can fork a project from a Git repository (can apply)
  • Students can add text to a document and push it to a repo on Git (can apply)
  • Students can create a merge request and communicate with others in a team. (perspective)
  • Students can resolve conflicts in a file to make a finalized merged document (perspective, can apply)
  • Students can remove a committed document and erase history (can apply)

Other Evidence Required: What are the types of evidence required by Stage 1 desired results?

Academic Prompts:

  • A merged finalized document on the main development branch: Students will add a short profile about themselves and their development background on a pre-existing document.  They will request to merge their part into the main document and deal with any conflicts. The result is a text document that contains background profiles about each of the members of the team. 
  • Properly merged commit tree on a new Git repository after the assignment. The commit tree on the newly created repository should resemble standard merge practices on Git and have evidence of proper communication between teammates.
  • Students can write proper Git messages to communicate a commit or a merge appropriately (empathy)

Quiz and Test Items:

  • Explain the Git conflict resolution process (can explain)
  • Explain Git branches and when to use them (can explain)
  • Describe forking, merging, rebase, revert, and reset (can explain)

Student Self-assessment

  • Students will reflect on improvements to adopt within their groups for a more complex document (self-knowledge).
  • Justify the current workflow and explain other workflows students could have taken to arrive at the same results (self-knowledge).

Stage 3 – Learning Experiences

These exercises are designed to get creative juices flowing and facilitate collaboration between team members. They provide specific workflows and reflections so students can see the bigger picture. They are assessed through the WHERETO standard (Wiggins, 2005):

  • Where is it going?
  • Hook the students
  • Explorer and Equip
  • Rethink and revise
  • E2xhibit and evaluate
  • Tailor to specific needs
  • Organize for maximum engagement and effectiveness

In the classroom (Optional)

Provide each group with a poster board and have students write a brief paragraph on the poster board highlighting their common interests. Each student should write their programming experience and name on individual pieces of paper. Then, manually combine the individual papers with the poster board to create a single poster representing the group. (W,H,O)

Reflect on the following question: What difficulties might arise if we attempt to concurrently write on the poster board? (R)

Setup

Read 1.3-1.8 in the Pro Git Book (W)

  1. The students will complete a survey about their previous exposure to Git, command line tools, and teamwork. The exercise will begin at a different stage depending on their past experience. (W)
    • Students who lack prior experience will be required to install Git. (T)
    • Students who have some familiarity will need to configure Git. (T)
  2. An experienced student will serve as the repository owner. They will fork (or download) a markdown file for a pre-existing project description template from a repository and transfer it to a new repository accessible by the entire team. (E, T)
  3. Reflect on the following question: What are other ways that step 2 could have been accomplished? What are the advantages and disadvantages of each? (R, E2, O)

Experience 1: Git Basics as an individual developer

Read 2.1-2.5 in the Pro Git Book (W)

  1. Students will create a new markdown file that includes their answers to the self-assessment survey. (H, E, T)
    • They will view the changes that they have not committed yet.
    • They will commit their changes. (E)
  2. Students will practice un-staging a commit and re-staging it. (E, E2)
  3. Students will examine their remote and push their work to the main branch. They will check the main branch on the repo and see the results. (H, O)
  4. Reflect on the following question: What will I do if I have staged a change but want to amend it? What if I have committed a change but want to amend it? (R)
Figure 1: Results of Experience 1 on Git

Experience 2: Git Branching

Read 3.1-3.4 in the Pro Git Book (W)

  1. The students will generate a new working branch and switch to it. (E)
  2. In the shared markdown file, students will insert a section introducing themselves. This section should highlight their strengths, developer background, interests, and sociocultural background. (E, T)
  3. They will then commit and push these changes to their branch. (E, O)
  4. Reflect on the following question: With respect to the classroom exercise, what issues may arise during this phase? What is the definition of “stashing”? (R)
Figure 2: Results of Experience 2 on Git

Experience 3: Merge Request

  1. Students will initiate a merge request. (E)
  2. They will then wait for feedback from other group members, with every member expected to participate. (E)
  3. Finally, they will merge their branch into the main branch. (H, O)
  4. Reflect on the following question: What should you look for when a group member creates a merge request? What type of feedback would be constructive and supportive to the group member? (R, E2)
Figure 3: Result of Experience 3 on Git

Reflection

This backwards design process was a great way to carry out this exercise. Evaluating the facets of understanding made it apparent that most assessment evidence centred around application, which makes sense since learning software is fundamental here. Incorporating an empathetic and reflective component into activities could also encourage students to think strategically about how Git can be used in collaboration and why they should use it as part of their software engineering coursework. Ultimately, my hope is that these exercises will promote better comprehension of using Git for future projects.

Issues with Remote Agile Software Development

Introduction

The Agile methodology is a software development approach that prioritizes flexibility, collaboration, and iterative delivery. It involves breaking down the development process into smaller segments called sprints that typically last 1-4 weeks. The focus is on teamwork, communication, and daily stand-up meetings to keep everyone informed. Agile emphasizes individuals and interactions over processes and tools, making it a popular approach in modern software development (Agile Manifesto, 2001). However, the sudden shift to remote work has impacted the personal nature of this model.

During the COVID-19 pandemic, companies like Google, Tesla, Microsoft, and Twitter implemented remote work policies to protect their employees. As the pandemic subsides, these companies are asking their employees to return partially to in-person work, which has sparked a debate about the advantages and disadvantages of remote versus in-person work arrangements. To investigate the impact of remote work policies on team culture and productivity, several studies have examined various aspects of agile development, including onboarding, client and team dynamics, and work-life balance. Some studies suggest that remote software development can be just as effective as in-person development, while others have found that it can lead to decreased productivity and challenges in communication and collaboration.

In this article, we will discuss these findings in the context of the ISTE standard for students 1.7c: “students contribute constructively to project teams, assuming various roles and responsibilities to work effectively toward a common goal.”

Remote Team Dynamics and Development

Mob (or pair) programming is a collaborative approach to agile software development where a group of developers work together on the same task. One person acts as the driver and writes code on the computer, while the rest of the team acts as navigators and provides input, gives suggestions, and thinks strategically about the future. This approach has many benefits, including improved code quality, increased knowledge sharing, and faster problem-solving. It is considered fundamental to the success of many teams, as it aids in solving complex problems by working together. However, Nolan (2021) found that during the pandemic, there was a significant decrease in pair programming and mob programming activities, which significantly impacted companies with a mob programming culture. Without this collaboration, productivity may remain constant, but it could lead to bug fixes or a more complex redesign of features in a later development stage. This is because mob programming allows a development team to consider the big picture while developing a feature, enabling them to see the forest from the trees.

Scrum is another crucial process in agile software development. It involves short daily meetings held by a team to stay synchronized and on track. While many studies have argued that these meetings have little impact on productivity and meeting deadlines (Miller, 2021; Butler, 2021), other studies have found that distractions during virtual scrum meetings can be problematic. For example, Butt (2021) found that team collaboration decreases as there are fewer discussions about user stories or project complexities, and team members may become distracted by emails during these meetings. This can limit the effectiveness of the agile approach. Additionally, attendance at scrum meetings is decreasing, which can be a significant problem as these meetings are crucial for the team’s synchronicity, development progress, and the long-term success of a project, regardless of progress in other areas.

Team meetings are a valuable learning opportunity, particularly for junior development team members. During these meetings, developers can work together, receive feedback from colleagues, share knowledge and experience, and develop confidence in their abilities (giving them a “seat at the table”). While some aspects of this learning experience can be replicated online, Schwartz et al. (2022) demonstrated that remote meetings result in different cognitive processes than in-person meetings. Specifically, certain brain-behaviour associations arise only during live idea exchanges, indicating that specific neurobiological processes underlie human co-presence and are more beneficial for learning than remote meetings.

A goal of the agile development process is client satisfaction. However, according to a survey by Butt (2021), developers reported a decrease in remote collaboration with customers due to issues such as scheduling conflicts, slow internet speeds, and availability to discuss the project. As a result, most of the feedback from the client was received via email or on story cards. Furthermore, 76% of clients reported dissatisfaction with remote meetings with developers due to delayed project delivery times, increased costs, output not meeting their needs, fewer meetings with developers, and overall lower satisfaction with the work.

Hiring and Onboarding

During the pandemic, tech companies experienced a surge in hiring to meet the demand for developers with work-from-home abilities. To ensure a high-quality candidate experience, the virtual hiring process had to be reworked. To aid in the selection process, companies increased the number of staff involved and added more interviews. The technical interview process, which often involves whiteboarding and other in-person techniques, also had to change to a remote and less desirable setting. Candidates found it challenging to envision the company culture during online interviews, while interviewers struggled to assess non-verbal communication, like body language. Furthermore, candidates with better internet connections tended to be implicitly favoured, as highlighted by Fiechter et al. (2018).

The pandemic has affected how software development teams introduce new hires to their company. Rodeghero et al. (2021) conducted a study on 267 new hires at Microsoft. They found that most were onboarded remotely and never had the chance to meet their colleagues in person, as most meetings were conducted with cameras off. This created a challenge for new hires in building strong social connections with their team and feeling comfortable approaching anyone for help. Additionally, since new developers come from different backgrounds and have different levels of experience, a standard approach to onboarding was found to be ineffective. The researchers suggest that onboarding processes should prioritize team communication, encourage camera use during meetings, assign an onboarding buddy and mentor, support different onboarding speeds, and provide up-to-date documentation on company workflows.

Finally, Team managers can face several challenges when working on new projects with new teams. One such challenge is facilitating effective collaboration and problem-solving among team members. This is particularly true for challenging projects that require creative and innovative solutions. While many remote tools are available for brainstorming and problem-solving, research by Nolan et al. (2021) suggests that initiating new ideas without in-person interaction can be more challenging and may benefit from co-located interaction. When team members are physically located in the same space, it is easier to share ideas, build rapport, and collaborate effectively. They can have unplanned discussions and engage in informal brainstorming sessions.

Work/Life Balance

In a survey conducted by Miller (2021), which included over 2000 software developers, it was found that many developers experienced an increase in scheduled meetings, group member notifications, and ad-hoc meetings, while also experiencing a decrease in the quality of meetings and their ability to collaborate with team members. Despite efforts by numerous teams to use social engagements to support their members, 74% of respondents still reported feeling a lack of social interaction in a work-from-home environment.

According to another study by Bulter et al. (2021) conducted at Microsoft, the impact of remote work varied based on individual roles, characteristics, and sociological factors. Individuals who are visually impaired or communicate through body language face unique challenges with remote communication since it relies heavily on visual cues. Additionally, neurodivergent professionals may prefer to keep their videos off during meetings as specific activities that help them remain stimulated or calm down may be misconstrued or cause distractions for other attendees. The study also found that remote work provided flexibility during the pandemic but blurred the boundary between work and personal life in problematic ways. Non-work distractions increased, while work-related distractions decreased, leading to a sense of social and collaborative isolation for most workers in their study.

Conclusion

Remote agile software development requires different skills and tools than in-person development. Teams must rely on virtual communication tools like video conferencing, instant messaging, and collaborative software platforms to stay connected and productive. This presents several challenges that must be addressed to maintain productivity, quality, and customer satisfaction. Developers and team managers must navigate obstacles such as remote collaboration difficulties, new team onboarding, and the need for social connection and support. Additionally, the impact of remote work on individual workers varies, with factors such as role, characteristics, and sociological factors playing a significant role. Overcoming these challenges requires a multi-faceted approach, including promoting team communication, encouraging social interaction, providing mentorship and support, and adapting the onboarding process to meet individual needs. By addressing these issues, remote agile software development teams can continue to thrive in the face of the ever-evolving challenges of the modern software development environment.

References

Nolan, A., White, R., Soomro, M., Dopamu, B. C., Yilmaz, M., Solan, D., & Clarke, P. (2021). To Work from Home (WFH) or Not to Work from Home? Lessons Learned by Software Engineers During the COVID-19 Pandemic. Communications in Computer and Information Science, 14–33. https://doi.org/10.1007/978-3-030-85521-5_2

Schwartz, L., Levy, J., Endevelt-Shapira, Y., Djalovski, A., Hayut, O., Dumas, G., & Feldman, R. (2022). Technologically-assisted communication attenuates inter-brain synchrony. NeuroImage264, 119677. https://doi.org/10.1016/j.neuroimage.2022.119677

Fiechter, J. L., Fealing, C., Gerrard, R., & Kornell, N. (2018). Audiovisual quality impacts assessments of job candidates in video interviews: Evidence for an AV quality bias. Cognitive Research: Principles and Implications3(1). https://doi.org/10.1186/s41235-018-0139-y

Butt, S. A., Misra, S., Anjum, M. W., & Hassan, S. A. (2021). Agile Project Development Issues During COVID-19. Lecture Notes in Business Information Processing, 59–70. https://doi.org/10.1007/978-3-030-67084-9_4

Agile Manifesto. (2001). Manifesto for Agile Software Development. Agilemanifesto.org. https://agilemanifesto.org/

Miller, C., Rodeghero, P., Storey, M.-A., Ford, D., & Zimmermann, T. (2021). “How Was Your Weekend?” Software Development Teams Working From Home During COVID-19. 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE). https://doi.org/10.1109/icse43902.2021.00064

Butler, J., Czerwinski, M., Iqbal, S., Jaffe, S., Nowak, K., Peloquin, E., & Yang, L. (2021). Personal Productivity and Well-being — Chapter 2 of the 2021 New Future of Work Report. ArXiv:2103.02524 [Cs]. https://arxiv.org/abs/2103.02524

Rodeghero, P., Zimmermann, T., Houck, B., & Ford, D. (2021). Please Turn Your Cameras On: Remote Onboarding of Software Developers during a Pandemic. IEEE Xplore. https://doi.org/10.1109/ICSE-SEIP52600.2021.00013

Are Limitations to Screen Time Necessary?

According to the American Academy of Pediatrics (2013), it is recommended that parents limit children and teens’ entertainment screen time to no more than two hours daily, stating that an increase in screen time has been linked with eye problems, violence, cyberbullying, obesity, lack of sleep, and academic decline. They quickly note that this is not a significant cause of these problems, and this information should be balanced with educating your kids about these factors. Despite this, I find this to be a gross generalization. Studies have shown that culture and class affect the amount and the type of technology children are exposed to (some are good, and some are not). Benefit from technology is greatly affected by family context (Konca, 2021).

Fraser Health, the leading health authority in B.C. Canada makes a similar recommendation of 2 hours a day (Screen Time for Children, n.d.), stating that parents should instead “Choose activities such as playing outdoors, reading or crafting over screens.” However, e-readers and tablets offer the storage of thousands of books, and web-enabled devices can give extra information on books at your fingertips. Or is reading not considered entertainment? What if I enjoy reading?  Also, who does crafts without the use of a tablet? Do you have craft ideas off the top of your head?

Personally, I do not limit screen times for my six-year old son, Jacob.  There are days that he spends seven hours in front of a screen, and there are days that he spends less than an hour.  The important thing is that he is learning something from the experience. Screen time can be used to develop digital, creative, problem-solving, communication, social, and goal-setting skills  (Using Screen Time and Digital Technology for Learning: Children and Pre-Teens, n.d.). Currently, Jacob primarily plays two games: Geometry Dash and Mario Maker. On the surface, both games provide no educational value. The former even contains many elements, such as photosensitivity and loud music, that have been known to cause seizures in players (Millichap, 1994). I have found that these games provide benefits from every category listed above, teaching children to collaborate on building levels and giving feedback to peers. Besides learning online etiquette, reading, and typing skills, Jacob has gained extensive practical knowledge about game mechanics like angle rotations, alpha transparencies, z-index, collisions, conditional structures, and counters.  Some of these concepts I am teaching to my university students.

So to all health authorities: I agree with your other recommendations. Please consider deleting or altering the gross generalization of time limitations (or at least clarify it further). Otherwise, each time Jacob plays a game, I will need to set a timer on my phone, which will cut into my two hours of screen time.

References

Konca, A. S. (2021). Digital Technology Usage of Young Children: Screen Time and Families. Early Childhood Education Journal. https://doi.org/10.1007/s10643-021-01245-7

American Academy of Pediatrics. (2013). Children, Adolescents, and the Media. PEDIATRICS132(5), 958–961. https://doi.org/10.1542/peds.2013-2656

Screen time for children. (n.d.). Fraser Health. Retrieved January 22, 2023, from https://www.fraserhealth.ca/health-topics-a-to-z/children-and-youth/physical-activity-for-children/screen-time-for-children#.Y8zGYezMJqs

Using screen time and digital technology for learning: children and pre-teens. (n.d.). Raising Children Network. Retrieved January 22, 2023, from https://raisingchildren.net.au/school-age/school-learning/learning-ideas/screen-time-helps-children-learn#:~:text=Screen%20time%20can%20help%20children

Millichap, J. G. (1994). Video Game-Induced Seizures. Pediatric NeurologyBriefs8(9), 68. https://doi.org/10.15844/pedneurbriefs-8-9-5

Feedback in Gamification App

Motivation

Gamification and Game-based learning are well-studied fields in education, the effects of which generally positively impact learning. From ISTE standard 1.1.c “Students use technology to seek feedback that informs and improves their practice and to demonstrate their learning in a variety of ways.” (Brooks-Young, 2017), the question that I set out to investigate is: How effective is gamification in a learning tool in terms of feedback to a student? The conclusions in this post will help improve a programming practice web application currently in development. The current iteration of the application has a series of programming challenges that a student can work through.  The student can submit a program to any programming challenge and immediately receive a ‘pass’ or ‘fail’ on the problem.  I aim to determine what game components and digital feedback techniques should be added to improve this online tool.  The long-term use and integration of such a tool into a classroom setting to provide teachers a tools for providing practice problems for students. Under the TPACK model, the pedagogical view would be a game-based learning tool that allows students to level up as they gain more experience, the technology would be the programming platform on the web application, while the content knowledge would be gained by the programming itself.

Gamification, Game-based Learning, and Serious Game

In Teaching in a Digital Age, the author distinguishes between the following terms. Serious games are game-like interactive systems and “are referred to as entertaining tools with a purpose of education, where players cultivate their knowledge and practice their skills through overcoming numerous hindrances …” (Zhonggen, 2019, cited in Bates, 2022). Game-based learning is “the pedagogical approach of utilizing games in education.” (Anastasiadis, Lampropoulos and Siakas, 2018, cited in Bates, 2022). Gamification is the “use of game design elements in non-game contexts” (Deterding et al., 2011, cited in Bates, 2022). Game design elements for gamification include player profiles, experience points (XP), levels, badges, leaderboards, team collaboration, quests, social graphs, and certificates.

According to these definitions, my tactic is the gamification of an existing learning tool using a game-based learning pedagogical approach.  I would not call the current web app a serious game since it does not possess game-like characteristics. It is widely accepted that gamification increases the app’s usability, so we seek to find the types of feedback that would prove most beneficial for the programming app.

Feedback

There are primarily two forms of feedback: explanatory and corrective. Both types of feedback inform the player of the correctness of their answer, but explanatory feedback provides the player with an additional principle-based explanation. Currently, my application provides only corrective feedback. A 1993 study using a digital game designed to teach environmental principles found “… that a version incorporating explanatory feedback significantly improved recall performances compared with a version where no feedback was available”. (Leutner, 1993, as cited in Erhel et al., 2013). Another study “… of the Design-A-Plant game showed that the use of explanatory feedback improved learners’ transfer performance more than corrective feedback did.” (Moreno and Mayer, 2004, cited in Erhel et al., 2013).

It is also essential to distinguish between generic and tailored feedback and negative and positive feedback. Generic feedback is a general statement, whereas tailored feedback is specific to the player.  Negative feedback focuses on improvements that can be made, whereas positive feedback focuses on what the player did well during the last session. It is found that negative feedback is most effective when the player immediately has another turn, and positive feedback is more effective when the turn is delayed or non-existent (Burgers et al., 2015, cited in Welbers et al., 2019). Another study found that generic feedback was more effective than tailored feedback. This contradicts conventional thinking, and the authors quickly noted that it was due to corrective feedback. It is conjectured that tailored explanatory feedback, especially if accompanied by hints tailored to the player, could encourage participation (Welbers et al., 2019).  

One theme prevalent in these studies is the idea of instant feedback within games. Azumi (2015) highlights the addictiveness of massive multiplayer online role-playing games (MMORPG). These games require players to work together to accomplish a goal. Including a gamified collaboration element benefits programming education students in the learning process as they attain immediate feedback from peers (Azumi, 2015). In fact, “feedback in serious games and game-based learning can also take the form of responses from dialogues with non-player characters or instant feedback messages related to game controls and challenges performed.” (Laine & Lindberg, 2020, cited in Krath, 2021). Intuitively, immediate feedback allows players to make instant adjustments to quickly correct failures and set new goals.

Other Lessons Learned

Although unrelated to feedback, it is interesting to note that gamification applications in Computer Science have mixed results. A gamification platform that contained game dynamics was used to teach a course in Software Engineering where the students did not feel interested in the gamified environment. It is conjectured that older students and those who have much experience with lecture-based learning is less receptive of game-base learning (Berkling and Thomas 2013, as cited by Nah). On the other hand, a course in Information Systems and Computer Engineering introduced multiple game design elements into the course design itself. This increased student engagement and lecture attendance but did not significantly improve student grades (Barata et al., as cited by Nah). We must ensure that online tools do not replace the programming learning experience which only comes from solving real-world problems.

Conclusions:

From the readings and conclusions above, the following actions should be taken to incorporate gamification elements in the programming application. 

  1. Since a student can debug, alter, and resubmit an incorrect program immediately, the application should give immediate negative feedback, displaying elements of the code or test cases that failed in the execution of a program.
  2. Lessons should be drawn from the MMORPG. We should add a collaborative element, allowing students to form teams to solve problems.  Students can gain peer feedback and also benefit from developing a personal learning community.
  3. Welbers et al. (2019) noted that tailored explanatory feedback might encourage player engagement and participation. One way to do this is to give feedback by sending weekly progress reports and questions tailored to the user’s skill level.
  4. Programming challenges beyond a student’s skill level should be hidden until the required experience points are attained. This is a form of positive feedback which is most beneficial when the game play is delayed.

References

Erhel, S., & Jamet, E. (2013). Digital game-based learning: Impact of instructions and feedback on motivation and learning effectiveness. Computers & Education67, 156–167. https://doi.org/10.1016/j.compedu.2013.02.019

Welbers, K., Konijn, E. A., Burgers, C., de Vaate, A. B., Eden, A., & Brugman, B. C. (2019). Gamification as a tool for engaging student learning: A field experiment with a gamified app. E-Learning and Digital Media, 16(2), 92–109. https://doi.org/10.1177/2042753018818342

Nah F.F., & Zeng, Q., & Telaprolu, V. R., & Ayyappa, A. P., & Eschenbrenner, B., (2014). Gamification of education: A review of literature. HCI in Business, 401-409. https://doi.org/10.1007/978-3-319-07293-7_39

Azumi, S., Iahad, N., & Ahmad, N. (2015). Gamification in online collaborative learning for programming courses: A literature review. ARPN Journal of Engineering and Applied Sciences, 10(23).

Krath, J., Schürmann, L., & von Korflesch, H. F. O. (2021). Revealing the theoretical basis of gamification: A systematic review and analysis of theory in research on gamification, serious games and game-based learning. Computers in Human Behavior125, 106963. https://doi.org/10.1016/j.chb.2021.106963

Bates, A. W. (Tony). (2022). Chapter 8: Pedagogical differences between media. Pressbooks.bccampus.ca. https://pressbooks.bccampus.ca/teachinginadigitalagev3m/part/chapter-8-pedagogical-differences-between-media/

Brooks-Young, S. (2017). ISTE standards for students: a practical guide for learning with technology. International Society For Technology In Education.