Reaction for: OO Programming, by Shoe

Being thoroughly familiar with the contents of this paper I feel compelled only to talk about what can further be done. But first I will comment on how what is proposed here has actually turned out, in my perspective.

Black Box Code == "Magic" : While it is true that having library code allows students to understand many OO concepts, it also provides a serious drawback in that beginning programmers do not get to see the entirety of the program. Where this causes problems is that beginning programmers tend to need to see the trees for the forrest, that is, the big picture, in order to understand all of the concepts they are trying to learn. So far this hurdle has not been cleared.

Syntax : While focusing in on OO concepts first does give the mentioned benefit to beginners it does create a problem in that learning syntax is more difficult. This hurdle, as well, has not been cleared. But it also hasn't been given much attention. Diagnostics to reinforce understanding of syntax may prove to be a good solution.

Design : The one area of teaching OO concepts that we always believe we fail in lies in the arena of teaching design. We really aren't sure of what our role should be in teaching design. Do we teach it accidentally or do we come right out swinging with design patterns galore? IF we do teach design, how do we do it best? Are students working alone the best answer, is groupwork better, or are TA led labs the way to go?

We have no current idea and are actively searching for new ideas. I personally believe that at first students should be led through the process in a lab type setting. TAs would lead the group through the entire design of a project from specification to implementation. Then, students on their own would have to do the process again, with another project. They would be required to document the entire process.

Conclusion : Teaching OO concepts in one course is very difficult because there are so many areas to cover. If it is decided that this intro course should cover all concepts then it remains to be seen how they all fit together and what the best means are to give the students a good command of these areas.


Reactions


Matt C's reaction

I agree that we need to teach design in a better way, and think that section or a lab is the best way to go. I did a version of this in the extra Street help session that I gave, and I think students benefitted from it a lot.


Amanda's Reaction

As for that seeing the trees in order to see the forest... I think that it is really, really difficult to give students a broad background where they could program java anywhere after the course. People, students, need to be given things like a library, wave, and other things so that they can advance beyond the rudamentary programs...it is these tools that allow us to make Cloud as our first project rather than Hello World. It is these tools that make 15 a great course...a fun course. But while all this is true, coming fresh from 15, I don't think that I am skilled enough to actually take a job to write in Java...but that's not the intent. Still, even the transfer from Wave and the simplicity of 15 to Java Workshop and the "self-help" characteristic of 16 is proving to be difficult for me.

As for that help session that Matt put on...I was there. It helped alot.


Matt's reaction

If we could find a better way to teach design it would help a lot. I attended the help session that Matt gave for Street, and it was really helpful. If TA's could lead a section like that for an extra project, a project that closely resembles the assigned program, it would greatly help students understand design. Perhaps these sections could be offered in conjunction with help sessions for the early programs. Instead of having one help session, try to do the help sessions in section and go through the design of the sample program (the example from the help session) in great detail; this would help to emphasize good design habits early on.


[BACK]