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.