Instructor: John Howland
Text: Howland, J., Great Ideas in Computer Science Laboratory Manual
Laboratories: Thirteen Laboratory Problems
Course Objectives: The objectives of this course include:
a) learning some of the traditional scientific methods through an experimental laboratory
b) learning basic experimental methods used in computer science
c) perform basic laboratory experiments in each of the important areas of computer science
The approximate breakdown on grading will be as follows. Laboratory problems will be used to determine 100% of the final semester grade. There will be 13 laboratories scheduled during the semester. You must complete 12 of the 13 laboratories. Students generally will not be allowed to make up missed laboratories, however, needing to complete 12 of 13 scheduled labs means that each student has the option of missing 1 laboratory.
In this lab, students familiarize themselves with the lab workstations, editor and programming notation. No lab report is required for this lab session.
The purpose of this laboratory problem is to introduce the concept of internet based client/server applications and the Hyper Text Mark-up Language.
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 sampling experimental data.
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. Many students are surprized by the outcome of this experiment since they find their conjecture incorrect.
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 quantitive 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. You are asked to evaluate the performance of the prototpye implementation and write laboratory report.
In this laboratory experiment, students are asked to design a recognizer for a syntactic element of a language, given the BNF syntax description.
In this laboratory problem students analyze a function which generates recursive process then consider a recursive version of the same function which generates an iterative process and finally examine the compiler output and analyze the performance of both functions.
The purpose of this laboratory problem is to evaluate the performance of a network computation in which two networked work stations cooperate to perform a calculation in parallel.
In this laboratory problem students will try to discover the behavior of a rule system by tracing the execution of that rule based system as it interprets different rule sets.
Each laboratory requires completion of a brief written laboratory report using a standard format described in the Writer's Guide for Laboratory Reports. The report may be completed during the regular laboratory session or during the following week and is due to be submitted at the beginning of the next laboratory class period. A particular lab may require students to use the library and other sources during writing of the report. Reports may be written as web pages. A web page laboratory report template is available in the Laboratory Files directory. Laboratory experiment software may not be available after the end of the laboratory class period for some experiments, so normally all experimentation required during a lab will be done on the day of that lab. However, the laboratory workstations will be available for other use outside of regular laboratory hours.
Students may optionally work in pairs to perform a laboratory experiment, but individual laboratory reports are required. Experimental data gathered during a lab experiment will be shared between lab partner's lab reports, but all other parts (such as hypothesis, analysis conclusions, etc.) of a lab report must be individually written.