Models to Measure Students’ Learning in Computer Science

As computer science becomes integrated into K-12 education systems worldwide, educators and researchers continuously search for effective methods to measure and understand students’ learning levels in this field. The challenge lies in developing reliable and comprehensive assessment models that accurately and discreetly gauge student learning. Teachers must assess learning to support students’ educational needs better. Similarly, students and parents expect schools to document students’ proficiency in computing and their practical application. Unlike conventional subjects such as math and science, very few relevant assessments are available for K-12 CS education. This article explores specific models used to measure knowledge in various CS contexts and then examines several examples of student learning indicators in computer science.

Randomized Controlled Trials and Measurement Techniques

An innovative approach to measuring student performance in computer science education involves evaluating the effectiveness of teaching parallel programming concepts. Research by Daleiden et al. (2020) focuses on assessing students’ understanding and application of these concepts.

The Token Accuracy Map (TAM) technique supplements traditional empirical analysis methods, such as timings, error counting, or compiler errors, which often need more depth in analyzing the cause of errors or providing detailed insights into specific problem areas encountered by students. The study applied TAM to examine student performance across two parallel programming paradigms: threads and process-oriented programming based on Communicating Sequential Processes (CSP), measuring programming accuracy through an automated process.

The TAM approach analyzes the accuracy of student-submitted code by comparing it against a reference solution using a token-based comparison. Each element of the code, or “token,” is compared to determine its correctness, and the results are aggregated to provide an overall accuracy score ranging from 0% to 100%. This scoring system reflects the percentage of correctness, allowing for a detailed examination of which students intuitively understand specific elements of different programming paradigms or are more likely to implement them correctly.

This approach extends error counts, offering insights into students’ mistakes at a granular level. Such detailed analysis enables researchers and educators to identify specific programming concepts requiring further clarification or alternative teaching approaches. Additionally, TAM can highlight the strengths and weaknesses of different programming paradigms from a learning perspective, thereby guiding curriculum development and instructional design.

Competence Structure Models in Informatics

Torsten et al. (2015) introduced a new model in their discussion aimed at developing a competence structure model for informatics with a focus on system comprehension and object-oriented modelling. This model, part of the MoKoM project (Modeling and Measurement of Competences in Computer Science Education), seeks to create a competence structure model that is both theoretically sound and empirically validated. The project’s goals include identifying essential competencies in the field, organizing them into a coherent framework, and devising assessments to measure them accurately. The study employed the Item Response Theory (IRT) evaluation methodology to construct the test instrument and analyze survey data.

The initial foundation of the competence model was based on theoretical concepts from international syllabi and curricula, such as the ACM’s “Model Curriculum for K-12 Computer Science” and expert papers on software development. This framework encompasses cognitive and non-cognitive skills pertinent to computer science, especially emphasizing system comprehension and object-oriented modelling.

The study further included conducting expert interviews using the Critical Incident Technique to validate the model’s applicability to real-world scenarios and its empirical accuracy. This method was instrumental in pinpointing and defining the critical competencies needed to apply and understand informatics systems. It also provided a detailed insight into student learning in informatics, identifying specific strengths and areas for improvement.

Limitations

The limitation of this approach is its specificity, which may hinder scalability to broader contexts or different courses. Nonetheless, the findings indicate that detailed, granular measurements can offer valuable insights into the nature and types of students’ errors and uncover learning gaps. The resources mentioned subsequently propose a more general strategy for assessing learning in computer science.

Evidence-centred Design for High School Introductory CS Courses

Another method for evaluating student learning in computer science involves using Evidence-Centered Design (ECD). Newton et al. (2021) demonstrate the application of ECD to develop assessments that align with the curriculum of introductory high school computer science courses. ECD focuses on beginning with a clear definition of the knowledge, skills, and abilities students are expected to gain from their coursework, followed by creating assessments that directly evaluate these outcomes.

The approach entails specifying the domain-specific tasks that students should be capable of performing, identifying the evidence that would indicate their proficiency, and designing assessment tasks that would generate such evidence. The model further includes an analysis of assessment items for each instructional unit, considering their difficulty, discrimination index, and item type (e.g., multiple-choice, open-ended, etc.). This analysis aids in refining the assessments to gauge student competencies and understanding more accurately.

This model offers a more precise measurement of student learning by ensuring that assessments are closely linked to curriculum objectives and learning outcomes.

Other General Student Indicators

The Exploring Computer Science website, a premier resource for research on indicators of student learning in computer science, identifies several key metrics for understanding concepts within the field:

  • Student-Reported Increase in Knowledge of CS Concepts: Students are asked to self-assess their knowledge in problem-solving techniques, design, programming, data analysis, and robotics, rating their understanding before and after instruction.
  • Persistent Motivation in Computer Problem Solving: This self-reported measure uses a 5-point Likert scale to evaluate students’ determination to tackle computer science problems. Questions include, “Once I start working on a computer science problem or assignment, I find it hard to stop,” and “When a computer science problem arises that I can’t solve immediately, I stick with it until I find a solution.”
  • Student Engagement: This metric again relies on self-reporting to gauge a student’s interest in further pursuing computer science in their studies. It assesses enthusiasm and inclination towards the subject.
  • Use of CS Vocabulary: Through pre- and post-course surveys, students respond to the prompt: “What might it mean to think like a Computer Scientist?”. Responses are analyzed for the use of computer science-related keywords such as “analyze,” “problem-solving,” and “programming.” A positive correlation was found between CS vocabulary use and self-reported CS knowledge levels.

Comparing the Models

Each model discussed provides distinct benefits but converges on a shared objective: to gauge precisely students’ understanding of computer science. The Evidence-Centered Design (ECD) model is notable for its methodical alignment assessments with educational objectives, guaranteeing that evaluations accurately reflect the intended learning outcomes. Conversely, the randomized controlled trial and innovative measurement technique present a solid approach for empirically assessing the impact of instructional strategies on student learning achievements. Finally, the competence structure model offers an exhaustive framework for identifying and evaluating specific competencies within a particular field, like informatics, ensuring a thorough understanding of student abilities. As the field continues to evolve, so will our methods for measuring student success.

References

Daleiden, P., Stefik, A., Uesbeck, P. M., & Pedersen, J. (2020). Analysis of a Randomized Controlled Trial of Student Performance in Parallel Programming using a New Measurement Technique. ACM Transactions on Computing Education20(3), 1–28. https://doi.org/10.1145/3401892

Magenheim, J., Schubert, S., & Schaper, N. (2015). Modelling and measurement of competencies in computer science education. KEYCIT 2014: key competencies in informatics and ICT7(1), 33-57.

Newton, S., Alemdar, M., Rutstein, D., Edwards, D., Helms, M., Hernandez, D., & Usselman, M. (2021). Utilizing Evidence-Centered Design to Develop Assessments: A High School Introductory Computer Science Course. Frontiers in Education6. https://doi.org/10.3389/feduc.2021.695376

Effective Technology Tools for K-12 CS Teachers

Technology plays a crucial role in teaching computer science and programming concepts to K-12 teachers. The most effective technology tools include interactive coding platforms such as Scratch, Snap! and Blockly. These tools provide a user-friendly interface and visual coding blocks, allowing students to learn programming concepts through hands-on activities and projects (Kashif Amanullah & Bell, 2020). Additionally, online learning platforms such as Code.org offer computer science platforms specifically designed for K-12 teachers. This blog examines various technologies used to teach CS in K-12 schools, drawing insights from a comprehensive study on visual programming languages (VPLs) and their suitability across different school levels.

Role of VPLs in K-12 Education:

VPLs like Scratch and ALICE have revolutionized CS education in schools. Scratch, developed by MIT, is particularly effective in elementary education due to its simplicity and interactive environment, making it an ideal tool for introducing programming concepts (Sáez-López et al., 2016). Although not web-based, ALICE has positively impacted all educational levels – elementary, high school, and undergraduate. Its ability to facilitate learning and enhance student confidence makes it an asset in the CS curriculum (Graczynska, 2010). In a 2019 study, do Nascimento et al. concluded that different visual programming languages (VPL) suit different school levels. The study focused on three VPLs: ALICE, Scratch, and iVProg. The findings indicate that Scratch is strongly suitable for elementary education, while ALICE is more appropriate for high school students. iVProg, on the other hand, has indications of suitability for high school and undergraduate levels.  

Enhancing Computational Thinking with Scratch

Studies have shown that Scratch’s block-based programming approach can significantly improve students’ computational thinking skills. Its integration into various disciplines through programming games and projects encourages creative problem-solving and logical reasoning among students (Stewart & Baek, 2023). In a significant study, Scratch was also found to integrate well into other subjects in the curriculum, such as math, science, and even art and history, where students achieved comprehension and application levels in Bloom’s taxonomy (Sáez-López et al., 2016).

Scratch Interface

The advantages of using Scratch in the classroom are that its intuitive drag-and-drop interface simplifies the programming process, allowing students to focus on the logic behind their creations rather than the code syntax. Overall, the visual programming approach via Scratch was effective for developing computational thinking, improving programming skills, enabling the creation of interactive projects, and supporting active learning pedagogies (Sáez-López et al., 2016). This is significant since Sun, Hu, and Zhou (2022) found that although girls in K-12 had higher computational thinking skills, they had more negative programming attitudes, which may impact their continued development in computational thinking. Visual programming may be a good strategic approach to engage females in computer science.

ALICE for STEAM Education

ALICE (which stands for Alice Learning in a Cyberworld Environment) is a free 3D programming platform developed at Carnegie Mellon University. The visual aspect of ALICE makes programming concepts more engaging and hands-on for students. Actions like loops, methods, and events correspond to actual animated motions they can see on screen. This helps concretize abstract coding notions that beginners often struggle to grasp.

ALICE Lists

Graczyńska (2010) highlights several example uses of ALICE targeted at middle school students:

  • Creating videos set to music, with lyrics displayed as subtitles. This combines coding with music appreciation and language arts.
  • Recording narration for animations, like reciting poetry in English or other languages. This boosts public speaking and foreign language skills.
  • Building simple games with sound effects and animations like fire. This makes programming exciting and fun.

After testing ALICE with students, Graczyńska found increased engagement and interest in programming and academics overall. The visual nature of ALICE also helps attract female students to computer science, where they are traditionally underrepresented.

The use of 3D visual programming tools like Alice has shown positive effects on students’ performance and attitude towards computer programming. Al-Tahat (2019) found that teaching visual programming greatly improved understanding of related concepts in object-oriented programming, making it a perfect fit for the intermediate grades.

Challenges and Future Directions:

The adoption of these technologies in K-12 computer science (CS) education has shown promise, yet challenges remain to be addressed. There is substantial evidence that incorporating VPLs into the K-12 curriculum significantly boosts female engagement (Sun et al., 2022; Graczyńska, 2010). Therefore, it is important to focus on course design that appeals to diverse learners, including females and underrepresented minorities. Additionally, ongoing research and development are necessary to keep up to date with technological progress and the changing needs of education (McGill et al., 2023). Sáez-López et al. (2016) have suggested that VPLs should be implemented across various subjects, particularly in social sciences and the arts, where their visual nature can inspire creative projects. Lastly, the successful integration of new programming tools hinges on teacher training and professional development. Teachers need robust support to acquire and apply these technologies effectively.

