The one credit laboratory course meets once each week for three hours. Students work in pairs to perform a prepared laboratory experiment. Each pair of lab students has its own laboratory workstation where the experimental work is performed. Currently, the laboratory course consists of twelve experiments. All experiments, except the first, require the students to formulate a conjecture to be verified, gather experiment data, analyze the results and write a brief laboratory report which must be turned in at the beginning of the next laboratory class period. With each offering of the course we have attempted to modify and improve the experiments as well as devise new experiments.
The following are representative titles and purpose of experiments used in the course.
In this lab, students familiarize themselves with the lab workstations, editor and J notation. No lab report is required for this lab session.
In this lab, students learn the format of a lab report and perform the first simple experiment which is to determine how fast the workstation can add numbers. Students are introduced to the problem of experimental sampling.
The purpose of this laboratory experiment is to determine the relative performance of different arithmetic types on a lab workstation.
The purpose of this laboratory is to build a working model of a 4 bit binary adder from modeled circuit elements and verify its correct operation.
This experiment involves the experimental estimation of the time required to evaluate (fibonacci 100) using a recursive implementation of the fibonacci function. This experiment requires an understanding of recursive and iterative implementations of the fibonacci function.
The purpose of this laboratory experiment is to examine and compare two implementations of an abstract data structure for a stack. The first implementation uses functions to implement a constructor, predicates and accessors for stacks. The second uses an object oriented approach to implement stacks.
In this laboratory problem students are given three different implementations of a system for performing exact rational arithmetic. The implementation has been carefully designed and layered so that operations are separated from data representations by using abstract constructors and accessors. They are asked to predict relative performance of each system, comment on the quantitative aspects of each implementation, gather experimental data and draw conclusions in a written laboratory report.
In this laboratory problem students work with a prototype implementation of rational arithmetic operations which allow rational numbers to be combined with other types of numbers in arithmetic expressions. They are asked to evaluate the performance of the prototype implementation and write a laboratory report.
In this laboratory experiment, students are asked to design a recognizer for a syntactic element of the J notation, given the BNF syntax description.
In this laboratory problem students analyze a function which is evaluated using both a recursive and an iterative process. Interpreted and compiled versions of each are analyzed.
The purpose of this laboratory problem is to evaluate the performance of a network computation in which two networked workstations cooperate to perform a calculation in parallel.
In this laboratory problem students try to discover the behavior of a rule system by tracing the execution of that rule based system as it interprets different rule sets.
This course is the first course in our computer science department which attempts to utilize the traditional closed science laboratory approach to teach computer science concepts. The effort required to design a successful laboratory experiment is much higher than anticipated, but the benefits can be rewarding in that successful experiments seem to convey the concept being taught more efficiently and forcefully than the more traditional kinds of programming problems we have assigned in other introductory courses. Our department plans to introduce closed laboratories for other introductory computer science courses as a result of our experience with this course.