Incorporating Competitive Programming into a Beginner Programming Course

Introduction

Driven by the increasing automation and digitalization of virtually every workflow, programming has become an indispensable part of our lives. As a result, introducing programming at the earliest stage of education has become a hot topic of discussion among educators and academics alike.

A particular area of interest is the concept of competitive programming (CP). Long viewed as a niche domain, a small group of enthusiasts often pursue CP to challenge their coding capabilities; many faculty have challenged the area as an unnecessary part of computer science. However, recent research underscores the potential of competitive programming as a useful pedagogical tool, especially in the context of introductory programming courses. This blog post will discuss the results of various studies that have been conducted on incorporating CP into a beginner’s programming course. I’ll review existing studies on integrating CP into intro-level programming courses, examining its effects on learning outcomes, student engagement, and skill acquisition. In addition, I will also propose some areas of CP that require further research.

Understanding Competitive Programming

Competitive programming is a mind sport, like chess and bridge, that involves participants competing to solve algorithmic problems as quickly and efficiently as possible. The ACM ICPC (Association for Computing Machinery – International Collegiate Programming Contest) is one of the world’s oldest, largest, and most prestigious programming contests, which started in the 1970s. Today, it has grown to involve tens of thousands of participants, attracting the world’s top Computer Science universities.

Several elements define each problem in the contest. First, there’s a problem statement describing the issue the team needs to solve. Next are the input and output specifications, which explain the type of data the team’s program should accept and produce. Thirdly, sample inputs and outputs are given to help the team understand the problem. Finally, constraints are provided to outline the maximum size or other limitations of the inputs and the required efficiency of the solution.

The contest is scored based on the number of problems solved and the time penalty. The number of problems solved is the most critical factor; the more problems a team solves, the higher their rank will be. Teams are primarily ranked by the number of problems they have solved. To break ties among teams who have solved the same number of problems, the ICPC uses a time penalty calculated from the beginning of the contest to the time of the first correct submission, with an additional penalty added for each incorrect submission. The team with the shortest total time is ranked highest.

The Impact of Competitive Programming on Beginners

Studies such as those conducted by Moreno et al. (2018) and Bandeira et al. (2019) employed this scoring system and contest setup to engage first-year students in programming classes. Both studies found that students introduced to competitive programming in their first year demonstrated a superior understanding of programming principles compared to those who did not. These students exhibited faster problem-solving abilities, improved code efficiency, and an increased capacity to work under pressure. Additionally, these students reported higher retention of material and reduced difficulty in grasping programming concepts.

However, not all studies concluded that CP led to improved performance. Coore and Fokum (2019), facing a lack of teaching assistants and quality feedback in first-year programming courses, employed a system of weekly competitive programming competitions to reinforce the week’s material. Their study found that while using competitive programming in assessments did increase student engagement and interest, it did not enhance the overall performance of the first-year students.

The Challenges

While CP introduces students to the rigours and excitement of coding under constraints, it’s important to recognize that CP cannot address every aspect of introductory programming. Also, certain facets of CP, such as its pace and competitive element, may only suit some learners.

Astrachan (2004) has pointed out that competitive programming only allows students to delve into key areas such as Object-Oriented Programming (OOP) design principles and enhancing code quality. CP emphasizes speed and efficiency, often overlooking the importance of well-structured, maintainable code, a crucial aspect in real-world development.

While competitive programming can inject a sense of competition into the classroom, it’s important to remember that it’s not a one-size-fits-all solution. The competitive aspect of CP may be intimidating for some students, leading to heightened anxiety and stress. This could, in turn, hinder learning and deter participation. Moreover, the pace of competitive programming, which requires swift comprehension of problem statements and speedy code implementation, may only cater to some learning styles. Some students may require more time to thoroughly grasp concepts and develop robust solutions, which could make the fast-paced environment of CP feel overwhelming.

Given these characteristics of CP, it’s clear that it should not be used as the sole determinant in course assessments. Relying too heavily on CP for grading could inadvertently favour students who possess abilities unrelated to computer science, such as high reading speed and fast typing. These intangibles can be advantageous in a competitive programming environment but have little relevance to a student’s understanding of computer science principles or their potential as a programmer.