References

Kashif Amanullah, & Bell, T. (2020). Teaching Resources for Young Programmers: the use of Patterns. https://doi.org/10.1109/fie44824.2020.9273985

Sáez-López, J.-M., Román-González, M., & Vázquez-Cano, E. (2016). Visual programming languages integrated across the curriculum in elementary school: A two year case study using “Scratch” in five schools. Computers & Education97, 129–141. https://doi.org/10.1016/j.compedu.2016.03.003

Graczyńska, E. (2010). ALICE as a tool for programming at schools. Natural Science02(02), 124–129. https://doi.org/10.4236/ns.2010.22021

do Nascimento, M. D., Felix, I. M., Ferreira, B. M., de Souza, L. M., Dantas, D. L., de Oliveira Brandao, L., & de Oliveira Brandao, A. (2019). Which visual programming language best suits each school level? A look at Alice, iVProg, and Scratch. 2019 IEEE World Conference on Engineering Education (EDUNINE). https://doi.org/10.1109/edunine.2019.8875788

Stewart, W., & Baek, K. (2023). Analyzing computational thinking studies in Scratch programming: A review of elementary education literature. International Journal of Computer Science Education in Schools6(1), 35–58. https://doi.org/10.21585/ijcses.v6i1.156

Sun, L., Hu, L., & Zhou, D. (2022). Programming attitudes predict computational thinking: Analysis of differences in gender and programming experience. Computers & Education181, 104457. https://doi.org/10.1016/j.compedu.2022.104457

Graczyńska, E. (2010). ALICE as a tool for programming at schools. Natural Science02(02), 124–129. https://doi.org/10.4236/ns.2010.22021

Al-Tahat, K. (2019). The Impact of a 3D Visual Programming Tool on Students’ Performance and Attitude in Computer Programming. Journal of Cases on Information Technology21(1), 52–64. https://doi.org/10.4018/jcit.2019010104

Teaching Programming with Minecraft Education: A Reflection

Introduction

Integrating innovative tools to enhance learning is essential in the dynamic landscape of computer science education. This term, I embarked on a collaborative journey to weave Minecraft Education into a Programming 11/12 course. Our objective was to enliven the curriculum by presenting programming concepts in a more engaging and interactive manner. This reflection delves into our experiences, with a particular focus on the concept of functions.

Lesson Overview

Our lesson was carefully prepared to guide students through the fundamentals of functions in programming via the Minecraft Education platform. This approach aimed to convert abstract concepts into concrete, relatable experiences, thus making learning both enjoyable and impactful.

The session began with a simple introduction to functions in Minecraft Education using MakeCode, drawing parallels with real-life scenarios to demystify these concepts. The goal was to underscore the significance of reusing code efficiently. For instance, we showcased a function that could construct various parts of a structure, such as walls, roofs, and fences. This hands-on demonstration helped students visualize the workings of functions, deepening their comprehension.

Subsequently, we organized the students into small teams for a series of Minecraft challenges. Each group applied their newfound knowledge to construct farm elements using coded functions. Encouraging students to build barns, animal enclosures, and residential structures, this immersive experience was crucial in reinforcing the lessons imparted and empowering students to explore coding within the game environment. While the MakeCode IDE is freely available online at https://minecraft.makecode.com/,  it is important to note that witnessing the code’s execution within Minecraft Education itself requires a paid subscription for each student (which we lacked for this iteration).

Following the building activities, groups presented their projects, explained their code, and engaged in Q&A sessions. This exercise culminated in the creation of a complete farm ecosystem (with a small amount of manual intervention), facilitating peer learning and evaluating their understanding of the lesson.

The lesson wrapped up with a debriefing segment, which focused the role of functions in streamlining complex coding tasks. We also distributed surveys to gauge the students’ experiences with the lesson.

Reflections and Learnings

Reflecting on the teaching process, I’ve recognized the crucial need for thorough preparation ahead of each class. Although the lesson itself was effective, there are areas where we could have utilized our time more judiciously.

Time Management:

Our planning meetings often veered towards administrative topics, detracting from the core lesson content. This experience has ingrained in me the importance of arriving at meetings well-prepared and with preliminary research completed, to maximize our collaborative efforts.

Technical Challenges:

Establishing a connection to the same Minecraft world across various platforms, such as PC and Mac, presented significant hurdles. This impacted our preparations and underscored the necessity for preemptive compatibility checks for future sessions. The tightly controlled environment of Minecraft Education by Microsoft impeded remote learning, suggesting that Minecraft Education is best suited to in-lab settings. Remote functionality was unreliable, as indicated by non-descriptive connection error messages like “timed out,” and support from Microsoft was less than helpful. The trial version of the software, supposedly available to schools with Microsoft logins, also failed to work, potentially necessitating IT intervention.

Student Engagement:

The lesson garnered positive feedback and high engagement levels, with the practical application of programming concepts within a familiar gaming environment being a key factor in its success. Nonetheless, some students noted that the inability to run the code hindered the debugging process. Ensuring every student has access to the necessary software and hardware will be a priority for future lessons.

The Power of Interactive Learning:

A major insight from this endeavour is the profound impact of interactive learning tools such as Minecraft in teaching intricate subjects like programming. Students were more engaged and assimilated the concept of functions more thoroughly compared to conventional teaching methods.

Conclusion

Incorporating Minecraft into our programming curriculum has been enlightening for students and educators. It has accentuated the significance of preparation, flexibility, and the assurance of technical compatibility to facilitate a seamless learning experience. The positive student feedback and evident boost in engagement and comprehension underscore our conviction in the power of interactive learning tools. As we progress, we are determined to refine our methods, confront the technical obstacles, and seek inventive strategies to render education more captivating and effective.

