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:
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.
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.
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.
Comments: