The Pedagogical Impetus for Labs

by Matthew Amdur and Saul Nadler

Matt & Saul

In an introductory computer science course, there are many different ways that people learn. Some people digest lectures easily and understand all concepts and syntax from this manner. Others find that the only way they can comprehend the material is by actually coding the concepts described. We felt that in cs15, students were allowed only these two options - coding and lectures. Although there was a support network to help them through the course (i.e. the TA's on hours), it is apparent to us that there needs to be more teaching and support for the students besides just TA hours.

Therefore, we have created a set of mini-labs that could be used in sections or help sessions to help improve the level of understanding of the students. These labs have been oriented towards the standard cs15 student at the appropriate time of the semester. By this, we mean that in our parameters lab, we do not expect the students to understand loops and switch statements, so the support code may be unreadable for them because it has more advanced concepts involved. However, our holder pattern lab is relatively straightforward (except for one try catch statement to save the students from a null pointer exception) and it is essential that the students read the code in order to understand what is going on. The level of understanding of the student has been taken into account in the construction of these labs.

At present, there are three labs that have been constructed. The first, a parameters lab that is encouraged to be used in the time preceding Street, is designed to explain how different parameters change the way that methods work. It allows a student to make different shapes based on the order of points she puts in. Ideally, if a student understands what is going on, they will see that the order they put in the parameters is very important.

The second lab, a holder pattern lab, should be used in the time preceding Swarm. It is a simple, visual example of how the holder pattern works. It requires the student to fill in both the setCurrent() and getCurrent() method in a holder class. The goal of this lab is to familiarize the students with accessors and mutators, extremely important OOP techniques, and to help them understand how to utilize support code. It is not designed to be a difficult lab, but rather an example of how to use a holder and how to make the MoviePlayer to Swarm jump a little easier.

The third lab, a loops lab, is designed to introduce the student to both the command line and to loops. It is done from a main function and it helps illustrate how to make nested for-loops. It is suggested to be used before Tetris to familiarize the students with this concept because it is something that is used quite often in computer programming. This lab is simple and straightforward, and is seen as more of an introduction rather than a difficult test of knowledge for the students.

A fourth lab is in the works which would be around Pizzadex as an introduction to both simple networking and group work. It would be a two ended project involving developmental networking software created by Andrew Schulak, another Brown University undergraduate. The goal is to have a multiple person exercise in cs15, something that it presently lacks. It would be highly conducive to class sections where students would have a short amount of time to design and implement the assignment.

For people that are interested in creating more labs, we have put together a small list of useful tips that should help to provide a framework for making labs.

Above all, we feel that cs15 needs to have some simple, mini-program assignments involved in the class to allow the students to develop quick, simple problem solving skills. At present, the large prpgram nature of the class does not foster strong, critical problem solving. These labs are our attempt to try to improve the learning aspect of cs15, which in turn will improve the overall quality of the course.

There is also a temporary lab that we are working on that we would like to demonstrate today: The Slacker Pattern.

If you have any questions about any aspects of these labs, please feel free to contact Matt Amdur or Saul Nadler with any comments or concerns. These are continuous works in progress and we would sincerely appreciate your thoughts on the projects.

Back to Useful Tools

Back to CSED Homepage