"Cosmetic errors" are significant errors that produce results that, at least to beginning programmers, appear to be essentially correct except for minor formatting issues. An example common among students in CS 3, "Introduction to Symbolic Computing," is a procedure that should return a number, such as 4, but actually returns a list with a number as its only element, such as (4). Another example is a procedure that returns exactly the list that it should, except that it contains a null list as its last element. Many students consider procedures such as these to be essentially correct. Others seem not to even notice the difference, although the list (2 3 5 7 ()) is clearly not the list (2 3 5 7).
The goal of this research is to determine how it is that students can continue to make these mistakes once they have a good understanding of the different Scheme data types, and to develop exercises that help students stop making these mistakes. While there appear to be a number of different reasons for these errors, some of the most common involve the way students understand null or one-item lists and empty strings (called empty words in CS 3). For example, some students view empty lists and strings as "nothing," which can be safely ignored when it shows up in another list and used as a return value if a procedure is given arguments out of its range. Others, including a number of very good students, believe that one-element lists are useless and that Scheme automatically converts them to the element they contain.
Guided by informal interviews and assessments given in summer and fall 2002, we will assess and interview CS 3 students about null and one-element lists and empty words at the start of the spring 2002 semester. Using the data we gather, we intend to target certain cosmetic errors that typically occur later in the semester. If this proves to be successful, we can design activities that address cosmetic errors throughout the semester.
The UC-WISE (University of California Web-based Instruction for Science and Engineering) project is designing a system for integrating technology into the instruction of entry level science and engineering courses. This system, based on the WISE learning environment developed in Berkeley's School of Education (http://wise.berkeley.edu) will deliver functional content in the form of dynamic Java-based tools for computer programming, modeling, and many other learning activities. All of these student activities will be integrated into a Web-based learning environment that links to the course calendar, the course syllabus, and a database that stores all student work and supports instructor assessments. The goal of this effort is to research the most effective ways of integrating computer technology into our courses, replacing the traditional lecture with a more dynamic role for the instructor as tutor or learning partner.
The system includes a "master curriculum," a database of richly annotated course "learning objects," e.g., exercises, projects, assessments questions, and video lecture segments. It will incorporate three major components for loading and accessing the database: (1) the curriculum builder, with which master teachers populate and annotate the master curriculum; (2) the course customizer, which guides a prospective instructor to form courses based on material in the master curriculum; and (3) the course portal, in which the constructed course is delivered to students.
In summer 2002, we ran the summer CS 3 (the introductory programming course for nonmajors) in an all-lab format using a prototype version of the course portal. Results were exciting; students and staff loved the format, and the students did quite well compared to CS 3 students in earlier semesters. (The summer results are described in .)
Current work proceeds in two areas: curriculum and system development. At present we are concentrating on the likely uses of the metadata annotating each learning object in the database, and on tools that will assist users of the curriculum builder and the course customizer. Developer subgroups are also designing tools for student collaboration and for Scheme programming. The curriculum group is reviewing and tuning the summer curriculum, exploring the development of other CS lower-division courses in this format, designing a curriculum for tutors, considering how to make use of the CS 3 curriculum in the self-paced CS 3S, and investigating the possibility of online exams.