Teaching Computer Science with Minecraft

Introduction to Minecraft

Minecraft is currently one of the most popular games of 2023, boasting over 140 million monthly active users, according to searchlogistics.com. Despite this popularity, many players overlook that Minecraft offers an engaging and immersive environment for learning terminal commands, programming basics, computational thinking, and even artificial intelligence. ISTE standard 4.3a for coaches indicates that a successful coach should “Establish trusting and respectful coaching relationships that encourage educators to explore new instructional strategies.” So, in this blog post, I will delve into the educational benefits of Minecraft and explore the differences between the Java and Education editions.

While Minecraft is often regarded as merely a game, educators have recognized its potential as a valuable learning tool. At its core, Minecraft is built upon programming concepts. Players use blocks made of various materials to construct anything they can imagine, from simple houses to complex machines that require advanced knowledge of electronics, chemistry, and physics. This encourages computational thinking, creativity, and problem-solving as students work to bring their visions to life.

Concerning programming, Minecraft helps teach fundamental coding concepts, including commands, functions, variables, loops, and conditionals. Students can employ block-based coding or full-fledged programming languages such as Python and JavaScript to automate actions within the game. This hands-on approach to learning captivates students more effectively than traditional coding lessons, as Minecraft provides them with an imaginative space to immediately apply their newfound skills. Creating Minecraft modifications (mods) teaches students how to extend existing programs, a critical programming skill.

Minecraft Versions

Several versions of Minecraft are available for players to choose from, including Minecraft: Java Edition, Minecraft: Bedrock Edition, Minecraft: Education Edition, and Minecraft: Pocket Edition. However, for the specific purpose of our educational analysis, we will concentrate solely on the Java and Education editions. These two versions offer unique features and opportunities for learning that make them particularly relevant in an educational context.

Minecraft: Java Edition

The Java Edition is the original version of Minecraft developed in 2009 by Mojang Studios for Windows, macOS, and Linux, and maintains its popularity among long-time Minecraft players.

The Java Edition offers distinct advantages when teaching advanced computer science concepts due to its “mod-ability” and access to the source code of the game environment. The semi-open-source nature of the Java Edition allows for limitless customization through mods and plugins. Writing mods can illustrate a wide range of advanced programming concepts, including event handling, parallel programming, algorithms, data structures, debugging, and software design patterns. Developing mods not only imparts practical software development skills but also encourages students to show their creativity.

The Minecraft community has produced numerous mods that cater to various lesson plans. For instance, ComputerCraft introduces programmable turtle robots, while RedstonePlus enhances the game with advanced circuitry. The diversity of available mods supports a wide range of educational objectives, not only in CS but other disciplines.

Minecraft: Education/Bedrock Edition

Minecraft: Bedrock Edition was initially released in August 2011 and is particularly advantageous for classrooms with various devices. Bedrock Edition supports mobile devices such as iPads and Android tablets, which many schools already incorporate into their teaching environments. This enables students to start their Minecraft lessons on a classroom desktop computer during the day and seamlessly continue playing on their smartphones or game consoles at home.

However, Bedrock Edition offers less mod support and limited access to code customization. Minecraft Education Edition is a version of Bedrock specifically tailored for classroom use. According to Microsoft, it “typically runs about one full version behind the current Minecraft Bedrock production version” (FAQ: Game Features, 2023).

Advantages of Minecraft Education in the Classroom

One of the most significant advantages of Minecraft Education in a computer science course is its block-based CodeBuilder / MakeCode editor, similar to Scratch or Snap. This editor allows students to drag and drop commands to perform actions in the game. Younger students can learn coding logic and structure by creating houses, gardens, and machines using these visual blocks before transitioning to text-based programming languages like Python or JavaScript.

Another advantage of Education Edition is the teachers’ ability to implement special restrictions, such as limiting chat or preventing students from destroying blocks. These classroom controls create a safe environment for student exploration. Teachers can also switch to spectator mode to observe students and provide feedback; they also have the capability to build worlds and restrict access as needed. Here is a quick start guide for reference.

