Sunday, May 11, 2008

Setting up for failure.

As an IT student it, certain things about the way IT is viewed by the rest of RIT. Not the least of which being why everyone I meet always says "Oh, don't you mean 'I Tried'?" when I mention I'm an IT major. I always feel like I need to defend my major, because really...in college we are defined very much by our majors, because once we graduate these will be our careers and we'll be defined by our jobs. Sorry, Fight Club.

As depressing as it is, though, I realize there's an amount of truth to the myth of I Tried. In some sense, anyway. I don't know a single washed out CS or SE that went to IT because they couldn't hack "real programming".

RIT's first mistake is using Java to teach Programming and OOP to IT students. At least in CS you're eventually exposed to C++, but that leaves a bitter taste with a lot of people. They get used to the language coddling them and holding their hand, which is what Java does. In addition, it's incredibly well documented which makes it easy to teach. But the way the sequence is designed, all you do is learn to write code...they don't teach anything about design, or WHY OOP, or the more groady low-down details of programming.
Not that I have any idea what would make a better language...Python maybe? The problem isn't the language, but how they teach it. They spoonfeed you things, and never teach you how to be a programmer. It sets people up to fail when they think they know how to code but don't actually know the finer points.

Since I am on the web track, I had to take RIT's programming for web class, but was lucky enough to be allowed to bypass it. I helped out tutoring some of the students and I was initially horrified at the way to class was taught. It taught students to use procedural, spaghetti code. Now while there isn't anything wrong with procedural code...make spaghetti of HTML and PHP is very bad. It's hard to maintain, confusing to debug, and makes it nigh on impossible to correctly design a large project.
Soon I moved from horror to disappointment when I realized that that was how I learned to code PHP, but I moved on. Unfortunately what I had that RIT doesn't (Maybe can't?) teach is the idea that there is more beyond this.

What they're not doing, is exciting people about programming. Now I'm not saying that they should be trying to get people to become programmers if they don't like it, but there's gotta be a decent amount of people in these classes...especially track courses...that already like programming or are just looking for a reason to.
In programming for the web, RIT should show off some cool stuff that PHP can do. CMS, templating code, sessions, security layers, image editing...interact it with some javascript. Make it do cool stuff on the backend, like talk to other services and send info back to the browser...and not just databases.
All they teach is code-by-numbers quizzes and blogs. Some basic "stick some PHP in here to pull from MySQL and bake a dynamic website" stuff. Yes it's simple and gives you enough to learn the basics of the language...but people need to know it's a spring board to REALLY dive in, and not the end of things.

RIT's failing us as IT programmers, and it's making us look bad. Not cool, dudes.

--PXA

5 comments:

Unknown said...
This comment has been removed by the author.
Anonymous said...

(Try that again..)

Apparently my post hit home? heh.

I don't think java is a poor teaching language... I think that we just have to be more hardass about teaching it.

If someone sucks at programming, they shouldn't make it past the first java courses... and frankly, they shouldn't be in IT.

I would like to see the homework for the java courses be restructured so you have to EARN points rather than LOSE points... and I want to make it so that if you do not get an A or a B in the courses, you can't move on.

Yeah.. thats mean.. but... it needs to happen. Between CS and IT... IT is the better major for a lot of what computing is... We just need to hold ourselves up to a higher standard than what we are now.

Of course... I say this from a perspective that is much more cynical than I was when I was a freshman

Sloloem said...

@Dave

You do raise a good point. I'd like the sequence a lot better if there was more 'why' and less 'how' and 'what' being taught. It just seemed like Java lent itself to being so large you had to code by numbers because it would've taken too long to know the language. They wanted to focus on concepts.

Changing the course grading like that would encourage independent investigation, since you wouldn't be so worried about messing something up you used code you didn't full understand. I like it!

Unfortunately in today's society it's just not acceptable to hold people back and tell them they're not good enough. But if we did hold ourselves, as a department, to a higher standard the course would teach more and be more difficult to pass so people who couldn't hack it would get filtered out. Isn't that how SE works?

I think we're all much more cynical now than we were then. We had such high hopes when we were Freshman and then somewhere along the line...college let us down in some way.

Anonymous said...

I am a 4th year CE at RIT and I've talked about this subject with many students and some CS professors.

"Programming" has changed. In the old days, it was C for business or Lisp for research. In the way old days, "programmers" were really computer engineers and micro-E's. They knew assembly, a few higher level languages, and how transistors worked. If you want to "program" now, you take SE. If you want to be a "computer scientist" now, you get an advanced degree and become a professor.

Programmers now just don't need to know that low-level stuff, and they need to know process (or really, just which process their company uses). They go to SE.

Computer scientists now just concentrate on theory, and they don't need to know much about process. They go to grad school for CS and do research.

Basically, if you want to be a programmer, learn how to use a process that's given to you and how to learn a language. If you want "groady low-down details of programming," take CS master's classes.

Also, they recently tried Python as CS1 and half of CS2 (it changed to Java after that). It didn't go very well. I heard at one point (over a year ago by now) that they were considering removing CS4 from the CS sequence (which I was enraged about...it has "CS" in the name). I don't think that got anywhere, though.

About people looking down on IT, I've heard horror stories from a kid in my major taking some IT classes about the people there. Some of them have spent two or three years in a computing major without ever seeing a UNIX-based OS. He told me about people not understanding assembly well or knowing what an ALU is, but I wouldn't expect that of IT majors. As far as I can tell, that's not what you're supposed to do. It seems that the program doesn't expose the students to computing well. So, when other computing majors look at people in IT, they see people who don't seem to know all that much about computers.

Anonymous said...

You title the article "Setting up for failure" but I'm not quite sure I see the failure that RIT is setting you up for. I agree that IT does a horrible job preparing their students as programmers, but I'm not sure I see a problem with that. I mean, you mention that CS students at least get exposed to C++, and it seems like you wish IT was exposing their students to it. I personally don't see how learning C++ or any other lower language will help IT students. Most CS students don't even learn much more than a general overview of the extreme lower level languages such as assembly because it is not necessary.

The reason I bring all of this up is if you want to complain so much about the IT department not teaching you programming, why are you in IT. My understanding of IT is to maintain computers, ensure security, and maybe web programming. And seeing as you are on the web programming track, it makes complete sense to teach you PHP and HTML. Learning other languages such as C++ or LISP won't help with web programming so maybe IT is doing the right thing by not making their students all programmers.

Just my two cents.