by Lucas Ives and Matt Chotin

Sections are an interesting part of CS 15 because there are so many different ways to think about them. What did we want the students to get out of them? Who should sections be aimed at? Should we make the students attend sections? How do we teach them? Hopefully we can examine what we did this past semester, and improve them yet again for the next. The following is based on both the experiences of the TAs, former students, and the final questionnaire results.

Sections had a number of goals this past semester. First and foremost was the fact that we wanted to make sure that everyone understood what was happening in lecture. Often a point could be misunderstood or not gotten at all. So the section would focus on the same area as the lecture in the hopes that we could reach everyone. As section was not mandatory, we tried to refrain from introducing new topics in the sections. This would have been unfair as the students who did not attend would not receive possibly vital information. Some students disagreed with this methodology, but we will discuss that later.

Section leaders were always very enthusiastic and eager to help, but they often strayed from "official" section format. At the beginning of every section, the topic of that week's discussion would be announced, but this focus was rarely, if ever, maintained. They seldomly used the section example slides, preferring to answer students' questions about Java and the programs, but an attempt was made to concentrate mainly on what had been covered in lecture the past week.

There was a great discrepancy between sections. One section gave a UNIX mini-help session; other students found out and wished that they had had one, too. Some students complained that their sections moved through the material too quickly for their liking, preferring to deal with more syntax help; others claimed that they just didn't go because the sections were so boring. A problem with CS15 is the fact that it is the only introductory course to the CS Department (with the exclusion of CS4, but that mandates another semester of intro material, namely CS5). This means that people of all ability levels and learning styles will be enrolled. This very fact makes sections necessary. It follows, then, that in order for sections to be efficient, a further division is warranted.

Enter beginner sections. This new idea for CS15, in it's first year of implementation, has recieved generally positive reviews. Inexperienced students like the idea that they can be in a section with people of their own ability, without having to worry about being "out-teched" by experienced programmers, multithreading their games of Tetris. For example, many students in the questionnaire stated that they would have liked to focus even more on syntax, which would have been impractical in a section of students with mixed abilities. The same might even hold true for help sessions according to some students, as they felt uneasy about asking questions in front of the whole group of students.

But if new programmers get special treatment, there should be comparable opportunity for the more experienced students to go above and beyond and learn about what interests them with regard to Java/CS15. We believe that these results warrant the creation of an advanced forum, much in the vein of what has been discussed during the GISP. Many advanced students said in the questionnaire that sections were too boring (not beginner sections) and therefore they didn't go. On the other hand, many attended the regular sections, and ended up asking questions that other students believed were simply meant to show off their egos. An advanced section would allow students with more experience to have a forum that would maintain their interest, while allowing students with less experience to focus on the issues that they find important.

A hope for sections this past semester was that they might be able to give more of a lesson on design than we had done in the past. There was one section that focused on designing a program thoroughly so that we could go through the thinking process that goes into a program in a small setting. We believe that this was helpful, though perhaps we could have done it more than just once.

Matt's Diatribe:
As an aside, toward the end of Street, TA hours were busy with questions that stemmed from really not understanding the design of the program. It had been given in a help session, but students were still confused. I (Matt) held another help session on the spot to try to figure out where the questions were stemming from. Based on the variety of questions I decided that the best approach was simply to start from scratch and build the whole program with them (design-wise). I found that even though most attendees had been to the original help session, they were still unclear with the basics of the design, including the advantages of polymorphism, where to use parameters, etc.

We spent a little over an hour going from underlining words to drawing up a full class diagram. I ended up giving the majority of the program away to the students who attended, but am confident that they fully understood what they were writing when it was over. During the help session the students took a wrong turn (I believe having to do with what was subclassed) and went on for a good 10 minutes with that mistake in the design. I allowed us to continue so that they would experience the complications that would be brought up later as a result of this choice. Correcting them immediately would have greatly reduced the impact of this experience. Eventually we realized the flaw, and went back and corrected everything, ending up with a perfect (if I do say so myself) design. I personally felt that this help session was one of the most educational sessions I had been a part of, and I believe that if we had a section where we took a program (not one of the assigned, perhaps even doing it twice, once with a early level program and once with a Tetris level program) and broke it down completely, the value would be great.

Sections are a vital part of the class, and we should continue to work to improve them. While making sure that students understand all material covered in class, sections should also try to teach good programming techniques so that students do not go overwhelmed when faced with the larger programs. At the same time, we should try to be inclusive of all students regardless of their abilities, however trying to avoid social engineering issues. Oh, and bring more food and candy.