MS/Waterloo Curriculum Deal On Hold
Plummer writes "After announcing a recent deal with Microsoft that would see C# become a mandatory portion of first year electrical and computer engineering, the University of Waterloo has backed off and asked for a year to evaluate the proposal. The year will be used to evaluate the merits of the language and ensure that any curriculum changes made, will meet the standards UW engineering is known for. The full story here and here."
Too many languages. C#, C++, Object Oriented C, Java, Python, Perl, C, etc etc. Besides, why teach C# to students who don't understand the fundamentals of C?
------- "From bored to fanboy in 3.8 asian girls" ----------
He did not regret the agreement with Microsoft itself, he regrets to announce a change to the curriculum without following the established procedures.
This does not mean the deal is off for good, just put on hold for a year to allow the curriculum committees to make a decision.
Remus
The more CS classes, the better I say, hell Id love to take that class. Why? My resume, I try to learn as many languages as possible. Well, ones that employers like most I mean. Suck it up, take the class, get it on your belt and add it to your resume. You'll become more skilled, and maybe even have a chance at getting a job in this economy...
In college, really poor, need a flatscreen.
This is a rare occasion where a public organization regrets a MS agreement.
Or...
This is a rare occasion where an organization publically regrets a MS agreement.
????
"Linux is a serious competitor"
- Steve Ballmer, Chief Executive Microsoft Corp.
Ummmmm.... Sun saved Java by preventing MS from including it in Windows. This was just an MS plot to seemingly make Java a standard but in all reality fucking up the JVM so that Java would die from incompatabilities.
The problem isn't that a C# class would be offered, or even that a C# class would be part of the required curriculum.
The problem is that the school agreed to make a C# class part of the required curriculum in return for money.
Schools have no business selling access to their students' minds in this fashion.
Java and C# are not the same thing. Seriously. C# is pushed by MS. Sure there is Mono, but you cannot actually build a real application with it. With Java I can build a real application from either Sun, IBM, Kafee, or other JVM's. And the Java from IBM is the same from Sun. However, Mono.NET is not Microsoft.NET. Mono.NET uses GTK# for its UI, whereas MS.NET uses Windows.Forms.
.NET is a bad thing. I actually like C# and things it is a great language. But C# is like VB which is like Delphi. Great environments and languages pushed by a single vendor. Java is like C++, which can be had from multiple vendors.
I am not saying that C# or
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
There will always be politics at universities, but politics between faculty is much better than the politics of companies coming in and trading cash for curriculum.
The University is one of the last of the good places, where faculty generally try to put together a curriculum that they believe is in the best interests of the students. There are often violent disagreements, and some faculty just want to teach subjects because it's their favorite area, but in the end, it's just a big war of words with low-level university politics being as bad as it gets.
But now, when you throw in multi-million dollar deals, the balance swings dangerously in the direction of a curriculum that is constructed to be in the best interests of a company, and not of the students. When you put up the beliefs of faculty against a multi-million-dollar behemoth, the faculty lose, they lose their spirit and dedication to the best interests of the students, and we all lose.
The only winners will be rich companies who will be able to afford to convert universities to their own personal training academies.
Because C/C++, despite their widespread use, are not all that great choices for application languages. The biggest thing they have going for them is that they're fast and have lots of libraries available. OTOH, they aren't the quickest language in the world to debug, they have a pretty weak type system, there are a lot of minor incompatibilities in compilers...
Perl/PHP are fine...but as you said, for web apps (or perl for scripts). Not well suited for general app dev.
A lot of people don't like python, and python is not what you'd call blazing fast.
Javascript is a joke. It's for annoying web page junk.
Java is the closest thing to a modern application language -- it's compiled, it does bounds checking and whatnot, but it has a few severe flaws. It's very memory-hungry. Despite years of improvements and promises, it's still awfully slow compared to C/C++. It puts too much emphasis (IMHO) on architecture/design, like OO and interface design, which is awfully overwhelming to new CS students.
We need an applications language. It can't be hideously slow (like most of these proposed C/C++ replacements), so at most it could do RTTI and array bounds checking at runtime. If you have a really expressive language, your compiler can go gonzo optimizing, a la Eiffel or SML or Ocaml.
It'd be nice if it had a somewhat less foreign interface -- SML and Ocaml are a bit much to swallow if you're used to C.
C# -- dunno about performance implications, but it's gotten grudging approval from some language people I know -- seems like it might do a good job of filling the gap that Java tried to fill.
Of course, I'd much rather a non-MS language become big...
May we never see th
The problem in reality is that most resumes are reviewed for language experience and not conceptual areas.
I sort of agree with your sentiment that a learning a particular language is trivial once one learns the concepts of software engineering.
To become an expert in a language though, is a non-trivial task. In the real world, it is very important to have a good amount of experience in a particular language. Simply knowing certain design patterns is not enough because each language has it's own traits that affect which patterns should be used.
From a software engineering standpoint, a project should be architected in two completely different ways depending on whether its being implemented in Java or C++. Why? Each language allows for a different degree of object orientedness.
int func(int a);
func((b += 3, b));
Java is already proven and adopted industry-wide. C# is not. MS is being called out for attempting to gain a bit of de facto acceptance by the old 'indoctrinate the youth' ploy. All those saying, 'what's wrong with more languages being taught', I say, go invent a language and see if you can get it taught as a required course a year later at any university.
LEXX
"Gold still represents the ultimate form of payment in the world." - Alan Greenspan, 1999
The last time I cheked JAVA is downlodable for free from Sun Why do they need to get paid by some corporation to teach a closed essentailly proprietay language built by a company only for their own financial gain in the long term. I have no problem with universities teaching languages such as JAVA,c#, etc. This is the way of the future - in 10, 20 years no one will have the patience to deal with plain old C or languages like it. (Hmm, umm, yea..nobody uses old languages like cobol anymore! ;) But when universitys are essentially being bribed to become high level certification courses for some companies products we are moving away from what CS is supposed to be teaching you - general techniques that will be applicable throughout your lifetime as a computer professional versus what immediate professional skills will be applicable when you graduate.
If religous zealots don't believe in Evolution, then why are they so worried about bird flu?
I agree that experience in language XXX is a primary criterion in screening resumes.
It's important to point out that most UW students are in a co-operative program where they are looking for their first jobs immediately following their first year or even their first semester! In fact, Engineers (for whom this controversy developed) are required to be in co-op. The languages taught in first year classes have a direct bearing on students' suitability as job candidates.
When I started at UW, first year CS students were taught using Pascal running on Windows and then moved to Modula-3 (haha) on Unix. On the other hand, first year Engineering students learned using C++ on Windows.
I found the use of Pascal and Modula-3 nearly crippling in the entry level co-op job market as most employers and the most desirable positions often required C++ experience. If not C++, then Java.
Fortunately for the freshmen CS job hunters, CS now uses Java and C++ to start off with.
As far as I can tell, most serious development is still carried out in C++. It's efficient, powerful (though perhaps too loose), and sufficiently portable if you're careful. I think the switch to C# could be detrimental to the Engineers if it is used at UW before it gains widespread industry acceptance. Whether it is ever adopted by industry is another matter.
Another thing worth mentioning is that (Computer) Engineering students at UW already have a strong Microsoft bias. Their development experience is typically using MS Visual Studio on MS Windows. So I don't think the switch to C# from MS style C++ is a big philosophical issue.
The CS Department (now the "School of CS") in the Math Faculty has always had a strong Unix bias. We usually use gnu tools on Solaris. CS at UW still has a "Go Unix, down with Evil Empire!" attitude.
Although I agree that CS concepts are not language dependent, the job market sure is! It doesn't hurt to have a variety of language experience, but C# is a poor choice for students' early job prospects. But I'll let the Engineers battle that one out!
I'm open to correction or criticism. The above is just my take on matters.
I second the other posters that the first programming langauges taught should be Scheme AND assembly language (though I would probably recommend MIPS instead of x86). I have heard that Berkeley does exactly this. First semester you learn Scheme. Second semester you learn assembly langauge. If you can survive/master those two languages, then all other languges will simply fall somewhere in between on the spectrum of programming langauges.
cpeterso
So what was your point again?
In reading it, I thought the point was clear.
Microsoft paid a university to change their curriculum. Sun did not. Sun never required Java to be taught. Sun never said you could only teach on their platform, etc. Microsoft not only piad to change what is taught, but to make sure it is only taught on Windows. (Article indicates Windows was a required part of the arrangement.)
I'll see your senator, and I'll raise you two judges.
Sun owns Java
Sun owns the Java trademark, not the language/APIs/specifications, as I suspect you well know.
The C# standard is of limited value because it is such a small part of Dotnet, and unlike Java, other vendors aren't producing Dotnet implementations.
The difference is real diversity in the market vs. fig leaf endorsements.
I have been corresponding with some Waterloo faculty (I am a UW alum) and learned that the University Administration sprang it on the departments as a surprise, without consulting with the curriculum committees. Computer Science (in the Math Faculty) was adroit enough to avoid getting caught in this meat grinder, but ECE (part of the Engineering Faculty) was not so lucky, and had this agreement announced on top of them.
So whether it came from Microsoft or not, it did not come from the faculty, and thus was fundamentally motivated by money.
Crispin, U.Waterloo BMath/CS class of 1988
----
Crispin Cowan, Ph.D.
Chief Scientist, WireX Communications, Inc.
Immunix: Security Hardened Linux Distribution
Available for purchase
You're force-fed twice as many different languages?
Well, damn, in first year our profs make up a language and expect us to write a fully functional compiler for it.
Depending on how you take your courses, in first year you've already designed most of your own MIPS chip.
And I don't think you've finished ahead of Waterloo in recent years. Waterloo's taken the top spot for at least 5 years running.
Microsoft now recruits from your co-op program? I hate to break this to you, but on the Microsoft benchmark... they rank UW as the #1 university in the world (recently they tried to hire more than 80% of the graduating computer engineering class).
Waterloo CS graduates computer scientists and mathematicians who are highly capable at both theory and practice, highly motivated and excellent problem solvers. Guelph graduates code-monkeys. Your obsession with programming languages and coding really demonstrates this point nicely.
I know a guy in second year who spent the summer designing and implementing a new garbage collection system for Java that's about 5x as efficient as the garbage collector most implementations use (including the high performance ones). And no he's not top of the class or anything, just an average UW CS student.
Oh, and some advice: almost all computer languages are the same. If you actually know your stuff you can pick up a reasonable language (i.e., not malbolge) in no time at all.