2002 SIGCSE 2002 DC Application -- Peter DePasquale


Within the computer science community, there has been an examination of programming languages and integrated development environments (IDEs) for use in conjunction with teaching CS1 courses (introductory programming courses which generally follow the syllabus for "CS1" within the ACM/IEEE-CS curriculum of 1991) to novice programmers (see references). Most striking about these teaching/learning environments is that for the most part they seek to follow one of the following approaches: Ironically these approaches seemingly lack a similarity to the methods by which we teach introductory programming in the classroom. When first introduced to a programming language, novice programmers generally are introduced to simple, stand-alone concepts that can be easily digested and understood. Further concepts are then added in an iterative manner as additional language elements are introduced.

In essence, what educators are doing in the classroom is subsetting a programming language and introducing successive subsets to the student participants. Many novice C programming students around the world are introduced to their first computer program with code similar to the following:

void main () {
   printf("Hello world!");
}
Here, the student is introduced to the most simple of computer programs. Only the bare bones concepts of a main function and system output are introduced. Additional components of the language are then introduced over the course of the semester. By semester's end, the students gain exposure to a majority of the components of the programming language and usually have the ability to author programs given only problem requirements.

As they learn to implement (code) programs, many students use either a simplified programming environment (mentioned earlier) or a programming environment with an interface and compiler designed for professional application development. While there are many commercially developed programming environments, there are few learning environments for novice programmers.

I argue that novice students do not need complex tools and that the introduction of a highly complex structured programming environment to these students is detrimental to a clear understanding of their first programming language and programming in general. In essence to require students to learn both a programming language and the command language of the implementation environment is like learning French and Spanish at the same time.

A novice programmer's first development environment should be simple to use, provide clear consistent error and warning messages (which do not befuddle the student), and should grow in lockstep with the pedagogical methodology used in the classroom. My dissertation focuses on the validation of the argument that the students would be better suited to work in the domain that is tailored towards their education (subsetted and non-professional) with the subgoals of creating a prototype environment and language system named "CS1 Sandbox".

It is my belief that it will be shown that using levels in a programming language and in the development environment for novice users provides measurable pedagogical gains. The work with Scheme has not (to this date) quantified their results. My dissertation focuses on proving these gains do exist through the application and progression of the subsets/levels in the programming environment.

As part of my experimentation, I plan to teach a section of the introductory programming course here at Virginia Tech. The section will divide the class into three approximately equal groups using:

  1. Microsoft Visual C++ (MSVC) programming environment, as students currently do in the introductory class;
  2. CS1 Sandbox language and environment, but without language subsetting;
  3. CS1 Sandbox software utilizing at least 5 subsets/levels.
Throughout the course of the semester, each student's performance in the course will be monitored through his or her project assignments which will be completed using the programming environment. The academic (quantitative) achievements of the participants in these three groups will be compared to examine particularly: Despite the fact that the software developed to explore the dissertation hypotheses is to be considered a prototype, it would not be unexpected to realize pedagogical gains attributed to the use of the subsets/levels in the environment. Students are anticipated to react in a positive manner to the CS1 Sandbox due in part to the efforts we have taken to not only reduce the complexity of the workspace (we have removed the project management features required when using Microsoft Visual C++), but also to provide informative and instructional messages (programming warning and error message, as well as the on-line help system) not commonly seen in professional development environments.

Even larger gains may result from future work with the CS1 Sandbox. We can apply the knowledge about what subset/level is currently in use to the amount and style which assistance, feedback, and errors are provided to the student. By knowing that a student has no ability to use a given programming construct (is not in a subset that is currently allowed), we can also assume that they have not been exposed to it in the course. Therefore, this knowledge can applied to the feedback the student receives from the system. For instance, the break statement in C/C++ has two primary purposes: controlling repetition and terminating a large set of conditionals. If the student has only been exposed to the first, and not the latter, error messages and feedback to the student can be tailored to create a more highly refined learning environment.

Another potential use that can likely improve pedagogy is to utilize the environment to provide both a programming problem and set of corresponding language restrictions for completion. In this manner, an instructor can greatly confine (and enforce) which portions of a programming language are used to solve a problem. Students, it is thought, will then need to focus more closely on understanding and correctly using those portions of the language to which their instructor is permitting access. The framework introduced by this dissertation contains a variety of opportunities for further research exploration. It is my intention to continue exploring the potential educational gains which can come of this programming environment after graduation.


Current Status
As of May 2001, I have completed by preliminary examination for my Ph.D. By the time of the consortium, I will be utilizing the CS1 Sandbox program in an closed-lab for CS1 students. It is my anticipation to use this period as a beta-test of the system and to further prepare my experimentation. I anticipate experimentation to occur during the Summer of 2002 or during the Fall semester of 2002.


Anticipated gains from participating in the Doctoral Consortium
As a twice-former participant in the Doctoral Consortium, I look forward to once again participating. I have always leave the consortium with a renewed vigor towards my work, and a stronger sense of what remains on the path to my degree. I look forward to scrutiny (again!) of my research topic, and the collaboration of my peers.


Bibliographic References
Anne Gates Applin. "Second Language Acquisition and CS1: Is * == ** ?", Proceedings of the Thirty Second SIGCSE Technical Symposium on Computer Science Education, Association for Computing Machinery, New York, pages 174-178, 2001.

James H. Cross. "GRASP - Graphical Representation of Algorithms, Structures and Processes", Internet WWW page at URL: http://www.eng.auburn.edu/department/cse/research/grasp (last accessed: 10/10/01).

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. "Functional programming: The DrScheme Project: An overview?", ACM SIGPLAN Notices, Association for Computing Machinery, New York, 33(6), pages17-23, June 1998.

Robert Bruce Findler, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. "DrScheme: A Pedagogic Programming Environment for Scheme", Lecture Notes in Computer Science, Springer-Verlag, Heidelberg, Germany, 1292, pages 369-388, September 1997.

Mark Guzdial. Software-realized scaffolding to facilitate programming for science learning. "Interactive Learning Environments", Swets & Zeitlinger Publishers, Lisse, Netherlands, 1(4), pages 1-44, 1995.

Michael Kölling. "Why BlueJ? An introduction to the problems BlueJ addresses", Internet WWW page at URL: http://bluej.monash.edu/why/why.html (last accessed: 10/10/01).

Henry Ledgard and Michael Marcotty. The Programming Language Landscape. Science Research Associates, Inc., Chicago, 1981.

Derek Sleeman. "The Challenges of Teaching Computer Programming". Communications of the ACM, Association for Computing Machinery, New York, 29(9), pages 840-841, September 1986.

Richard L. Wexelblat. History of Programming Languages, Academic Press, New York, 1981, chapter 11, pages 515-549.