
Debugging the CS Student
Is Lack of Failure the Problem?
For computer science students, the algorithmic or computational method of thinking is often completely different from their previous academic conditioning. Students have been “programmed” to learn in a volatile way: get the knowledge, retain it, dump it on a test, and repeat, retaining very little practical knowledge once the mind dump has occurred. When presented with computer science concepts or problems, students often become frustrated because it is more common to “fail” in CS especially when compared to other core subjects. Their academic conscience lashes out in protest, screaming “but I’ve never failed before!”
As a society, we have to recognize that this is a microcosm of a seriously detrimental macro issue. Our youth are not willing to take intellectual risks because they have not been pushed mentally, or fear being punished academically. This inequality is illustrated below in Figure 1.
Figure 1. This figure is meant to show the relationship between Intellectual and Academic risks and how this inequality shapes the CS student perspective.
As computer science educators, we are realizing that too many students do not find satisfaction in the learning process. Current grading practices not only emphasize reaching the right conclusion but reward students for finding the answer using the “correct” method. Students have developed an expectation that their entire thought process needs to be validated and avoid the possibility of wrong, leaving no room for innovation or creativity when it comes to problem-solving. This way of thinking is detrimental to students’ futures as the ability to solve problems is consistently a top skill that employers desire.
In computer science, the anxiety of getting the correct answer trickles down to every step of finding the solution, thus resulting in a mentality that every line of code must be the right line of code. They want only to find the solution in order to earn the grade. This approach is causing them to miss opportunities to truly learn.
At the Constellations Center for Equity in Computing at Georgia Tech, we believe that this is a fundamental issue in computer science education that must be addressed. If ignored, students will not be effective computer scientists, and ultimately, poor digital citizens. Computer science classes need to be structured to emphasize the process of computational thinking, and our education system should encourage and reward it. Furthermore, students need to learn to embrace the process of developing that allows them to create the desired outcome, and not blindly code until they stumble upon the solution. Mindlessly trudging through coding exercise after coding exercise is unfulfilling for most students, and lacks one of the most fundamental principles of computer science: innovation.
Figure 2. The figure above is an attempt to represent where CSed should reside in relationship to computational thinking, intellectual risk, and academic risk.
This is not to say that there is no value in following exercises to establish baseline knowledge. The problem is that too many computer science classes stop here. As seen above, in Figure 2, balancing intellectual risks and computational thinking can maximize intellectual growth. Exploration is not a priority and students are never given the time or opportunity to try new things, innovate, elaborate, and fail. Somehow we have to equilibrate the student's willingness to take risks both intellectually and academically if we are to repair the student perspective. It is through this process and subsequent failures that students of computer science learn to innovate, iterate, and create computational artifacts that change their condition and the world around us.
And if we can change their mindset, they could change the world.