The Education Edition library offers hundreds of pre-made interactive worlds and lesson plans aligned with computer science curriculum standards (source: https://education.minecraft.net/en-us/resources/computer-science-subject-kit). Teachers can find lesson plans tailored to any grade level, making it much easier for educators to get started with Minecraft compared to building worlds from scratch.

According to research by Bile (2022), their study found that children aged 8 to 10 in a Minecraft education setting were able to solve abstract and complex scientific problems without prior prompting or theoretical knowledge. The game format also helped students retain knowledge better. Vostinar & Dobrota (2022) similarly found that in a primary school class, even though the majority of students had not programmed before in block or Python, they found the lesson enjoyable and easy. Furthermore, according to Nika Klimová et al. (2021), girls in grades 5-10 typically outperform boys in Minecraft education coding challenges, suggesting it may be a valuable tool for increasing diversity in computer science.

Disadvantages of Minecraft

As Vostinar & Dobrota (2022, p. 652) pointed out, there are significant disadvantages to using Minecraft in education. One such drawback is that Minecraft is not free and requires an additional cost per student, which, as mentioned in my previous post, raises ethical concerns about the practice of making students pay for educational software. Another disadvantage is that Minecraft may only appeal to a certain type of student, particularly those with a more creative inclination, potentially excluding students who do not have an affinity for the game.

Furthermore, teachers must become proficient in the game’s mechanics and capabilities to integrate it into the classroom effectively. Given the abundance of “cheats” in Minecraft, more experienced players may find trivial command-line solutions to problems if the teacher is unaware of their existence. Finally, as highlighted by Vostinar & Dobrota (2022), it’s essential to impose adequate constraints on the virtual world, especially when students collaborate, to prevent them from destroying the world with TNT blocks and other mining tools.

References:

Vostinar, P., & Dobrota, R. (2022). Minecraft as a Tool for Teaching Online Programming. 2022 45th Jubilee International Convention on Information, Communication and Electronic Technology (MIPRO). https://doi.org/10.23919/mipro55190.2022.9803384

Bile, A. (2022). Development of intellectual and scientific abilities through game-programming in Minecraft. Education and Information Technologies, 1–16. https://doi.org/10.1007/s10639-022-10894-z

Nika Klimová, Jakub Sajben, & Lovászová, G. (2021). Online Game-Based Learning through Minecraft: Education Edition Programming Contest. https://doi.org/10.1109/educon46332.2021.9453953

FAQ: Game Features. (2023, September 15). Minecraft Education. https://educommunity.minecraft.net/hc/en-us/articles/360047117692-FAQ-Game-Features

Reflecting on a Study of Competitive Programming and Cultural Inclusion

Length of Study

The study is designed to take place over two academic terms, which provides adequate time to collect meaningful data. The inclusion of an initial summer term without competitive programming establishes a baseline for comparison. The second summer term incorporates competitive programming using standardized questions, allowing assessment of this pedagogical approach. The fall term offering adds the dimension of culturally relevant questions, enabling analysis of their impact. Extending the study over multiple terms enables more robust data collection and analysis.

Promoting Active and Engaged Learning

The core content is delivered through weekly lectures focused on programming concepts. The competitive programming contests complement the lectures by providing opportunities to practice applying concepts. Weekly competitive programming contests foster active learning in several key ways. Students must apply conceptual knowledge to solve concrete programming problems. This process reinforces their understanding and helps identify knowledge gaps. The contest format adds an engaging gamification element through scoring, feedback, and peer comparison. Using standardized questions initially assesses whether baseline content needs are being met.

Introducing culturally relevant questions aims to promote better integration of concepts by relating them to students’ cultural knowledge and experiences. Having students co-create contest questions in the fall term further activates learning. They must think critically to develop culturally relevant problems that integrate with the content. This approach promotes deeper engagement with the material and encourages collaboration with classmates, allowing students to take ownership of their learning.

Addressing Teachers’ Needs

The study aims to provide teachers with insight into using competitive programming and culturally relevant pedagogy. The data collected will help determine the effectiveness of these approaches in an international educational setting. Instructors will gain an understanding of how competitive programming engages students versus standardized practice problems. They will also see whether student-created culturally relevant questions increase participation and motivation. The study addresses teachers’ needs for effective and inclusive instructional strategies. They will gain practical knowledge from the comparative data on different contest designs.

Promoting Collaborative Participation

Collaboration is encouraged through the group development of culturally relevant contest questions. Students can brainstorm and build on each other’s ideas, which fosters teamwork. Producing questions from diverse cultural perspectives requires working together. Students are also given the choice of problem-solving in teams. Students can motivate each other and strategize in groups for the competitions. Their scores are tracked on a collective leaderboard which reinforces the collaborative element. The shift from individual to team contest creation necessitates and enables productive collaboration.

The multi-term study design, interactive contest format, customized problems, and collaborative elements demonstrate an interesting pedagogical approach that promotes engaged and inclusive learning. The results should provide valuable insights for computer science educators.

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

Culturally Responsive Computing Approaches

Introduction

Culturally responsive computing (CRC) is an approach to designing technology education programs and tools that responds to the cultural contexts of learners and represents an intersection between computer science, education, and sociocultural understanding. It has roots in the extensive and well-studied area of culturally responsive teaching (CRT), which argues that empowering diverse students requires building on the cultural assets they bring to the classroom. CRC translates fundamental principles of CRT to computer science education and ensures that the cultural experiences of learners, particularly those from underrepresented groups, are valued and used to enhance their learning experience. In this blog post, I will uncover some examples of research that has established the critical role CRC plays in promoting inclusion, diversity, and equity in the computer science classroom.

History of CRC

Foundational concepts for CRC were established between the early and mid-1990s. Henderson (1996) argued that instructional design models for teaching technology must consider diverse learners’ cultural orientations. Henderson proposed the Multiple Cultural Model for instructional design, which sheds light on the various dimensions that influence how diverse cultural groups interact with multimedia learning environments. For instance, some cultures might lean towards cooperative learning, while others favour competition.

In 1999, McLoughlin outlined features necessary for culturally appropriate online learning for Indigenous Australian students, emphasizing participatory tasks and problem-based dialogue. Subsequently, Lee (2003) presented a framework designed to ensure that computing tools and environments respond effectively to the prior knowledge, perspectives, and motivations of minority learners. This framework was shown through software that facilitated literacy development among African American students, thereby demonstrating the effectiveness of this approach.

Limitations of the CRC Framework

Drawing on their programs, Scott, Sheridan, and Clark (2014) implemented their unique CRC programs, critiquing the limitations of traditional asset-based approaches and advocating for direct cultural responsiveness. Their arguments highlighted the following points:

  1. All youth possess the capability for digital innovation, thereby challenging deficit perspectives.
  2. Learning environments should promote transformational uses of technology.
  3. Paying attention to intersectional identities can foster innovation in computing.
  4. Students should utilize technology to reflect on their complex identities.
  5. Success should be defined by creating for community benefit rather than merely acquiring skills.

They provided examples such as critiquing biased media representations and encouraging students to create media that affirmed their identities. The implications of their arguments include the need to revise methods and measures, conduct intersectional research, and promote collaboration between computer experts and communities. CRC can potentially address digital equity through innovation, especially when implementations consider students’ multifaceted identities.

Culturally Responsive Computing Tools

Reflecting on these limitations, Morales-Chicas et al. (2019) conducted a comprehensive study on the tools and strategies employed in K-12 computing education for CRC. They identified the following emergent themes:

The first was sociopolitical consciousness-raising, which pertains to lessons that address real-world issues and promote activism. For example, COMPUGIRLS is a CRC program for adolescent girls of colour from underserved communities. Drawing on principles of culturally responsive teaching, including asset building, connectedness, and reflection, the program equips girls with the technological skills needed to research and address community issues. Participants reported increased confidence, the development of identities as technology innovators, and a feeling of empowerment from creating projects that address social justice issues.

Another theme is incorporating heritage culture through artifacts, like designs and symbols. Examples include programs encouraging student-created media to challenge stereotypes and software that builds on cultural practices, such as hair braiding patterns (Eglash & Bennett, 2009). This builds community connections, which involve community members sharing cultural knowledge and motivating students to engage actively.

Vernacular culture employs local cultural practices that are relevant to students. An example is the American Distributed Multiple Learning Styles Systems (AADMLSS), a programming tool designed to engage African American students using math and characters representing their vernacular culture. Studies have shown a surge in youth engagement due to the high cultural relevance of this approach.

Lastly, the theme of lived experiences connects to students’ identities and real-world contexts. For instance, Scott & White (2013) argued that CRC should consider students’ lived experiences and encourage self-representation, evidenced by a youth exercise in COMPUGIRLS on identifying gender biases in avatar creation. Also, by introducing personalized elements into a course, students can analyze this aspect of the computing experience critically, further enabling the customization of computing projects.

Conclusions

Studies have scrutinized the implications of the developments in CRC. For assessment, this necessitates a move beyond narrow measures such as grades or test scores to capture complex identity outcomes (Scott & White, 2013). From a methodological perspective, it requires attention to intersectionality, considering how factors such as race, gender, and class shape technology experiences (Scott, Sheridan & Clark, 2014), more research is required to understand its effects on diverse populations and domains. In practice, CRC should adopt a multi-disciplinary stance, adopting collaboration between communities, social scientists, and computer scientists (Eglash et al., 2013).

Therefore, we call on computer science educators, tech companies, and community organizations to take the following actions:

  • Allow greater curriculum flexibility for CS instructors to adapt courses to their students’ cultures and identities, to discover the intersects for each student.
  • Develop alternative metrics focused on identity development, community impact, and equitable outcomes to complement skills-based measures.
  • Increase engagement of families and communities as partners in developing computing programs.
  • To exchange knowledge, Foster collaboration (through incentives) between tech companies, social scientists, and CS educators.

References

McLoughlin, C. (1999). Culturally responsive technology use: developing an on‐line community of learners. British Journal of Educational Technology30(3), 231–243. https://doi.org/10.1111/1467-8535.00112

Lee, C. D. (2003). Toward A Framework for Culturally Responsive Design in Multimedia Computer Environments: Cultural Modeling as a Case. Mind, Culture, and Activity10(1), 42–61. https://doi.org/10.1207/s15327884mca1001_05

Henderson, L. (1996). Instructional design of interactive multimedia: A cultural critique. Educational Technology Research and Development44(4), 85–104. https://doi.org/10.1007/bf02299823

Morales-Chicas, J., Castillo, M., Bernal, I., Ramos, P., & Guzman, B. (2019). Computing with Relevance and Purpose: A Review of Culturally Relevant Education in Computing. International Journal of Multicultural Education21(1), 125. https://doi.org/10.18251/ijme.v21i1.1745

Eglash, R., & Bennett, A. (2009). Teaching with Hidden Capital: Agency in Children’s Computational Explorations of Cornrow Hairstyles. Children, Youth and Environments19(1), 58–73. https://doi.org/10.1353/cye.2009.0024

Scott, K. A., & White, M. A. (2013). COMPUGIRLS’ Standpoint. Urban Education48(5), 657–681. https://doi.org/10.1177/0042085913491219

Scott, K. A., Sheridan, K. M., & Clark, K. (2014). Culturally responsive computing: a theory revisited. Learning, Media and Technology40(4), 412–436. https://doi.org/10.1080/17439884.2014.924966

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

Competitive Programming Tools in the Classroom

Introduction

For young and upcoming computer scientists, competitive programming can be a powerful tool to hone essential skills. It helps sharpen problem-solving and analytical thinking abilities and provides the creative opportunity to experiment with algorithms in a safe and structured environment. With that said, introducing competitive programming into the classroom curriculum can open exciting opportunities for students of all ages, from elementary school through high school and beyond. In this blog post, we’ll take a closer look at what competitive programming is, why educators should consider bringing it into their classrooms and how they can do so successfully.

Competitive Programming and its Benefits for Students

One critical benefit of competitive programming is the development of problem-solving skills. Competitive programming challenges students to solve complex algorithmic and logical problems under pressure. This process helps enhance critical thinking and analytical skills and encourages students to approach problems from multiple angles. These skills are essential not only for programming but also for handling challenging situations. Students participating in competitive programming are exposed to different programming languages, tools, and mathematical methods, which they apply to discover new concepts and techniques. This exposure allows students to identify their strengths and interests in software development and tailor their learning to focus on these areas.

The interactive nature of competitive programming creates an ideal platform for students to develop teamwork and collaboration skills. In a team contest, students can organize themselves into teams during competitions and work together to solve problems. This process fosters a culture of collaboration, mutual respect and helps to build teamwork. Students can learn from each other to improve their coding skills and tackle complex problems requiring the cooperation of different skill sets. The competitions are rigorous and challenging, but successfully solving a difficult problem can increase a student’s confidence, self-esteem, sense of accomplishment, and motivation to participate in more challenges (Macgowan, 2015). This self-confidence can extend beyond the competition to other areas of their lives, whether in the classroom, workplace, or personal lives.

We are, of course, leaving out the most obvious – competitive programming can enhance a student’s career in the tech industry. Competitions can exhibit a student’s talent and abilities to a network of potential recruiters and employers such as Google, Microsoft, Facebook, and Apple, to name a few. Participating in competitions can increase networking opportunities, learn about job positions and companies, and prepare for recruitment. Tech giants such as AWS, IBM, and Huawei frequently sponsor international programming competitions such as ACM’s International Collegiate Programming Contest. The skills learned through competitive programming, including problem-solving, teamwork, and collaboration, are highly valued in today’s workplace and in-demand careers such as software development, data analysis, and project management.

Integrating Competitive Programming in the Classroom

Competitive programming can be a powerful learning tool for students, but finding the right resources can be overwhelming. To ensure that your students get the most out of their competitive programming lessons, it’s essential to choose resources that are challenging yet accessible, engaging, and proven to deliver results.

There are several useful resources to consider, such as textbooks, coding challenges, online forums, and programming contests. Seeking advice from experienced professionals and replicating past contests can also be helpful. When selecting resources, it’s important to consider the age appropriateness of the material and adjust the difficulty level to match the students’ skills.

Younger students can benefit from beginner-based coding platforms such as Snap (https://snap.berkeley.edu/) , CodeCombat (https://codecombat.com/) , and Tynker, as well as game-based projects from the Code Olympiad (https://www.codeolympiad.id/). These tools contain less competition and is geared more towards learning.

For middle or high school students, resources like The USACO Guide (https://usaco.guide/general/intro-cp?lang=cpp) and alGIRLithm (https://algirlithm.org/) are gentle introductions to competitive programming.

For even more advanced students, tools like vjudge (https://vjudge.net/) can be used to curate online judges and create custom contests for practice assessments, icebreaker games, or class exercises. With these resources, teachers can engage student participation, foster collaboration, and add an exciting twist to classroom activities. Watch the following video for a simple workflow on how to create a classroom contest:

Textbooks, coding challenges, online forums, and programming contests are some useful resources to consider. Seek advice from professionals in the field who use technical interviews to find the right resources for your classroom. Replicating past contests from experienced colleagues is also useful. To identify resources for competitive programming in the classroom, it is important to look for age-appropriate resources. For example, middle or high school students may benefit from resources like The USACO guide and alGIRLithm, which are gentle introductions to competitive programming. Additionally, it is important to consider the material’s difficulty level

Conclusions and Recommendations:

As we discussed in an earlier post, gamified activities, when properly used in the classroom, create an engaging and enjoyable learning experience by adding elements such as scoring, rewards, and checkpoints. Adding these features within competitive programming can help students enjoy the process of learning new algorithms, data structures, and problem-solving techniques, making it a rewarding and enjoyable experience. There must also be an element of progress in the contest. A strong sense of progress is one of the most significant benefits of gamification. Game elements such as ranks, badges, or community recognition can be incredibly motivating. In a team contest, competitive programming can help encourage collaboration and networking through various social features, such as leaderboards and chat rooms. Discussing strategies and approaches with other coders can help students get support and feedback on their work.

It’s worth noting that, despite its benefits, competitive programming is not suitable for all students. As the competitive programming community is filled with members who prioritize winning over all else and devote excessive amounts of time to these platforms, such people struggle to balance their personal and professional lives. Furthermore, competitive programming does not reflect real-world programming, as the development workflows and responsibilities involved are very different (mehulmpt, 2020). Instead, it serves as a means to an end. If you aren’t enjoying the ride, there’s a chance you won’t enjoy the outcome, either. Thus, it is not advisable to use competitive programming as an assessment tool for assignments or exams, as this would only add stress and increase feelings of competitiveness among students.

References

Macgowan, M. J., & Wong, S. E. (2015). Improving Student Confidence in Using Group Work Standards. Research on Social Work Practice27(4), 434–440. https://doi.org/10.1177/1049731515587557

‌mehulmpt. (2020, June 27). Mythbusting Competitive Programming – You Don’t Need to Learn It. FreeCodeCamp.org. https://www.freecodecamp.org/news/mythbusting-competitive-programming/

Zhan, Z., He, L., Tong, Y., Liang, X., Guo, S., & Lan, X. (2022). The effectiveness of gamification in programming education: Evidence from a meta-analysis. Computers and Education: Artificial Intelligence3, 100096. https://doi.org/10.1016/j.caeai.2022.100096

Computer Science Curriculum in B.C.

Introduction

As an instructor of computer science at Simon Fraser University, one of my roles involves assessing the level of computer science knowledge possessed by high school graduates and the ease of their transition into higher education. These assessments help the school to evaluate the adequacy of our university’s introductory computer science courses. Unfortunately, we have observed that a considerable number of students are struggling with our first-year programming courses.

In this article, I will explore the recommendations made by the British Columbia government regarding the computer science field in grade schools. Specifically, I will investigate how these recommendations are being implemented in schools across the Lower Mainland and evaluate whether they are effective in preparing students for university-level computer science coursework. By doing this, I hope to shed light on the current state of computer science education in our region and make recommendations for improving the preparation of students for university-level computer science coursework.

Computer Science Curriculum Recommendations in K-12 Schools

There are two ways to incorporate CS concepts into a grade’s curriculum: as an entire course or as an integration of existing materials. A common misconception about computer science is that it has a bi-conditional relationship with coding, that they are one and the same. In fact, a well-designed curriculum must also include critical thinking, problem-solving, teamwork, communication skills, technical writing skills, and testing methodologies, among other vital skills. Successful implementation of a computer science curriculum not only contains coding but also equips students with other diverse tools for their future careers.

The BC government website (https://curriculum.gov.bc.ca/curriculum/adst) recommends that students from kindergarten to grade 3 are introduced to computer science basics, such as algorithms, sequencing, and problem-solving concepts, through interactive, “non-computer” activities. In grades 4-5, students move on to learn about block-based programming, granting them an entry into coding and the ability to create interactive digital media. In grades 6-7, students now apply their computational thinking skills to solve real-world problems using charts, lists, diagrams, and arrays with an introduction to computer architecture and hardware, responsible computer use, and visual programming. Finally, in grades 8-9, students learn about basic software instructions with algorithms that others can repeat, debugging algorithms, elementary modularization, binary data representation and programming languages, including visual programming.

In Grade 10, students will delve into topics such as security risks, debugging, networking, social implications, digital literacy and citizenship, and planning and writing simple programs (including games). In a separate course, it is recommended that students explore Computer Applications that center on understanding the importance of user experience. computer hardware, peripherals, internal and external components, standards, intermediate features of business applications, including word processing, spreadsheets, and presentations, operating system shortcuts and command line operations.

In addition, the B.C. government recommends a Web Development 10-course covering design opportunities, HTML and CSS, domain and hosting, copyright laws and Creative Commons usage protocols, ethics of cultural appropriation, security and privacy, and database management. While some of these areas may appear outdated, they still offer a solid understanding of web standards and communications.

In grades 11-12, students can enroll in Computer Programming 11 and 12, where they will learn various programming skills. These skills include the design cycle, error handling, debugging, problem decomposition, reading and altering code, pair programming, programming constructs such as input/output, conditions, and loops, algorithm design, functions, classes, pre-built libraries and their documentation, inline commenting to document source code, use of test cases to detect logical or semantic errors and software ethics.

In general, the suggested curriculum appears to be quite ambitious, and I have concerns about the extent and practicality of the material taught in the classroom. Several of the topics covered are typically introduced in second-level programming courses at the university level. If the high school curriculum can provide a sufficient depth of understanding, it would establish a strong foundation for many students, enabling them to tackle more advanced computer science courses without difficulty.

CS Curriculum implementations

Code.org (https://studio.code.org/courses?view=teacher) is the leading resource for computer science education, offering an excellent and well-designed curriculum to introduce students to computer science at all grade levels.

For elementary school students (grades K-5), Code.org provides CS Fundamentals. This program includes “unplugged” non-computer activities to teach computational thinking, problem solving, programming concepts, and digital citizenship.

The middle school (grades 6-8) curriculum, known as Computer Science Discoveries, builds upon the elementary school program by introducing students to more advanced concepts at an intermediate level. These include web development, communication, and problem-solving.

For high school students (grades 9-12), Code.org offers more specialized courses in computer science for students who wish to dive deeper into the subject. These include physical computing, big data, privacy, and algorithms, and advanced placement (AP) courses in Java for more advanced students.

Code.org also offers professional development courses for educators to help them effectively teach computer science. The curriculum and courses provided by Code.org are designed to help students develop computational thinking and coding skills while broadening their understanding of computer science.

Out of the 37 public high schools in Burnaby, Surrey, and New Westminster, only 4 schools use code.org as a guide, and these schools are all associated with the Advanced Placement (AP) programs. These numbers suggest that schools are aware of the usefulness of code.org materials but need more staff to implement the courses. There needs to be a standardized curriculum across these schools.

For example, the Burnaby High School website describes Computer Science 10-12 as “an introductory programming course for students with no experience.  Learn to create video games for your phone, tablet, computer, or the web.” This description is very vague and suggests that these courses do not come close to implementing the recommendations set out by the B.C. government. Other schools in Burnaby do not even offer Computer Science 11/12 courses. In contrast, New Westminster Secondary offers Computer Programming 11/12, which fully implements the government’s recommendations and more. These courses should be AP courses, depending on the depth of coverage. The difference in offerings between the two school districts is concerning for students entering higher education computer science studies as it may result in significant differences in programming knowledge.

I attempted to reach out to over 20 Computer Science teachers from different schools in the New Westminster and Burnaby areas, but unfortunately, I did not receive any responses from them. Unfortunately, there is a lack of motivation and interest in enhancing their teaching methods in CS courses. In a recent conversation with Shannon Thissen, the Regional Administrator of Educational Technology and Computer Science in Capital Region ESD 113, she confirmed that this is a common issue in all communities. She suggested that CS mentorship and coaching could alleviate teachers’ fears and uncertainties about teaching the subject.

Conclusion

The BC government’s and code.org’s recommendations for computer science education are ambitious but achievable. Higher education instructors and industry leaders should collaborate with high school teachers to strengthen and standardize the various tools and workflows currently taught in the CS curriculum.

In subsequent posts on this topic, I plan to explore various initiatives and reach out to more teachers throughout BC to gather more specific information on the curriculum and materials being taught in classrooms. Additionally, I aim to investigate the differences in implementing CS 10, 11, and 12 courses in schools across BC. It would also be interesting to compare the needs of schools in the lower mainland, which are primarily middle to upper-middle class, with those in interior communities. By doing so, we can determine if there is a significant discrepancy in the quality of computer science education and explore potential solutions to bridge the gap.