Object-Oriented Programming

Ahh.. I think that some form of contentment and happiness occurs when people mention CS15 to me. For some reason, it sounds like the most natural thing in the world. Ok, Ok... I know I am biased.

Having experienced the course described in this article and having enjoyed it and gained much knowledge from it, I know that I have a biased viewpoint. As is noted in the article, one of the greatest benefits of a course designed around OOP is that there is no need to deal with the conversion between procedural and OOP. Those with procedural background must immediately forgo that knowledge and start fresh. Some of the resultant frustrations that occur is that in order to program from the start, much "magic" and hidden support code is necessary.

The OOPSLA article stops on a "we will see" note. Having experienced the proposed course and seen it go through changes, it is apparant that the change has been successful. Already, a group of students have gone through the program and have successfully become part of the industry (in many cases, at the top). Initially teaching OOP has been extremely successful at Brown and I would love to see it implemented elsewhere.

One of the issues addressed in this article is what language to use. Although we have since switched to Java, part of me feels that a language such as Dylan, Eiffel or Self would be more appropriate. Often, I feel that the result of using a pop-culture language is that a course takes a different feel. It is no longer perceived as "Intro to OOP" but rather "Intro to Java" and that is cumbersome. In addiiton, there are many issues with using a industry-wide language. Although it allows students to know a programming language that will be used elsewhere, it forces them to think that this is going to be the language that they will use forever. I often wonder if it might be better to use a rarely used language in order to present only Object-Oriented Thought.


Reactions


Matt C's reaction

It's true that many students come into this class expecting to be able to be industrial-strength Java programmers. Knowing that this is not the intention of the course, it seems tempting to avoid that by using something that discourages that assumption. However, I think that in teaching Java, we give students who desire it the tools needed to learn what they need to know to write their internet programs or whatever. So while some may be disappointed not to learn AWT, at least they have the Java experience to make learning AWT a lot less painful.


Amanda's Reaction

As I've stated before, I love Java. I'm very glad that my intro course is in Java. If we did decide to use another language like self, it would help to learn Java later with hard core OOP background. But still, Java would eventually have to be learned.

I was one of the students that was disappointed that we didn't learn AWT. Since then I've intended to get a book or something to learn it but I haven't gotten around to it...I will though. But still, I don't know how hard it is to program in, so I can't really say, but I do kind of wish we'd learned it...just with a lot of support code. In fact, I think I'd be in favor of a Graphics Package built on AWT. But then again, I really know nothing about it. It did kind of miff me that I couldn't actually use the programs that I made...I couldn't display them on the web... But at least I came away with it with a language I can use later.


Matt's Reaction

I think that it is important to recognize that not all procedural programmers can easily drop what they have learned and start fresh in OOP. It is hard to stop using booleans and case statements when they're almost second nature to you. Overall, however, procedural people do seem to see the value of OOP. In reguard to the language, I think Java is a good choice. It not only attracts people, the course changes their focus of interest, but it also provides students with a tool that is in demand in the industry.


Saul's Wisdom

Doing it in Self or Eiffel I believe would be cutting off one's nose to spite its face. So much of what we emphasize and teach about design is theoretical; it is rare that we can give concrete examples. With that being my view, I believe that using a non-industry language would alienate many students. Don't forget, cs15 is also a class for people not going on in the department. Learning Self as a job skill is not exactly what we would be trying to do In essence, I believe that cs15 is a combination of OOP design with relatively practical purposes. To do it in an almost theoretical language that has very little use anywhere would minimize its impact on students and the cs community.


Danah's Reaction to Amanda's Reaction:

During CS15 and CS16, I was also very upset that we did not do AWT but was very swayed with the "Why CS15" question. The goal of CS15 is NOT to make you an industry slave programmer. The goal is to teach you how to think. Hell, let's teach Self!


Lucas's Reaction

In response to Saul: It doesn't seem to me that many people come into 15 not planning to do something more (at any level) in the department. 15's reputation definitely preceeds it, and I think that a lot of people knew (to some extent) what they were ge tting into when they enrolled. Do TA's feel the same way? As far as I understand, the one semester programming course is CS4 -- 15 is intended for those who plan to go on.


Andrew Schulak

It would probably be useful to read the paper(s) produced by the GISP that actually went through the languages and decided which to use. There would most likely be a wealth of information that pointed to their decision.

While it is true that some students feel that CS15 is an intro to Java and that is all they expect to come out if it we must also remember that every person has different expectations of what things are and what they want to get out of things. It is not our intention to fool or mislead people by using a "pop-culture" language. It is our intention to use Java as a language to teach what we want to teach, which is OO Design and Programming. For this, I think Java is a very suitable language which also adds the backup punch of being useful to know.


Danah's Reaction to Saul:

I disagree. I do not think that we are training people for industry. We are training people to think in an object oriented way. This is not a tech-school and we should not teach people something for industry; we should teach them to learn. Self would be very viable if it was not for the politics. In fact, I would hypothesize that Self would be a far better language than Java.


Danah's Reaction to Lucas:

Although most people think that they may CONSIDER majoring, there is a good chunk of people who take CS15 (and finish it) but do not continue on in the department.


Danah's Response to El Zapato:

The best person to talk with about this is Robert since he was a part of the group that researched what to turn CS15 to (as a GISP, no less). Their reasonings are rather interesting.


[BACK]