CSTA Blog: Critical Questions for CS Ed Research #CSEdWeek
December 9, 2013 at 1:04 am 5 comments
An interesting set of research questions!
This weekend CSTA Chair Deborah Seehorn and I were attending the ACM Education Council meetings and, as part of the meeting, we participated in a group discussion about critical questions in computer science education research led by CSTA Past Chair Steve Cooper.
Our discussion group consisted of Deborah Seehorn from the North Carolina Department of Public Instruction, Steve Cooper from Stanford University, Dan Garcia from Berkeley, and myself. Because we all have deep roots in K-12 computer science education, the list of questions we came up with covered a breadth of issues and reflect the deep need for research-grounded solutions to the issues we now face.
via Computer Science Teachers Association: Critical Questions for CS Education Research.
Entry filed under: Uncategorized. Tags: computing education research, CSEd Week, CSTA, high school CS, K12.
1.
alanone1 | December 9, 2013 at 7:49 am
(Also posted to the CSTA site)
The two main questions I would ask before any of these are:
1. What is the most powerful conception of “computer science” that we could imagine and then figure out how to teach?
2. What are the “developmentally best” versions of these ideas (cf Papert, and Bruner) for each developmental level from K-12?
The first question addresses the weak and inadequate characterizations of computing in the current reform attempts. In a field that is still inventing itself (and whose current state is not well developed) we need to “teach for learning and change” to help bring our field to the better states it needs to assume in the 21st century.
The second re-asks the serious questions that Papert asked about mathematics and computing (and that Bruner asked about learning and teaching in general). The basic idea is that what is actually important about a field should not be removed in a child’s version, but an intellectually honest child’s version may require new inventions to serve both the needs of the subject and the child. The first question has to be partially well answered before the second one can be addressed at the level needed.
I make these comments because I take the term “education” seriously, and think of it as being more than just vocational training that addresses perceived needs by employers.
2.
Mark Guzdial | December 9, 2013 at 11:18 am
These are great, Alan — thanks! I’ve been thinking about a variation of #1 lately. What is the most powerful conception of “computing” that we could imagine and then figure out how to teach? I’m thinking about notions like the massively parallel system in Kedama or functional reactive systems like Elm. We get hung up in computing education research asking questions about how do students understand the difference between FOR and WHILE, or listing the ways in which students misconceive assignment. Those are reasonable and important questions, but as early as we are in the history of computer science, it seems reasonable to also explore alternative forms of “computing” which might make some of these targets-for-misconception simply go away.
3.
alanone1 | December 9, 2013 at 11:34 am
Hi Mark
I generally like “computing” better than “computer science”.
I used the latter term because that’s what the CSTA people were using (but I fear that in most places this term has lost its meaning including within CSTA).
People are distracted by “a few artifacts of past programming” and are failing to even see and address Alan Perlis’ “Computer science is the science of processes” (something he and others thought was bigger than just computers — I definitely agree!).
Cheers,
Alan
4.
alanone1 | December 9, 2013 at 11:35 am
P.S. I forgot to add: I thing “the science of processes” is what we should be figuring out how to teach, not just to children, but to the entire field ….
5.
Peter Donaldson | December 9, 2013 at 2:16 pm
Hi Alan,
I agree that computing as a discipline should put the study of information structures and processes at the core of what we do; particularly at secondary level. Undergraduate cs curricula sometimes look like a collection of application areas without enough unifying concepts explicitly used to tie them together.
A particular language or environment should be a way of creating a machine executable description of a process or information structure rather than an end in itself. Like the teaching of english, contexts should be chosen to encourage and motivate students desire to be able to express themselves computationally in increasingly sophisticated ways.
It’s interesting that many of the pedagogical environments, including squeak, try to make expressing concepts that were previously considered difficult, such as parallel execution, much simpler.
Another example of helping novices is textual language designs that have optional syntax for more sophisticated abstraction mechanisms. Although far from perfect, this progressive approach to language complexity is something that Python does well and new language Pyret appears to attempt with functional programming. It’s also something that JAVA is horrendously bad at. After all, a novice in the beginning isn’t writing descriptions big enough that they need to consider subprogram, variable or object scope so why make those parts required at the start?
With so many research questions still unanswered we have plenty of new horizons to strike out for and explore. Although, as a computing teacher, there’s plenty of useful findings already in the cs ed research that aren’t as broadly known about or understood as they could be.