Tracing Code - University of Washington

advertisement
Tracing Code: Do Faculty Expectations Match Student Ability?
Kenneth D. Blaha
Research Questions
1. At what point in their undergraduate career do CS faculty expect their students to
be able to trace code?
2. At what point in their undergraduate career can CS students trace code?
Related Questions
1. Can students that successfully complete CS1/CS2 trace code, and if so does this
skill degenerate over time?
2. How do students learn to trace code (taught in the classroom, self taught,
textbook, friends)?
3. Is this topic still found in modern CS1/CS2 textbooks and course syllabi?
Other skills to consider
debugging, testing and creating test cases, coding, problem solving
Motivation:
This question is motivated by personal experience and the papers:
 A multi-national, multi-institutional study of assessment of programming skills of
first-year CS students
 Scaffolding with Object Diagrams in First Year Programming Classes: Some
Unexpected Results
 Knowing what I know: an investigation of undergraduate knowledge and selfknowledge of Data Structures
These papers found that students did not performed at the expected skill level.
The scaffolding designs from PLU subjects indicate that many students (both first
competency and graduating) do not have good problem solving and design skills. My
personal experience when teaching the junior/senior level algorithms class is that students
struggle to write the programs assigned. They have trouble with program design,
debugging, and testing.
When I work with students one-on-one I find that many of them have trouble tracing their
own code. This is a fundamental skill and if students cannot trace code it is impossible
for them to write correct code or debug errors. Many of these students have done well in
CS1 and CS2. So what is wrong? Are my expectations unrealistic? Did they have these
skills and lose them? Is tracing code no longer a student outcome for CS1/CS2?
This is a skill I expect students to have by the time they finish CS1/CS2, but it is unclear
whether they have developed the skill. Many older CS1/CS2 textbooks included this
topic (e.g., Adams, Leestrma, Nyhoff, or Warford), but it appears that modern textbooks
have a tendency to leave the topic out.
What I Believe:
I think that tracing code is still a fundamental skill that student need to have before they
finish CS1. With increased emphasis on GUIs and object-oriented design (classes,
inheritance, polymorphism, class hierarchies) some basic skills (e.g., tracing code) are no
longer taught or included as a student outcome for CS1/CS2. Yet, most faculty expect
that students completing CS1/CS2 will have this skill.
Method
1) Determine an important skill set (outcomes) for CS1 and/or CS2. This could be
the same or similar to what was in the McCracken et. al. paper. Or could be taken
from CC2001 learning objectives. I have chosen tracing code as a starting point.
2) Find out when (end of what course) most educators believe students at their
institution acquire this skill set.
3) Examine textbooks, exams, and programming assignments for courses identified
in 2 to see if the skill set is included.
4) Recruit students that have successfully completed this course and give them a task
that will evaluate their competency. Again this could be something similar to
what was done in the McCracken et. al. paper, or questions can be selected from a
number of sources (e.g., ETS Field Exam CS, AP exams, papers by Thomas /
Ratcliffe/ Thomasson or Murphy/Tenenberg)
How are you going to approach this?
I selected tracing code and the two specific research questions state at the beginning.
Research Question 1:
 Ask faculty that teach CS1/CS2 (at target institutions) question 1.
 Look at textbooks, syllabi, and exams at target institutions.
Question 2:
 Use sources described above (ETS Field Exam CS, AP exams, similar papers) to
design a suite of questions to evaluate competency.
 Questions would include
o Simple straight-line code test (would depend on the language used)
o Simple method calls
o Recursion
What has been done
The following email has been sent to members of the scaffolding group.
Hope all is going well. I'm sure you are busy, but if you get a chance could
you answer these questions:
1. At what point in their undergraduate career do CS faculty expect their
students to be able to trace code? (CS1?)
2. Are you on a semester or quarter system? ( semester?)
3. What language do you use in CS1? (java?)
Replies
o PLU faculty, Pacific Lutheran University, (CS1/CSCE144, semester
system, java)
o Robert McCartney, University of Connecticut, (CS1/CSE123, 2 credits,
semester system, c++)
o Mark Ratcliffe, University of Wales, Abersytwyth, (CS1, semester system,
java).
o Steve Cooper, St. Joseph’s University, (CS1, semester system, java)
o Tammy VanDeGrift, University of Washington, (CS1, quarter, java)
o Beth Simon, University of San Diego, (CS1, semester, Java)
o Donald Chinn, University of Washington – Tacoma, (CS1.5 (end of
second programming class), quarter, java).
o Tzu-Yi Chen, Pomona College, (CS1, semester, java)
o Anthony Robins, University of Otago (New Zealand), (CS1 but it looks
like the 2nd CS course, semester, java)
o Anna Eckerdal, Uppsala University (Sweden), (CS1, 4-5 weeks fulltime
course spread over ~8 weeks, Java)
o Jan Eric Mostrom, Umea University, (CS1, semester??, Java and ML)
o Allison Elliott Tew, Georgia Tech, (CS1, semester, python, java, matlab)
References
McCracken et. al, A multi-national, multi-institutional study of assessment of
programming skills of first-year CS students, ITiCSE
Thomas, Ratcliffe, and Thomasson, Scaffolding with Object Diagrams in First Year
Programming Classes: Some Unexpected Results 35TH SIGCSE 2004 250-254
Laurie Murphy and Josh Tenenberg, Knowing what I know: an
investigation of undergraduate knowledge and self-knowledge of Data
Structures, To appear in Computer Science Education, 15(4), Dec.
2005.
Download