Future of Competitive Programming in Classrooms

Although much research has been done involving introducing competitive programming into the classroom, little work explores the impact of cultural relevance in problem-setting, the role of artificial intelligence (AI) in integrating CP, and how CP interacts with various cultural and social intersections in the academic sphere.

The classroom is often characterized by a variety of cultural and social intersections. Incorporating CP in such a setting prompts us to consider how it might affect the likeability, acceptability, and academic performance across these intersections. Is CP equally appealing and accessible to students of different cultures, genders, or social backgrounds? How might the competitive nature of CP impact the dynamics of these intersections? Delving into these questions would allow us to devise strategies to ensure a more equitable and inclusive learning environment.

A unique feature of competitive programming is its creative liberty in problem-setting. This opens the possibility of integrating culturally relevant problems. Introducing programming problems referencing students’ home countries or cultures could make the learning experience more relatable and be a powerful tool to increase engagement among international students. However, the impact of such an approach is yet to be fully understood. How might culturally sensitive problems influence students’ interest and engagement? Could they enhance learning outcomes, or could they unintentionally alienate students who do not share the same cultural background?

Artificial Intelligence offers exciting possibilities in CP. For instance, large language models such as ChatGPT can assist in problem setting, which is typically a significant demand on an instructor’s time. AI-based tools could also serve as programming partners for first-year students, providing personalized assistance such as debugging help or hints for specific problems during a contest. This could supplement the responses from auto-grading judges, which is currently limited to categorized feedback that can sometimes be vague. This approach increases access to individualized learning support and mitigates common challenges associated with competitive programming, such as anxiety and intimidation. However, areas that require further exploration include the effectiveness of such tools and the best strategies for integrating them into the learning experience.

References

Moreno, J., & Pineda, A. F. (2018). Competitive programming and gamification as strategy to engage students in computer science courses. Revista ESPACIOS39(35).

Bandeira, I. N., Machado, T. V., Dullens, V. F., & Canedo, E. D. (2019, October 1). Competitive programming: A teaching methodology analysis applied to first-year programming classes. IEEE Xplore. https://doi.org/10.1109/FIE43999.2019.9028518

Astrachan, O. (2004). Non-competitive programming contest problems as the basis for just-in-time teaching. https://doi.org/10.1109/fie.2004.1408553

Coore, D., & Fokum, D. (2019). Facilitating Course Assessment with a Competitive Programming Platform. Proceedings of the 50th ACM Technical Symposium on Computer Science Education. https://doi.org/10.1145/3287324.3287511

Computer Science Curriculum Integration for K-9 Teachers

Introduction

With a rapidly advancing world and integrating more technology into life, it has increasingly become evident to parents, teachers, and students alike that technological literacy is essential to primary education. Parents are pushing for increased computer science instruction in elementary schools as they realize how vital this knowledge will be in preparing their children for success beyond grade school.  According to code.org (Computer Science Education Stats, n.d.), 90% of parents want their children to study computer science, but only 53% of high schools offer it in their curriculum. Research has also shown that students who take computer science courses in high school are 17% more likely to pursue higher education, with even higher percentages observed among traditionally marginalized populations such as females and Black and Latino students (Brown & Brown, n.d.).

While computer science courses provide fundamental skills like coding and web design, their significance extends far beyond that. Understanding technology equips students with data analysis capabilities and problem-solving skills applicable across various fields, extending beyond digital work environments. Consequently, many believe it is crucial to prioritize teaching computer science concepts. This post outlines my efforts to understand the computer science curriculum’s current needs and promote computer science education among elementary school teachers in British Columbia.

Assessing Current Needs

