Supporting non-majors in introductory computer courses

The article titled “Exploring Relations between Programming Learning Trajectories and Students’ Majors” https://dl.acm.org/doi/fullHtml/10.1145/3674399.3674497 investigates how students from various academic disciplines learn programming in a compulsory introductory programming course consisting of 75 students, with 40 majoring in CS and 35 in non-CS majors. “They were all freshmen without prior programming experience. Considering their similar scores of entrance exam to this university, it can be assumed that their levels of mathematical logic and computational thinking were roughly comparable”.

The authors note that “an increasing number of non-computer science students are now engaging in programming learning. However, they often struggle in early programming courses. The researchers analyzed data from students’ learning processes to understand how their major influences their learning journey in programming.

The study found that students’ backgrounds and areas of study can affect how they approach and progress in learning programming. They suggest:

  1. Making Programming Relevant: When teaching programming to students who aren’t majoring in computer science, it’s important to connect the lessons to things that are important to them. For example, showing how programming can be used in art, music, or business can make the subject more interesting, especially at the start of the course.

  2. Paying Extra Attention to Struggling Students: Teachers should keep a close eye on students who are not doing well or aren’t very interested in the course. These students might need extra help to keep up, so they don’t fall behind. Connecting them with teaching assistants, Luddy tutors, and additional resources early in the semester could be helpful.

  3. Using Tests to Track Progress: For computer science students, instructors can use quizzes and smaller tests throughout the semester to see how well they’re doing. This helps faculty know if they’re learning. However, for non-CS students who are doing well, these smaller tests might not show their full abilities, so the teacher needs to be extra careful when evaluating their skills. These students might be good at memorizing facts or completing basic tasks in the test, but that doesn’t mean they fully grasp the deeper concepts or could apply the knowledge in real-world situations. So, instructors need to be extra thoughtful and consider other ways to evaluate their skills, not just based on these smaller tests.

Example:

Imagine a student in a business major who is acing the quizzes in a programming class. They might be good at solving problems that are simple and similar to what they’ve studied, but the quizzes might not show how well they can use programming to solve real business problems. Faculty might need to look at other work, like projects or group activities, to better understand the student’s true abilities.

Implications for Teaching and Learning:

  • Tailored Instruction: Educators can design programming courses that consider the diverse backgrounds of students, offering different learning paths or support based on their major.Example: In a programming class, students from a data science major might already have some knowledge of coding, so the instructor could offer them more advanced challenges while giving students from a humanities background more basic programming tasks. This ensures that all students are working at a level that matches their prior knowledge, making learning more effective.

  • Early Support: Providing additional resources or guidance early in the course can help students who might struggle due to their major’s focus, ensuring they keep up with the material.Example: In the first few weeks of a programming course, an instructor might offer extra study sessions or online tutorials for students from non-technical majors (like business or social sciences). These students may find programming challenging, so additional support would help them catch up and build their confidence early in the course.

  • Encouraging Diverse Majors: Encouraging students from various disciplines to engage with programming can enrich their learning experience and broaden their skill set.Example: A university might organize workshops to show students from creative fields (like art or design) how programming can help them bring their ideas to life, such as creating interactive websites or digital art. Encouraging students from these fields to explore programming opens new possibilities for their careers and learning.

By understanding the relationship between a student’s major and their programming learning trajectory, educators can create more effective and supportive learning environments.