bonesawosu at gmail.com
Mon Feb 9 04:29:31 EST 2009
I think Tyler's analogy was very good. If you only spoke German (only knew
resolve) and wanted to go to a English (java [or any other "real" language)
speaking school (internship/other cse class) then you would have a harder
time keeping up. You would spend the whole time learning English (java) and
would have less time to work on the actual task at hand (actual
programming). I don't think that the languages (English and German) really
have anything to do with the overall concept he's trying to explain.... so
you should focus more on what is metaphorically being said.
Have you looked at the 221,222,321 sequence syllabus/notes lately? Resolve
C++ is definitely meant to seem like it is it's own language. That class
couldn't be any further from C++. They call 'classes' 'components' they use
'INTEGER' instead of 'int'... they pointers are checked pointers so they
aren't as cool as real pointers. You mention that it's a C++ class, but it
just isn't even close to being C++.
The class is based around Bruce Weide's research. They try to make it seem
like in software design you use 'requires' and 'ensures' clauses for
everything, and those clauses are based on these cryptic math definitions.
But in real-world development you don't do that. So why focus so much on
that? It's just not focused on the right thing. It's a huge waste of time to
force students to put Bruce's research into practice. Resolve is an idea
better left for research. You may still think resolve is a good language to
use.... but do you think it's a good idea to teach students practices that
aren't actually used in the real world? Concepts like recursion are
useful... but requires and ensure clauses aren't. If software design should
be taught with a language like resolve then why does MIT use Java in their
introductory software course? Why does Stanford use Java? It seems like
school that are producing the type of talent they do would know what to
teach. So why don't they teach resolve [or some other language that one of
their CS faculty happen to be researching] ? It's not like I'm suggesting
anything more than to switch to doing things the way other colleges do it so
that OSU students won't be behind in terms of skill/knowledge/exposure. You
can defend resolve to the death... but I just don't think resolve it worth
This might also be a good time to ensure we are all on the same page in
terms of what we are arguing. I consider resolve to include the 'requires'
and 'ensures' clauses... the parameter modes... the math definitions... and
the different syntax (INTEGER instead of int, TEXT instead of string,
COMPONENT instead of class, etc.). That's what I want to ditch. The part
that can be transferred over to a java based course would be things like
recursion, trees, linked lists, sorting, pointers (please don't respond with
comments about java not having pointers because you could easily implement a
pointer class that is equivalent to what they use in resolve since they do
zero pointery things with the pointers they use in resolve). And java would
be able to add in things like Object Orientation, IDEs, source control (MIT
gives every student a repo to use during their entire school career),
libraries, private/public/protected, and sooo much more if they wanted.
It seems like it should be a simple argument... a SOFTWARE ENGINEERING
course should focus on teach students real-world SOFTWARE ENGINEERING. But
for some reason everyone want to argue why we should learn about Bruce
Weide's research during our software engineering course and then just learn
actual software engineering on our own. I don't think I'll ever understand
the logic behind that argument. I think they should at least change the
title of the course to "Introduction to Bruce Weide's Research". That way I
couldn't complain as much about them not teaching much actual software
engineering in our "software engineering" course.
On Mon, Feb 9, 2009 at 3:32 AM, Shaun Rowland <rowland at cse.ohio-state.edu>wrote:
> On Feb 8, 2009, at 12:34 PM, Tyler Sampson wrote:
> However, I ultimately find the method to be flawed. Let's go back to our
>> natural language analogy. Let's pretend that we're parents of a newborn
>> child (a freshman!). We want to teach our child how to communicate
>> effectively, and good concepts behind language. Unfortunately for Junior,
>> English (read: C++) is a really terrible language for this. There's lots of
>> confusing syntax and inconsistent rules. So, rather than teach Junior
>> English, we decide to teach him German (read: Resolve). It's sort of like
>> English, but the rules are a little more predictable. (Note: I'm not a
>> linguist so I don't know if German is actually less complicated than
>> English...just assume for argument's sake that it is.) So, we spend the
>> first 5 years (read: 221/222/321) of Junior's life only speaking German to
>> him. Then, we send Junior off to Kindergarten (read: internship search, or
>> CSE 560). Uh-oh! It's an English speaking Kindergarten (he understands
>> Kindergarten, since it's a German word, but that's about it). Junior fails
>> and gets put into the remedial class. Of course, since he has such a great
>> understand of natural language concepts now, he flies through the remedial
>> class and is soon speaking English pretty well. However, he is now far
>> behind the other children, because he failed Kindergarten.
> The analogy seems about as flawed as you find the method in my
> view. I'll use the same terms. Kindergarten in this case does
> not require that you speak German. If you don't know English,
> you can speak German. This is true if kindergarten is CSE 560.
> You can take English classes before kindergarten as well (in
> both cases if you are a CSE major). I don't know where this falls
> in the ECE sequence exactly, but to me that's ECE's problem to
> figure out. These are core CSE courses. That's just a view on
> how best to serve the students of the CSE department. Maybe if
> an ECE major is depending on a language so much, they should be a
> CSE major instead? It seems a little odd that the languages
> an ECE major knows would be so critical to their job prospects.
> If this is so important in getting a job that requires an
> in-depth level of experience using Java, C++, or whatever
> then it seems to be something geared toward software development.
> If what I said is true, and it seems it would be for at
> least most cases, then this seems more like complaining
> about the whole method because it was found to be annoying.
> If the language used is more important and I just don't
> see it, then perhaps ECE should make an adjustment to better
> serve their goals. I realize there is the possibility for
> a grey area here too, and then again - the world is not
> perfect either.
> Additionally, thought I realize this is just an analogy, the
> differences between English and German aren't the same as between
> C++ and Java in my view. I am not a linguist either, but that
> seems accurate to me. Since I am not a linguist, I am just
> offering that as an opinion which has no strong background
> (except how it is easier for me to learn a new programming
> language as opposed to a spoken language - so practical
> Maybe the situation I have provided above is a bit contrived, so let me
>> explain my point straightforwardly: there is no reason not to teach a "real"
>> (i.e. industrially used) programming language for teaching concepts. Now, as
>> I have said, C++ would be a bad way to do this. It's clunky, got terrible
>> syntax, etc. I have not seen one good reason anywhere on the Resolve website
>> that explains why Java cannot be used. The only thing I see is that they
>> want to hide reference/value semantics until the second half of the
>> sequence. I had no experience with Java coming into 421 (which I took last
>> quarter). I was shocked at how similar many of the things that exist in Java
>> were so similar to Resolve, such as interfaces, extends, abstract, etc.
>> (that basically are represented by virtual void or =0 in C++).
>> I get the argument of using an easier to understand language to teach
>> concepts. Java is that language. The way the sequence is taught now
>> accomplishes its objective of teaching concepts of CS. But if it is possible
>> to do the same thing, while giving students experience with a programming
>> language that is functional outside the Ivory Tower, then why not do it?
> Perhaps because we've moved on from changing the language to making
> fundamental changes to the method used to teach the concepts. If
> anyone can answer how changing the method used to teach the concepts
> now in such a way that it offers more practical Java experience, then
> they might have a shot at changing things. This goes way beyond these
> analogies. That is something best discussed with the implementors.
> The view supporting changing the language seems to be geared toward
> this idea that it'd just be a simple thing to do. If it were so
> simple, then one could argue that the course would already be
> a practical C++ learning experience. It certainly is not seem
> that anyone has that view.
> Shaun Rowland
> rowland at cse.ohio-state.edu
> Opensource mailing list
> Opensource at cse.ohio-state.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Opensource