Reading List

Links tagged with the label  IEEE  link directly to the IEEE digital library and require a subscription for access. Links tagged with the label  ACM  link directly to the ACM digital library and require a subscription for access.

Teaching CS1 and Object-orientation
  • Anne Gates Applin. "Second language acquisition and CS1"  ACM . In Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, ACM, 2001, pp. 174-178.

    Describes an empirical study on the relative effectiveness of two teaching methods in CS1: writing programs from scratch, vs. modifying well-written, well-documented programs. Students who modified existing programs achieved better exam scores and better overall grades.

  • Duane Buck and David J. Stucki. Design early considered harmful: Graduated exposure to complexity and structure based on levels of cognitive development"  ACM . In Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, ACM, 2000, pp. 75-79.

    Frames CS learning in terms of Bloom's taxonomy and claims most CS work is about synthesis (writing code) without providing the foundations of lower-level cognitive skills needed for mastery at that level.

  • Judith Gal-Ezer and David Harel. "What (else) should CS educators know?"  ACM . Communications of the ACM, 41(9): 77-84, September 1998.

    Gives a broad overview of knowledge outside the technical details of computer science, exposure to which might improve a CS educator's effectiveness.

  • Scott Grissom and Mark J. Van Gorp. "A practical approach to integrating active and collaborative learning into the introductory computer science curriculum"  ACM . In Proceedings of the 7th Annual Consortium on Computing in Small Colleges Midwestern Conference, The Consortium for Computing in Small Colleges, 2000, pp. 95-100.

    Describes techniques for incorporating collaborative learning into a programming course, so that students spend more time actively engaged in small group exercises and interactive demonstrations instead of listening to a traditional lecture.

  • Said Hadjerrouit. "Java as first programming language: a critical evaluation"  ACM . ACM SIGCSE Bulletin, 30(2): 43-47, June 1998.

    Compares Java and C++ for teaching CS1.

  • M. Khalid Hamza, Bassem Alhalabi, and David M. Marcovitz. "Creative pedagogy for computer learning: Eight effective tactics"  ACM . ACM SIGCSE Bulletin, 32(4): 70-73, December 2000.

    Suggest a number of creative teaching approaches for CS educators.

  • Nira Herrmann, Jeffrey L. Popyack, Bruce Char, Paul Zoski, Christopher D. Cera, Robert N. Lass, and Aparna Nanjappa. "Redesigning introductory computer programming using multi-level online modules for a mixed audience"  ACM . In Proceedings of the 34th technical symposium on Computer science education, ACM, 2003, pp. 196-200.

    Describes Drexel's experiences in redesigning their intro course, making extensive use of web-based course materials.

  • Andrew Hussey, David Leadbetter, and Helen Purchase. "Learning object-oriented programming in six hours: an experience with school students". In Proceedings of the 2nd Australasian Conference on Computer Science Education, ACM, 1997, pp. 117-125.

    Describes an experience teaching OOP to 60 high-school students at a 3-day vacation school. The goal was to ensure that students grasped the basic concepts of object-orientation, and the approach relied heavily on hands-on exercises using a predator-prey simulation.

  • Michael Kölling. "The problem of teaching object-oriented programming, part 1: Languages". Journal of Object-Oriented Programming, 11(8): 8-15, 1999.

    A longer article describing the core educational motivation behind the Blue project, which later evolved into BlueJ.

  • Michael Kölling. "The problem of teaching object-oriented programming, part 2: Environments". Journal of Object-Oriented Programming, 11(9): 6-12, 1999.

    Second part of the article above, which discusses the difficulties imposed by tools that students use.

  • Michael Kölling and John Rosenberg. "Guidelines for teaching object orientation with Java"  ACM . In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2001, pp. 33-36.

    Another excellent overview of the BlueJ "objects first" pedagogy.

  • Michael Kölling and John Rosenberg. BlueJ--The Hitch-Hikers Guide to Object Orientation, The Maersk Mc-Kinney Moller Institute for Production Technology, University of Southern Denmark, Technical Report 2002, No 2, ISSN No. 1601-4219.

    An excellent presentation of the core "objects first" pedagogy advocated by the BlueJ project participants.

  • John Lewis. Myths about object-orientation and its pedagogy"  ACM . In Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, ACM, 2000, pp. 245-249.

    Presents and debunks the most common objections to teaching object-orientation in CS1.

  • Glenn Meter and Philip Miller. "Engaging students and teaching modern concepts: literate, situated, object-oriented programming"  ACM . In Proceedings of the 25th SIGCSE Technical Symposium on Computer Science Education, ACM, 1994, pp. 329-333.

    Describes the pedagogy of some CMU instructors on changes to their introductory programming course. They claim notably better intellectual engagement of students as a result.

  • Thomas L. Naps, Susan Rodger, J. Ángel Velázquez-Iturbide, Guido Rö@szlig;ling, Vicki Almstrum, Wanda Dann, Rudolf Fleischer, Chris Hundhausen, Ari Korhonen, Lauri Malmi, and Myles McNally. "ITiCSE 2002 working group report: Exploring the role of visualization and engagement in computer science education"  ACM . ACM SIGCSE Bulletin, 35(2): 131-152, June 2003.

    Visualization technology can be used to graphically illustrate various concepts in computer science. We argue that such technology, no matter how well it is designed, is of little educational value unless it engages learners in an active learning activity.

  • Pedagogical Patterns Project. The Pedagogical Patterns Project home page. Web site containing lots "patterns" for teaching, many written by (and for) CS educators.

  • Susan H. Rodger. "An interactive lecture approach to teaching computer science"  ACM . In Proceedings of the 26th SIGCSE Technical Symposium on Computer Science Education, ACM, 1995, pp. 278-282.

    Students get more out of an interactive lecture than a passive lecture because they are given time to think. This time allows them to determine if they understand a concept, and if not to ask questions. This understanding is crucial when concepts build on one another. We describe our positive experiences in teaching sophomore-level computer science courses in an interactive lecture format with a computer in the classroom.

  • John Rosenberg and Michael Kölling. "I/O considered harmful (at least for the first few weeks)". In Proceedings of the 2nd Australasian Conference on Computer Science Education, ACM, 1997, pp. 216-223.

    Describes the difficulties with having to teach the intricacies of I/O up front in an introductory course, and the benefits of putting it off until later in the semester.

Lab Teaching Practices
  • Nachiappan Nagappan, Laurie Williams, Miriam Ferzli, Eric Wiebe, Kai Yang, Carol Miller, and Suzanne Balik. "Improving the CS1 experience with pair programming"  ACM . In Proceedings of the 34th technical symposium on Computer science education, ACM, 2003, pp. 359-362.

    Pair programming is a practice in which two programmers work collaboratively at one computer, on the same design, algorithm, or code. Prior research indicates that pair programmers produce higher quality code in essentially half the time taken by solo programmers. An experiment was run to assess the efficacy of pair programming in an introductory Computer Science course. Student pair programmers were more self-sufficient, generally perform better on projects and exams, and were more likely to complete the class with a grade of C or better than their solo counterparts. Results indicate that pair programming creates a laboratory environment conducive to more advanced, active learning than traditional labs; students and lab instructors report labs to be more productive and less frustrating.

  • Shannon Pollard and Jeffrey Forbes. "Hands-on labs without computers"  ACM . In Proceedings of the 34th SIGCSE Technical Symposium on Computer Science Education, ACM, 2003, pp. 296-300.

    Describes a "computerless" lab approach for non-CS majors, where students physically implement algorithms.

  • Eric Roberts, John Lilly, and Bryan Rollins. "Using undergraduates as teaching assistants in introductory programming courses: An update on the Stanford experience"  ACM . In Proceedings of the 26th SIGCSE Technical Symposium on Computer Science Education, ACM, 1995, pp. 48-52.

    Describes the use of UTAs at Stanford, and what factors make them successful. Also mentions the problems involved in giving UTAs grading responsibility over the work of other undergraduates, and how that was resolved with a non-numeric, rank-ordered grading system.

  • Laurie A. Williams and Robert R. Kessler. "All I really need to know about pair programming I learned in kindergarten"  ACM . Communications of the ACM, 43(5): 108-114, May 2000.

    A very accessible description of pair programming, phrased in terms of Fulghum's core statements from the original book, All I Really Need to Know I Learned in Kindergarten.

  • Laurie Williams and Richard L. Upchurch. "In support of student pair-programming"  ACM . In Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, ACM, 2001, pp. 327-331.

    Industry, particularly those following the eXtreme Programming (XP) methodology, has popularized the use of pair-programming. The pair-programming model has also been found to be beneficial for student programmers. Initial quantitative and qualitative results, which will be discussed in this paper, demonstrate that the use of pair-programming in the computer science classroom enhances student learning and satisfaction and reduces the frustration common among students.

  • Laurie A. Williams. Pair Programming Tiki. Web site containing lots of pair programming links.