According to Dr. Shannon Thissen, Regional Administrator for Educational Technology and Computer Science Teaching and Learning in Capital Region ESD 113 in Washington, integrating computer science concepts into the curriculum poses significant challenges. Dr. Thissen mentions that many untrained teachers express concerns and seek guidance. The primary obstacle is teachers’ fear of the unknown, and overcoming this fear is crucial. Several programs, including those offered by code.org, provide free resources for teachers. However, the participation of schools in these programs in British Columbia remains limited. Dr. Thissen also highlights that teachers may hesitate to incorporate such programs into their curriculum if they are not mandated.

In a previous post, I discussed the inconsistency of computer science programs in grade schools across British Columbia, particularly emphasizing the needs of interior and rural areas. While I faced difficulties connecting with schools that desired my services, I recently connected with a Programming 11/12 teacher in Kamloops. I had the opportunity to speak to her class, providing valuable insights into the needs of both teachers and students. Students showed great interest in game development and 3D animation. Despite being a beginner-level class, students had diverse backgrounds in the subject, with some having significant experience with Unity while others struggled with the early stages of block programming. However, their shared enthusiasm for the subject validated studies showing that a majority of students enjoy computer science (Computer Science Education Stats, n.d.). This highlights the need for increased promotion of computer science in the earlier grades to nurture this enjoyment.

Currently, I am collaborating with John Knox Christian School, which is revamping its computer science and technology curriculum. Working with the Director of Curriculum and Computer Science, we are developing a series of workshops to assist K-9 teachers in integrating computer science into their classrooms. This collaboration is an excellent opportunity as John Knox controls its curriculum from K-12, enabling longer-term assessment of student success through the workshops with the same group of students.

Project Design

The central portion of the project is divided into four phases: Assessing Needs, Planning and Foundations, Integration, and Reflection.

Assessing Needs:

To ensure alignment with the school’s desired outcomes and address the specific needs of K-9 teachers, a survey will be created and distributed to all K-9 teachers. The survey aims to gather information on teachers’ objectives, knowledge levels, and areas of interest in computer science. The survey includes choices for dedicated topics such as programming, computational thinking, artificial intelligence, game development, and computer hardware. The project will tailor its objectives and content to meet the needs and interests of the teachers. The survey will be sent out during the first week of summer break.

Planning and Foundations:

This phase involves conducting a workshop covering computer science fundamentals, including vocabulary, problem-solving, and demystifying computer science. The workshop will also focus on integrating hands-on activities for teachers to experience and practice computer science concepts firsthand. Teachers will be guided in designing activities that promote problem-solving, collaboration, and critical thinking skills. Additionally, resources such as coding platforms, educational apps, and lesson plans will be provided to support teachers in implementing computer science activities beyond the workshop. By the end of the workshop, teachers should have a plan to incorporate computer science concepts into an existing lesson. This workshop is scheduled for the first professional development day in September 2023.

Integration:

Teachers will execute their plans to integrate computer science concepts into the classroom during the integration stage. One strategy for this stage is to have coaches co-teach a computer science lesson alongside the classroom teacher. Initially, the director and I will act as coaches, but the plan is to train coaches for future iterations. Co-teaching allows the teacher to observe and learn from the coach’s expertise and experience, helping teachers gain confidence and deepen their understanding. The coach can help guide students through hands-on activities and will provide positive reinforcement, celebrate teachers’ achievements, and acknowledge their efforts in integrating computer science concepts. In addition to co-teaching, coaches will observe regularly and provide teachers with constructive feedback. Classroom observations, either in person or through video recordings, will be conducted to assess the implementation of computer science lessons and the effectiveness of teaching strategies. Coaches will then provide feedback, highlighting strengths and offering suggestions for improvement. This feedback loop will enable teachers to reflect on their practice, refine their instructional techniques, and make continuous progress in integrating computer science effectively.

Reflection:

Integration is ongoing, and teachers require continued support beyond the initial stages. Follow-up meetings, workshops, or online forums will be organized to facilitate knowledge sharing, questions, and further guidance. These support mechanisms will help sustain the momentum and provide teachers with ongoing professional development and collaboration opportunities. Coaches will curate and share relevant resources, including lesson plans, coding activities, and best practices, to further support teachers’ integration efforts. This stage is scheduled for the third professional development day in November 2023.

