From here on the class begins to focus in on object-oriented programming and students begin to learn to implement and create classes. The final instruction on object-oriented programming comes with "a case study of polymorphism" and the notion of abstract superclasses.
From here on the students are introduced to strings, exceptions, threads and "multimedia concepts."
From what is available on the web page it seems to me that sections for CS10 are more like sections we experience in Humanities courses than how we tend to teach sections in CS15. Instead of just being an enrichment section these sections are called discussion sections. Here students are expected to come with a certain amount of knowledge or work done and are expected to work on these projects or problems with other students.
Students then implement a simple palindrome checker and a small math tester applet. For this last assignment it is noted that documentation and GUI layout are important and will be worth a portion of the grade. The next assignment is to punctuate the lengthy overview of arrays (three lectures) as well as class creation and implementation.
For the final project students are to solve any problem of their choosing and are encouraged to work in groups. Though surprisingly none of the final projects are available to play with, the comments from the instructors of the course are very positive regarding the outcome of the final projects.
First off I think the fact that students are introduced to the history of computing and programming right from the begininng is very positive. This allows students (especially students with no background knowledge of computers) to better understand what it is that they are doing and how people have done it before them. Understanding why people started "computing" and what problems were trying to be solved, as well as which ones are today, can enable the future programmer to see where s/he wants to go with the field.
Another positive aspect of this course, as I mentioned, is the discussion centered sections. I feel that students who are expected to not only be responsible to themselves but to their groups as well will be more apt to actively learn in section as opposed to students who come to absorb. Also, building group skills throughout the semester allows them to offer the final project as a group project. Students who have found that working together on the section assignments was beneficial to them now have the ability to work on something substantial with other people. Students who had trouble working with other people could then do their projects alone. This kind of setup allows students to work in the best environment suitable to them.
The final thing that I really liked about CS10 was their use of Java and the WWW. All assignments had working demos available over the internet. I assume (since they are not available to me) that each student was able to access each other's assignments over the web to see what other people were doing in the class. As well as demos each assignment had programming tips available. When the assignment was completed the correct source code was made available to the students. Finally, the grading metrics were posted as well as the breakdown of grades for the assignment. This full-circle attitude allows students to fully understand the way good programs are constructed, what the instructors are looking for, and how they are doing in the class.
I also question the content of the programs. From my limited experience it often seems that plain vanilla examples used for projects often are very math based. Create a grade-averager, a calculator, a math tutor, etc. I wonder to what extent this seeming math-base in projects doesn't serve to turn off some people to the subject matter. For if one really hates math then one is not goingto have a good time programming something that executes mathematical statements. Having said this and Having been involved in the course development process I know all to well how hard it is to design programs that everyone will enjoy. So perhaps there is no common range that anyone can hit with assignment topics...
One of the biggest problems we have in CS15 is that we really do not know what we should be doing with section time. Currently we feel that it should be a time of reinforcement of the topics covered in lecture. Our perceived advantage is that the students become less intimidated in smaller groups which hopefully allows them to learn better. Also being able to ask questions directly should help students feel more comfortable about the matierial.
But is this enough? Are we properly using our time wisely? I think perhaps not. In order to encourage student participation in section we could merge homeworks with section. That is make homeworks be something that are due directly in section. Students would be required to come to section with their completed homework and be prepared to talk about possible solutions to different problems. As problems get harder we could also create group work as does CS10. This would allow students to directly witness different modes of thought. This would especially come in handy for teaching design.
By also creating small groups for the students to work in we could attempt to bolster confidence amongst the students and help foster a collaborative environment which might be very important for students who do not learn best under solitary environments.
In terms of actually changing the structure of CS15 we really wouldn't have to. Sections are already built into the system as a re homeworks. All we would have to do is combine the to into one, and teach our TAs how to conduct them. For such a small amount of reconfiguration it seems like it might be a good thing to try. However, before installing this type of section in CS15 it would be wise to find out how group-section work actually went.