Programming Assignments and Ideas for Them
  • Joel C. Adams. "Chance-It: an object-oriented capstone project for CS-1"  ACM . In Proceedings of the 29th SIGCSE Technical Symposium on Computer Science Education, ACM, 1998, pp. 10-14.

    A very simple but engaging programming assignment based on a dice rolling game. Can easily be turned into a contest.

  • Angela Carbone, John Hurst, Ian Mitchell, and Dick Gunstone. "Principles for designing programming exercises to minimise poor learning behaviours in students"  ACM . In Proceedings of the Australasian Conference on Computing education, ACM, 2000, pp. 26-33.

    Describes aspects of programming assignments that lead students to pay only superficial attention, to get side-tracked, or to stay stuck without knowing how to proceed. "Part I" of the paper below. Includes more examples.

  • Angela Carbone, John Hurst, Ian Mitchell, and Dick Gunstone. "Characteristics of programming exercises that lead to poor learning tendencies: Part II"  ACM . In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2001, pp. 93-96.

    Describes some aspects of programming assignments that lead students to pay only superficial attention, to get side-tracked, or to stay stuck without knowing how to proceed. Says essentially the same thing as "Part I" above, but more briefly and without as much detail.

  • Nick Parlante. Nifty Assignments.

    A web site that collects nifty CS1/CS2 assignment ideas from the SIGCSE symposium. Some we might use include:

  • Eric Roberts. "Strategies for encouraging individual achievement in introductory computer science courses"  ACM . In Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, ACM, 2000, pp. 295-299.

    Describes experiences using open-ended assignments and programming contests to engage advanced students and make the class more interesting.

  • Raja Sooriamurthi. "Problems in comprehending recursion and suggested solutions"  ACM . In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2001, pp. 25-28.

    Describes three issues that arise as points of difficulty for students in mastering recursion. This is from a programming languages point of view, and brings in functional abstraction and declarative thinking as key issues.

Karel the Robot
  • Owen Astrachan and Susan H. Rodger. "Animation, visualization, and interaction in CS 1 assignments"  ACM . In Proceedings of the 29th SIGCSE Technical Symposium on Computer Science Education, ACM, 1998, pp. 317-321.

    Reports on several CS1 assignments that involve animation or visualization to reinforce control constructs, data structures, or OO concepts.

  • Joseph Bergin, Mark Stehlik, Jim Roberts, and Richard Pattis. Karel J. Robot: A Gentle Introduction to the Art of Object-Oriented Programming in Java. Unpublished manuscript available on the web.

    This is the updated Java version of the older Karel++ text book. We will be using this in class for CS 1705 (formerly CS 1044) in the fall.

  • Joseph Bergin. "Introducing objects with Karel J. Robot." Paper presented at the Workshop on Tools and Environments for Understanding Object-Oriented Concepts, held in conjunction with ECOOP, 2000.

    A very brief paper introducing the Java version of Karel.

  • Joseph Bergin, Mark Stehlik, Jim Roberts, and Richard Pattis. Karel++: A Gentle Introduction to the Art of Object-Oriented Programming. John Wiley & Sons, 1997.

    The text book describing the earlier C++ version of Karel.

  • Duane Buck and David J. Stucki. "JKarelRobot: a case study in supporting levels of cognitive development in the computer science curriculum"  ACM . In Proceedings of the 32nd SIGCSE Technical Symposium on Computer Science Education, ACM, 2001, pp. 16-20.

    Describes how giving programming assignments before students have mastered the necessary cognitive foundations (in terms of Bloom's taxonomy) can leave students "overwhelmed, uncertain of how to begin, and grasping at the air". Describes the JKarelRobot simulator used at Otterbein.

  • Wanda Dann, Stephen Cooper, and Randy Pausch. "Using visualization to teach novices recursion"  ACM . In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2001, pp. 109-112.

    Describes how recursion is easier to teach in Alice, an animated 3D virtual world.

  • Willa Duplantis, Eve MacGregor, Maria Klawe, and Michele Ng. "'Virtual family': An approach to introducing java programming"  ACM . ACM SIGCSE Bulletin, 34(2): 40-43, June 2002.

    Discusses another programmable "game" system that can be used to introduce basic programming concepts. The focus of this project is to reduce gender bias and encourage female students.

  • Susan H. Rodger. "Introducing computer science through animation and virtual worlds"  ACM . In Proceedings of the 33rd SIGCSE Technical Symposium on Computer Science Education, ACM, 2002, pp. 186-190.

    Discusses introductory teaching experiences using Alice, JAlice, and JAWAA, all of which are animated virtual worlds with programmable behaviors. Also discusses Karel++ briefly.

  • Dean Sanders. "Jeroo: a tool for introducing object-oriented programming"  ACM . In Proceedings of the 34th SIGCSE Technical Symposium on Computer Science Education, ACM, 2003, pp. 201-204.

    Describes a simulator for kangaroos looking for flowers on an island, similar in many ways to an updated Karel world.

Teaching Software Testing
Automatic Grading Systems
  • Julia Isong. "Developing an automated program checker"  ACM . Journal of Computing in Small Colleges, 16(3): 218-224, March 2001.

    Describes a conventional automated grader.

  • Edward L. Jones. "Grading student programs--a software testing approach"  ACM . Journal of Computing in Small Colleges, 16(2): 187-194, January 2001.

    Discussed the SPRAE framework, where testing concepts are used to specify assignments that are easy to automatically grade.

  • Lauri Malmi, Ari Korhonen, and Riku Saikkonen. "Experiences in automatic assessment on mass courses and issues for designing virtual courses"  ACM . In Proceedings of the 7th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2002, pp. 55-59.

    Presents experiences on using automatic assessment in large scale courses of introductory programming, data structures, and algorithms over a period of 10 years. Discusses some of the issues besides automatic feedback that are necessary for achieving good outcomes.

  • Susan A. Mengel and Vinay Yerramilli. "A case study of the static analysis of the quality of novice student programs"  ACM . In Proceedings of the 30th SIGCSE Technical Symposium on Computer Science Education, ACM, 1999, pp. 78-82.

    Describes an experiment using Verilog Logiscope to perform static analysis of student programs. The aim was to see if this approach could lead to automated quality assessment for grading purposes (but it didn't look promising).

  • Kenneth A. Reek. "A software infrastructure to support introductory computer science courses"  ACM . In Proceedings of the 27th SIGCSE Technical Symposium on Computer Science Education, ACM, 1996, pp. 125-129.

    Describes an automated submission system that also supports auto-grading. Basically a bunch of Unix shell scripts.

  • Riku Saikkonen, Lauri Malmi, and Ari Korhonen. "Fully automatic assessment of programming exercises"  ACM . In Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science Education, ACM, 2001, pp. 133-136.

    Describes an automatic grading system for Scheme programs.

  • Abhijeet Trivedi, Dulal C. Kar, and Holly Patterson-McNeill. "Automatic assignment management and peer evaluation"  ACM . Journal of Computing in Small Colleges, 18(4): 30-37, April 2003.

    Discusses web-based system for anonymous electronic peer review of assignments.

Adaptive Hyptext and Constructivism
Web Objects
Links of Interest

copyright © 2003 Virginia Tech, ALL RIGHTS RESERVED
Last modified: August 14, 2003, 8:12:10 pm EDT, by Stephen H. Edwards <edwards@cs.vt.edu>