Analyzing the Design

Using Adria Steinberg’s (1998) six A’s of evaluating project design, my proposed project aligns with these principles, ensuring the successful integration of CS into K-9 classrooms.

Academic Rigor: The project emphasizes challenging and intellectually stimulating CS content. It provides opportunities for students to engage in practical problem-solving, critical thinking, and analytical reasoning. The project also encourages teachers to adopt a different mindset when teaching CS.

Authenticity: The project provides real-world contexts and experiences that connect CS concepts to students’ lives and interests. It includes relating CS to authentic scenarios, which enhances student motivation and engagement in other subjects. By establishing these connections, the project makes CS more relevant and meaningful to students.

Applied Learning: The project emphasizes the hands-on application of CS knowledge and skills. It encourages teachers to apply CS-related skills to different activities in the classroom. This approach allows students to experiment, problem-solve, and apply CS principles in real-world contexts.

Active Exploration: The project encourages students to explore CS concepts through inquiry-based and self-reflective learning. It creates an environment that nurtures teachers’ and students’ curiosity, exploration, and independent thinking; this fosters a sense of ownership in their CS learning journeys.

Adult Relationships: The project recognizes the importance of fostering supportive and meaningful connections between students and adult mentors or educators. By incorporating coaches or mentors into the framework, the project provides students (and teachers) opportunities to interact with CS professionals, experts, or mentors. These interactions offer guidance, share real-world experiences, and serve as role models for students.

Assessment: The project includes an assessment plan to evaluate student learning and program effectiveness. It incorporates post-integration surveys and other assessment strategies to measure the impact of CS integration on student learning outcomes. Gathering feedback from stakeholders informs program improvements and ensures ongoing effectiveness.

Next Steps:

To effectively integrate computer science into K-9 classrooms, conducting one or two workshop iterations is needed. This allows for refinement and improvement of the workshop content and delivery based on feedback and insights from the initial sessions. During each iteration, it is important to collect feedback from participating teachers. Assessing the teachers’ comfort levels with integrating computer science concepts and their perceived efficacy in implementing the learned strategies in their classrooms will help gauge the workshop’s effectiveness. Additionally, student learning outcomes can be evaluated through pre- and post-workshop assessments to measure students’ knowledge growth, skills development, and attitude toward computer science. Comparing these assessments will provide evidence of the workshop’s impact on student learning.

Once the initial iterations of the workshop have been conducted and evaluated, the next step is to engage rural area schools with a more concrete plan. Building on the lessons learned and feedback from the initial workshops, it is essential to develop a targeted approach specifically tailored to the needs and challenges of rural schools. Further changes to the workshop may include solutions to overcome unique barriers such as limited resources, infrastructure challenges, or teacher training opportunities. Designing the workshop to accommodate these conditions will increase its relevance and effectiveness in rural settings.

If the workshop successfully enhances teacher comfort levels and promotes student learning, developing a Professional Development Program (PDP) at the university is an excellent opportunity. A PDP would offer a more structured and comprehensive training program for teachers seeking to integrate computer science into their K-9 classrooms. The Education Department can collaborate with the School of Computing Science and instructional design experts to design a robust PDP curriculum. This curriculum should address the specific needs of teachers, providing them with theoretical knowledge, practical skills, and ongoing support to integrate computer science concepts into their classrooms effectively.

References

Computer Science Education Stats. (n.d.). Code.org. https://code.org/promote/stats

Brown, E., & Brown, R. (n.d.). The Effect of Advanced Placement Computer Science Course Taking on College Enrollment. http://www.westcoastanalytics.com/uploads/6/9/6/7/69675515/longitudinal_study_-_combined_report_final_3_10_20__jgq_.pdf

CS Journeys Resources: Mentorship and community. (n.d.). Code.org. Retrieved June 3, 2023, from https://code.org/beyond/mentors-and-community

Steinberg, A. (1998). Real learning, real work : school-to-work as high school reform. Routledge.

K–12 Computer Science Framework. (n.d.). K12cs.org. https://k12cs.org/

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