Fog Creek Software
Discussion Board




Universities' Crusade Against Microsoft

What's going on in this country's CS departments?  I've been a software engineer for ten years, and I'm half way through my MSCS and I don't believe there has ever been a reference to a Microsoft development tool in school. 

Love Microsoft or hate it (and I seriously hope this thread doesn't degenerate into a stupid Windows vs. *nix flame war) its development products absolutely should not be ignored after five years of Computer Science training.

...And I'm not exaggerating:

* Java is the official language of the department.  It's ridiculous to have a toy language as your official language in the first place - computer scientists should be taught in C/C++.  But it seems to me that they made this choice simply so they could turn out a generation of coders without experience in any Visual Studio language.  Including the only real languages *every* computer scientist/software engineer must know, C/C++.

* Database courses without a single reference to SQL Server.  Oh yes, there were references to Adabase, MUMPS, DBase and DB2/400, but it is as if there never existed a company called Microsoft.  (Any interaction we had with an actual RDBMS was, of course, with Oracle.)

* Assembly Language class? Only MIPS.

* Operating Systems?  They actually mentioned Windows, but only in passing.  Any programming was done with Nachos / Unix systems programming.

* Computer Architecture?  Only MIPS.

* Compiler Design & Implementation?  Written in Java to compile a subset of Java.

* Heaven forbid that a student even use Excel.  In a Natural Language Processing course we were instructed to do statistical analysis of word usage after processing a large number of documents from the web.  The project required a presentation of histograms of some statistics.  I was reprimanded and had points taken off because I used Excel.  (Mind you, I did *no* processing in Excel.  I simply used Excel to print my histograms for my presentation.)  It is also interesting to note how the professor presented her histograms: with little asterisks printed out on the same line as the element being analyzed.  Apparently it's more academically sound if it's character based.

anon
Monday, February 10, 2003

Those who can, do, those who can't, teach. 

Oh yeah, and those who can't teach, teach phys ed.

One of my college profs sprinkled his presentations with anti-MS propaganda because he figured that he might as well get to you before MS did and he hated MS.

It's the same reason why college profs tend to love functional programming to a fault.  They are overcome with a desire for absolute, flawless perfection.

w.h.
Monday, February 10, 2003

I wouldn't hire a programmer who wasn't intimately familiar with C no matter where they graduated from.

All the graduates of universities in India know C, BTW.

Dennis Atkins
Monday, February 10, 2003

the CS program at Old Dominion Univ. in Norfolk, VA, has a decent balance.  the computer labs all have win2k boxes with visual C++, and a couple of the intro C++ classes use it.  then the higher level, data structure classes and such use UNIX and g++ as their main compiler.  so by the time you're finish, you have a good grasp of project development in both.

well, ok, not so much in VC++, but at least you've made some console apps in it.  but ya, there are a number of profs that seem to despise microsoft.  i find it tough to believe that *everything* microsoft has done is evil and a bane to true computer science.  <shrug>

nathan
Monday, February 10, 2003

I think you're in an exceptional institution. Our local Uni recently signed a deal to teach exclusivly MS languages and envirronments in its introductory courses. although this was overturned on the grounds of diversity.

Universities are there to teach you programming principles. Once you've learned Java to BS level you should have no difficulty switching to C++.
Our company would happily hire you (if you had otehr relevant experience) and absorb the cost of teaching C++.

David Clayworth
Monday, February 10, 2003

So far in my program I've taken Discrete Math, Java, C (in Unix), Networking, Visual Basic .NET, and COBOL.  Haven't detected any biases of any sort except an obvious anti-C bias by my COBOL instructor, which I treat with the seriousness it deserves, coming from a COBOL programmer.

(Not that I have an anti-COBOL bias.  Everyone should learn COBOL; how else can we read old COBOL programs so we can rewrite them in _real_ languages?  :P  )

Granted there isn't a C# course in the program, but I don't see a lot of anti-Microsoft raving.  I personally wish they'd teach us to be comfortable programming on different platforms, not just the latest version of Windows.

Incidentally, the lab PCs run Windows 2000; we had to telnet into a Unix environment for our C/Unix course.

Kyralessa
Monday, February 10, 2003

"and I seriously hope this thread doesn't degenerate into a stupid Windows vs. *nix flame war"

no, anon, apparently you wanted to start a language flame war instead.

1) we're making a hell of a lot of money on that *toy* language. When it comes to paying the bills, it's no toy, irrespective of anyone's opinion of java's technical qualities.

2) regarding c/c++, given the opensource compilers, since when is visual studio the only acceptable platform for c/c++?  Even with academic discounts, it wouldn't surprise me if the cost of programming tools is a decision factor for some departments, and it's hard to beat free.

3) having fired back with those two points, I've got to say that I agree with your core points -- yes, MS can be hated or loved, but it cannot be ignored, and if a university wants to prepare its graduates to be useful in industry, they're going to need some appropriate exposure to the tools and applications from Redmond. I'm also a believer that one should generally try to understand the nuts and bolts of things at as low a level as it's practical for them to do, which means I agree that a cirriculum that omits C/C++ is similarly failing to prepare graduates appropriately.

If you check other threads here, though, the proper cirriculum for degrees in computer science and software engineering has been pretty hotly debated a number of times already. It seems lots of folks (at least here) are fairly unhappy with how it's done now.

Seems like this is just reinforces the criticisms others have made of university programs.

anonQAguy
Monday, February 10, 2003

anonQAguy writes:

"1) we're making a hell of a lot of money on that *toy* language. When it comes to paying the bills, it's no toy, irrespective of anyone's opinion of Java's technical qualities."

I personally *love* Java.  I also love Visual Basic and Delphi.  They are all tools to help greatly increase my productivity as compared to C++, which I also love.

They *are* however toy languages in that they abstract away everything necessary for a real professional to know.  When you are a student of computer science or software engineering, Java, et. al., do not fit the bill because you can't see what's going on under the hood.  Plain and simple. 


anonQAguy also writes:

"since when is visual studio the only acceptable platform for c/c++?"

I have no idea how you inferred this from my comments!  Please tell me specifically how this is suggested in my post.  I explicitly stated, to the contrary, that C/C++ are languages that *every* computer scientist / software engineer must know!

anon
Monday, February 10, 2003

As a matter of fact, VC++ prior to .NET was the least suitable compiler to learn C++ as it was not standard compliant.

At the university you are supposed to learn concepts and get some fundamental knowledge as opposed to learning a particular flavor of some compiler coming from a particular vendor irrespectable to that vendor's size.

Passater
Monday, February 10, 2003

<Quote>
I explicitly stated, to the contrary, that C/C++ are languages that *every* computer scientist / software engineer must know!
<Quote/>


Care to explain why?

There's lot of languages that are much better platform for teaching every aspect of programming (meaning problem solving).

drazen
Monday, February 10, 2003

Passater writes:

"As a matter of fact, VC++ prior to .NET was the least suitable compiler to learn C++ as it was not standard compliant."

I never suggested that you learn C/C++ using VS.  I said:

(1) C/C++ must be the standard languages of a computer science department.

(2) It is not an adequate Computer Science education if you have *no* exposure to the world's most popular development environment.


Passater also writes:

"At the university you are supposed to learn concepts and get some fundamental knowledge as opposed to learning a particular flavor of some compiler coming from a particular vendor irrespectable to that vendor's size."

Um, dude, what?  I assume when you refer to "a particular flavor of some compiler coming from a particular vendor irrespectable to that vendor's size", you mean Sun's Java!

anon
Monday, February 10, 2003

Perhaps it is the case, as at most institutions of learning, that they are working on a tight budget, and don't want to or cannot fork over the money for MS development tools?

Robert
Monday, February 10, 2003

The purpose of universities is to inculcate mental habits leading to professional behavior and to teach fundamental concepts. 


What I'm saying is that the position of departments that use Java instead of more commercially currently valuable languages is that they are probably more interested in teaching concepts rather than nuts-and-bolts.


Also, the academic culture revolves around the notion that mastery of knowledge and not employability (nor necessarily even results) is the ultimate worthwhile goal. Even though the job market is glutted with Java people, that's not the problem of CS department heads.


But I would expect the attitude among faculty at "downscale" vocationally oriented 2 year colleges to be *considerably* different.


I was in college in the late Paleolithic (late 1970s) and I worked part time at a computer store, programming in BASIC and assembler and debugging and repairing 8 bit based PCs. My engineeering profs were completely ensconsed in bipolar transistor logic and TTL level functionality. Whenever I asked them about the applicability of what I was doing in my job to the curriculum, they acted like it was in a completely irrelevant space of no immediate nor mid term consequence. They kind of made me feel like I was being presumptuous and foolish.


The *only* thing is - I landed my first job (at an HP development facility, and this is well before HP was corporated mergered to death) due to technical points that I had absorbed in work at the computer store and in reading BYTE.  The foundation coursework from my school was a total given. They wanted to know what I knew that was in excess of an "ordinary" student's background. Which still wasn't much but it was enough.

It was at that time that I realized that it's not important to a university whether its graduates can find work or not. It's literally not their concern.  All that profs care about is proving their own point, whatever it is. If it's that Microsoft is the Great Satan, so be it. They have tenure, they don't need to give a s*** about anything real or important, and actig and speaking anti-capitalistically plays wonderfully in the thought policed, forcibly diverse "progressive" climate of the typical university.


Now, I am a big fan of higher education, regardless of its flaws. I've personally always found "something" quite lacking from the repertoire of those who didn't take or complete college, and it's usually a sense of acting as a professional rather than schlocking things together for the sake of expediency in order to get past individual fire drills. People who never went to college will never know this; they get defensive and insist that self taught out the chute is the only way to go. College also helps students "learn how to learn" and learn how to reason, another common gap in the repertoire of the informally schooled.


But basically, you *have* to take care of yourself, period.  Java may or may not be sufficient to enter the workforce.
College is only the bare foundation of a professional's toolset.

Edjucaided Raydnayk
Monday, February 10, 2003

Most universities actually get a fantastic deal on Visual Studio. The school I attend (when I'm not working like a dog for a few $$) will burn copies of VS.net for any CS student for a cost of only $2. The whole arrangement is approved by Microsoft.

They know that if they can get students used to using their tools during school, they will want to continue using their tools in the workplace.

So I think that financial burdens can hardly be a problem for universities to use MS products. I think that instructor bias is a much bigger issue.

I think every CS student should have experience using VC++, VB, Java, SQL, x86 Assembly, at least one web scripting language, and at least one non-imperative language. Any less than that is really cheating students from a well-rounded understanding of CS concepts.

Benji Smith
Monday, February 10, 2003

Add to my little list above that every student should have **practical** experience using unix, including programming in C on unix.

Benji Smith
Monday, February 10, 2003



drazen writes:

"Care to explain why [C/C++ are languages that *every* computer scientist / software engineer must know]?"

(1) Okay, in an earlier post I mentioned that C/C++ let you see under the hood whereas toy languages like Java abstract everything meaningful away.

(2) 99.99999% of the world's major software contains at least some C/C++ code!

And if when you say, "There's lot of languages that are much better platform for teaching every aspect of programming (meaning problem solving).", you are referring to CS101 teaching Pascal, we're not talking about the same thing.  Serious Computer Science / Software Engineering requires C/C++.

anon
Monday, February 10, 2003

Arguing that Java is better than C++ is like arguing that grasshoppers taste better than tree bark. (Thant Tessman)

http://www.sysprog.net/quotec.html

Vincent
Monday, February 10, 2003

Edjucaided Raydnayk writes:

"Java may or may not be sufficient to enter the workforce.  College is only the bare foundation of a professional's toolset."

I vehemently and absolutely don't think that higher learning should be replaced with technical schools for the popular language de jour!  I couldn't possibly care less if Java is sufficient to enter the workforce.  The whole point is that Java *does not* provide "the bare foundation of a professional's toolset."

anon
Monday, February 10, 2003

Anon:

<snip>
* Java is the official language of the department ...
</snip>
No C program at all?  Not even an intro course?  That does seem strange.  Here in the Great White North, C is pretty standard for the first year or  two, then onto Java for OOP concepts.

<snip>
But it seems to me that they made this choice simply so they could turn out a generation of coders without experience in any Visual Studio language. 
</snip>
God forbid!  Development without Visual Studio?  The humanity!  Let's see, programming for 6 years.  Years with VS ... 0.  Corporations I have worked for that used VS as a corporate standard ... 0.  I don't see your point.

<snip>
* Database courses without a single reference to SQL Server.  Oh yes, there were references to Adabase, MUMPS, DBase and DB2/400, but it is as if there never existed a company called Microsoft.  (Any interaction we had with an actual RDBMS was, of course, with Oracle.)
</snip>
SQL 92 is SQL 92, yes?  It shouldn't make a difference how you learned the standard.  Again, I don't see how having MS SQL (can you say 'slammer'?), is a benefit.

<snip>
* Operating Systems?  They actually mentioned Windows, but only in passing.  Any programming was done with Nachos / Unix systems programming.
</snip>
Not learning Windows is just stupid, so I will conceed this point.  This is a very real, must have skill.  Before the *nix guys flame me, just go to monster.com and I think I will have proven my point.

<snip>
* Compiler Design & Implementation?  Written in Java to compile a subset of Java.
</snip>
Its the compiler/grammar theory here you are interested in.  What's your beef with this?

Canuck
Monday, February 10, 2003

I hear more complaints that MS 'owns' the compsci dept in schools.

Assembler and  c/c++ should be learned but do not need to be the primary languages used.  Students should also be exposed to languages that are powerful yet highly productive...and I don't mean java ;-)

http://www.artima.com/intv/speed.html

In python you can easily (very easily) drop down to c when that level of speed or control is needed.  Many universities are taking notice:

http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=python+university+%22computer+science%22&btnG=Google+Search

fool for python
Monday, February 10, 2003

Many universities take the view that they're training you to be a Computer Scientist, not a Software Engineer despite the fact that this is almost certainly not what most of their students want.

As for Java vs C++ etc. All block structured languages are very similar. It doesn't really matter which of C++, Java, Algol, Pascal, Python etc. you learn. Once you know one you can pick up any of the others reasonably quickly.  For the same reason, I think it's a waste of time for a course to bother teaching more than one.

On the other hand, courses on significantly different languages (and the theory that underlies them) are useful. I'm thinking of the likes of Lisp, Haskell and (especially) Prolog here.

...and who cares which RDBMS you use? The important thing is to learn how relational databases work. Whether you use Oracle, SQL-Server or MySQL to do so isn't particularly important.

Andrew Reid
Monday, February 10, 2003

Anon, buddy I agree with you.

I had this prof last semester who always used to refer to MSFT as the "dark side", and everything MSFt did was bad;... not suprisingly he has Win XP & Office XP running on his laptop..

Anyway, this is how I look at it: If you are in the process of getting a degree do no forget that you have to pick up other skills as well, in case of people pursuing CS/CE degrees, it might be learning Microsoft technologies.

Note: I am not here to start a flame war either, just that if your chances of getting a job are more if you learn a few MSFT technologies, then you should.

Do whatever it takes to put food on your table!

Prakash S
Monday, February 10, 2003

anon:

>>anonQAguy also writes:

"since when is visual studio the only acceptable platform for c/c++?"

I have no idea how you inferred this from my comments! <<

You're right. I re-read your original post and see that I had misinterpreted what you had been trying to say here. I had it wrong. I apologize.

Oh. and regarding 'toy' and 'java', I concur with your comments regarding abstraction and not being able to see under the hood. I think, fwiw, it's your use of 'toy' that's got people a little heated here.

I don't know how you mean the word 'toy', but to me it suggests something with which nothing meaningful or serious other than superficial entertainment is achieved. Granting the value of having the tools and ability to work at a 'low level' (i.e. with C/C++), it'd be helpful if you could explain to me how java, considering all the production systems built with it already, is a toy. Do you really mean only because of the higher levels of abstraction in it? Perhaps you're defining 'toy' differently than I?

thanks, and sorry again for my misinterpretation earlier.

anonQAguy
Monday, February 10, 2003

Canuck wrote
>> Not learning Windows is just stupid, so I will conceed this point.  This is a very real, must have skill.  Before the *nix guys flame me, just go to monster.com and I think I will have proven my point.

Except he was talking about an Operating Systems class. Unless you can get the source to Windows, it's hard to teach a course about writing Operating Systems using Windows. Various Unixs (and, of course, Linux & *BSD) have the source available for student to study/extend/reimplement.

RocketJeff (i was just jeff until someone else started using it)
Monday, February 10, 2003

You should learn assembly, and on more than one platform

You should learn compilers to understand how to get code written in a high language converted to machine language.

But doing either of these before you have grounding in some comparison other is difficult.  The teaching lanugage used to be Pascal, now it is Java.

You should have a comparitive programming languages course.  That is where you should learn of the comparisons between C, C++, Java, Python, LISP, Cobol, Fortran, Basic and so on.

You should have an Operating Systems Course.  In this course you should study Memory Management, THreading, Processes, Mutexes, IO, Interprocess comunication, and CPU modes. At this point, you had bettwer learn C, if only so the instructor can compare code from the Linux Kernel, BSD Unix, and ay other code sources where you have free access to the source code.  I'd love it if OS/2, Win NT and Win2K/XP source bases were avaiable, but not if it has to be protected by NDAs or some other agreement that keeps you from being able to use what you leanred (Ala the Mosaic team).

Adam Young
Monday, February 10, 2003

RocketJeff:

<snip>
Except he was talking about an Operating Systems class.
Unless you can get the source to Windows, it's hard to teach a course about writing Operating Systems using Windows.
</snip>

My bad.  I didn't interpert his comment in this context.  I thought he was referring to programming with Windows in general, not specifically OS concepts.  If that is the case, then I would have to side with you.

My comment was aimed at perhaps, a wider problem.  When I was in university, you could have graduated never having touched Windows (some would applaud this!). 

I realize that university is not a vocational school.  But I do also understand that there must be a modicum of practicality to the CS curriculum.  To a certain degree, it does have to teach some practical skills, if only a by-product of implementing the theoretical aspects of the program.  I think learning Windows could have achieved in this manner with the outcome being a greater benefit to the student.

Canuck
Monday, February 10, 2003

That's what a senior project is for.  You want to do Windows, do windows.  Good for you.  Have a blast.

To think that a college should be teaching you to use a "Visual IDE"  -good grief, you're paying money for THAT??

Nat Ersoz
Monday, February 10, 2003

"To think that a college should be teaching you to use a "Visual IDE"  -good grief, you're paying money for THAT?? "

In my list paying money to learn a Visual IDE is slightly higher than paying to learn NP Completeness..

Prakash S
Monday, February 10, 2003

Perceptive, perhaps...

But lazy ass...

Nat Ersoz
Monday, February 10, 2003

Food for thought:

I can't think of any other science or engineering discipline wherein the curriculum is not tied directly to the duties that a graduate will be expected to perform when entering the job market.

Are virtual ivory towers more aloof than other ivory towers?

Nick
Tuesday, February 11, 2003

Because you are learning Computer /Science/ not how to get a job at Microsoft. Stop whining and get back to your homework.


Tuesday, February 11, 2003

There is considerable difference between education and training.  Its not necessary to use a particular language to study computer science, in some ways  concentrating on a single family of languages (Algol type) would be as ruinous as just doing COBOL.

You need to forget about the surface gloss of whichever language you are using and concentrate on the science.  Either that or find a good practical training course.

Simon Lucy
Tuesday, February 11, 2003

Don't worry about it, when I was at Uni in the early to mid nineties we learned Pascal, Modula 2, Prolog and C.

I haven't touched any of those languages since I graduated but they were suitable for teaching the concepts of programming which I use in Perl these days.

Matthew Lock
Tuesday, February 11, 2003

I think a lot of schools don't teach MS tools because they want you to get the big picture of how things really work.

Later after you are a programmer, you can pick up the MS technologies over a lunch hour.

There are some schools that use a lot of MS technology.  I've always held the belief they taught how to do things the MS way rather than how to program.  I tell anyone coming into the field that asks me if they should learn on the MS side or traditional computing side.  I ask them "do you want to learn programming and computing or Microsoft.

gasman
Tuesday, February 11, 2003

You think that is bias? How about this (from a local university in my country):

- Department of CS runs filter on mail server that dumps all messages containing MS office file formats.
- CS professor checks assignments on "end-of-line" characters to check up on whether the assignment has touched a Windows machine (strictly forbidden).
- CS department refuses students access to free software licenses from Microsoft (accepts all other companies: Sun, Oracle, ...)
- CS Professor sends back Windows versions of software donations, accepting only Unix/Linux versions.
- Hallway chatter is an endless Linux/OSS and Apple commercial, MS is ridiculed on every possible occasion is classes (all without any technical foundation).

Just me (Sir to you)
Tuesday, February 11, 2003

Nick has a great point.  "I can't think of any other science or engineering discipline wherein the curriculum is not tied directly to the duties that a graduate will be expected to perform when entering the job market."

Whether my duties are Microsoft-centric or Java-centric, I want to be able to hit the ground running when it's time to get a real job.  I want to be able to say I've learned programming the manly way, AND that I have a few marketable buzzword-compliant skills.

Those marketable skills aren't something you can pick up over a lunch hour as others have suggested, even if they happen to be Microsoft-specific.  The suggestions to "skip college and get your MCSE if that's all you want" rub me the wrong way, because what if you want the best both worlds?  It's a lot harder to find that kind of educational offering than it should be.

It's high time the academic world acknowledged that the majority of CS graduates will do business programming, and actually prep them for that in addition to (but not as a replacement for) writing compilers and Turing machines.

ODN
Tuesday, February 11, 2003

As yet another data point, my university also avoided Microsoft technologies like the plague.  They had strong ties to IBM for hiring.  They did a test-pilot semester of Java and quickly decided to drop it and fall back on their old standard of C/C++.  But whenever they made the mistake of allowing us to implement projects in our language of choice, it seemed like the overwhelming majority of projects were done using Microsoft technologies: first VB, and then VC++.  Otherwise it was command-line C++ all the way.  After school was done, I took the route that most overly-repressed kids take: run into the arms of the things my harsh "parents" looked down on!  And I've been loving it ever since.

ODN
Tuesday, February 11, 2003

Hmm. I must have missed out, because we didn't cover Visual C++ at university either.

I did do: philosophy of science, biochemistry, VLSI design, electronics, embedded CPU programming, C, C++, LISP, Pascal, Prolog, PostScript, Shell...

And as for operating systems, we didn't get taught any: we had courses on things like "concurrent programming".

Funnily enough, people have walked out of that course and managed to be Windows developers in C++ and Java, Web developers in Perl, UNIX developers in C++... all without any problems.

We keep networks running, we build stock exchanges and content management systems, retail banking software one-off-databases, military training sims, emergency telephone routing controllers, packing machine controllers and hundred other things. And it comes from having a really good grounding in the basics of how things work rather than the specifics of how one interpretation of things works.

The world has far too many people who know what all the buttons in visual studio do, but find getting multi-threaded code to work too hard to be useful. We don't need any more of them. I've worked with too many people who think the halting problem is solvable if you have a fast enough CPU and still have the appalling frontery to call themselves a programmer.

Katie Lucas
Tuesday, February 11, 2003

I started my college career at UT Austin in 1989.  I didn't really know what I wanted, except that I wanted to program computers.  I didn't know what I needed to know, and didn't realize that fact until long after I'd graduated.  I had opinions; that was it.  By sheer luck, I fell under the influence of math professors like Dollard and Armendariz, and CS professors like Mooney, Plaxton, Gouda, and most of all, Edsger Dijkstra. 

I frown at the thought of putting the future of the department under the guidance of individuals who are still learning the field.  I reserve an even more distasteful expression for turning it over to those who not only are still learning the field, but are not even motivated to learn it, and who would rather leave and find a high-paying job.

Tools of the trade come and go, as a rule.  The ones that endure are exceedingly rare.  The principles behind them, however, are much more durable.  They are not simple principles, moreover; many of them are quite sophisticated, and take years to master.  Fortunately, once they are learned, they rarely change, unlike the latest version of "Excel".

By not emphasizing today's hottest language in your curriculum, your university is doing you a grave service.  By insisting on present-day marketability at the expense of long-term obsoletion, -in no less than an institute of higher learning-, you are doing the academic field a grave disservice.  Please stop.

Paul Brinkley
Tuesday, February 11, 2003

>> I can't think of any other science or engineering discipline wherein the curriculum is not tied directly to the duties that a graduate will be expected to perform when entering the job market.

>> It's high time the academic world acknowledged that the majority of CS graduates will do business programming, and actually prep them.

I can see that much as I like to be in denial over it, this generation of 20 year olds is truly living up the reputation of "slacker".

d00ds, in between MP3 file downloads, you might consider that 5 years ago you'd be complaining that you're not learning COM, or 5 years before that you're not learning MFC, or 5 years before that you're not learning Windows Messaging, or how to write a VxD, or that DDE is not part of the course, or that OLE has been neglected, or ActiveX controls went missing.  See a pattern?

You're to learn fundamentals on which you can build and adapt from later.  I'd be much more interested in how well you scored in your differential equations class or probability that whether you know COM, or .net or Java - or whatever that stupidity of the day happened to be.

Looks to me like the cultural morass we call the '90's has yet to unwind.

Nat Ersoz
Tuesday, February 11, 2003

Paul Brinkley writes:

"Tools of the trade come and go, as a rule.  The ones that endure are exceedingly rare.  The principles behind them, however, are much more durable."

Um, this is precisely my point, Paul!  Java is a vendor specific buzzword.  For the millionth time C/C++ are languages that *every* software engineer / computer scientist must know.  Java was chosen to replace C/C++ as our standard language by an anti-Microsoft elite *because* it's not a language that is useful in Microsoft Land.  It also is not an adequate language with which to base an undergraduate/graduate level CS education.


Paul Brinkley continues:

"By insisting on present-day marketability at the expense of long-term obsoletion, -in no less than an institute of higher learning-, you are doing the academic field a grave disservice.  Please stop."

I never insisted on present-day marketability.  In fact, this is what I wrote earlier:

"I vehemently and absolutely don't think that higher learning should be replaced with technical schools for the popular language de jour!  I couldn't possibly care less if Java is sufficient to enter the workforce.  The whole point is that Java *does not* provide 'the bare foundation of a professional's toolset.'"

And, Paul, you imply that Microsoft products will become obsolete in the long-term.  That's rich!  Perhaps you'd like to bet on which will be around longer - Microsoft's C++ compiler or JRE (Java Resource Eater).  And, honestly, it's a shame that you attempt to disguise your anti-MS bigotry as a deep and abiding concern for the "academic field".  Please stop.

anon
Tuesday, February 11, 2003

I would like to point out that the end goal of an undergrad university degree is NOT a job, or training in what's hot, or any of the things people here seem to think it's about.

Undergrad degrees are theoretical, and not practical. If you want practical, go to DeVry. You'll come out knowing all sorts about Java or Visual Studio.NET or whatever.

University is about teaching analysis and problem solving. It has never been about "the real world", and trying to impose that on academia is an exercise in missing the point.

I know all about C, COBOL, FORTRAN, OPS5 and half a dozen other languages I'll never, ever use or want to use. However, knowing about them, and how to use them assists me in learning the things I need to know in the real world.

That's what university education is about. If you don't like it, go to a community college.

Tim Sullivan
Tuesday, February 11, 2003

"For the millionth time C/C++ are languages that *every* software engineer / computer scientist must know. "

That's not really true.

I learned C while I was a college student (on my own, not in a class)  but haven't really used it since I graduated. I never got around to learning C++, but I've managed to stay employed as a software engineer (mostly working in Java) for the past 5 years. It's possible that my never having learned C++ will eventually bring my career to a screeching halt, but if it were really probable then I expect it would have happened by now.

Beth Linker
Tuesday, February 11, 2003

Paul - I agree

Nick and ODN:
I dont know how things work in the US but in europe none of the academic disciplines are in any way adapted to the "world out side". Nor should they be. Its not the job of universities to train future employees.
We teach the students how to do scientific reseach, and help them understand what has been done up untill now.
And if you get the core understandings of your discipline, training you for any related task is an easy job - and the responsibillity of your employer.

We too use java. Not because there is good job oppotunities for it, but because its a good teaching tool.
We can download everthing we need for free (JDK + a few different text editors).
Its OO, it has a clear syntax and it doesnt allow students to cut corners. Thats all we need.

Eric DeBois
Tuesday, February 11, 2003

Java is a horrible teaching language, yet a lot of universities adopted it. Why? Sure, there are undeniable "Anything But Microsoft" tendencies in a large percentage of academic institutions, but there is more.

At the time C++ was becoming so dominant that CS curricula were about to cave in and put it on the menu. They hated it though, because as a pragmatic (academics like pure and dislike practical) multi paradigm (Smalltalk flavored OOP was in the driver seat and C++ was neither pure OO and on top of it statically typed, so they thought of it as an OO monstrosity) language it was outside of their game.
So when Java came bursting onto the scene they jumped at it. Anything but C++!

Besides this, they also were taken in by the Java sales pitch. Let us not forget that Java was the first language that was actually sold to the broad masses. Never before had there been a mass market advertising campaign targeted towards a non-programmer (non-tech even) public. Many academics are very naive consumers, and they were just, well, taken in.

Just me (Sir to you)
Tuesday, February 11, 2003

There seems to be a gulf between the business programming mind and the classical computer science mind, at least in the way academia treats the subject.  This ought not be.  There are timeless fundamentals to business programming that aren't addressed by most CS curriculums.  Learning how to perform analysis and design on business problems in a way that results in high quality software that fulfils requirements should have been given the same depth of treatment in the curriculum as data structures and algorithms.  One short semester with a breadth-first software engineering textbook and no real analysis or design required is woefully inadequate.  If you're not able to bridge the gap between business user needs and code, knowing what sorting algorithms to use when isn't going to do much good.

On the subject of COM, .NET and Java being the "stupidity of the day", those tools happen to do a pretty darn good job of understanding the basic facilities a business programmer needs, and meeting those needs in a far better way than environments that don't have built-in transaction support, component-oriented development, and all the rest of the things an application server offers.  None of our "pure CS" projects had the kind of requirements to motivate learning to program in that kind of environment.  This isn't a flash-in-the-pan subject.  It's as timeless as algorithms and data structures.

ODN
Tuesday, February 11, 2003

Tim Sullivan wrote:

"I would like to point out that the end goal of an undergrad university degree is NOT a job, or training in what's hot, or any of the things people here seem to think it's about."

I'm curious, Tim.  Who is it, exactly, who said it's about "a job, or training in what's hot"?  From which post did that come?  Straw man, Tim.  The whole darn point is that a University training in CS *should* be technology neutral.  It is not.  Universities graduate *nix professionals. 


Tim Sullivan:

"Undergrad degrees are theoretical, and not practical."

What are you talking about?  It's about technology, Tim.  If you want theory, you're in the wrong department; major in Mathematics.  With few exceptions, all the theory in this field of study means nothing until it ends up as ones and zeros on somebody's hardware.  And like it or not, it's probably going to be a *nix or a Wintel machine.  So what's your brilliant justification for ignoring half of the technologies available?  You know what, Tim?  There is no justification because in a truly technology independent curriculum, you'd be free to compile your code wherever you'd like.

anon
Tuesday, February 11, 2003

The reason C will endure forever (and I think that it will) is that it amounts to high level, (almost) platform agnostic assember.  And yes, it should be a defacto language because it illucidates much of the inner workings of computing:

. What is a stack frame and how is it used?
. What is a heap and how is it used and implemented?
. How does a compiler perform optimization, and what does the assembler look like?

You cannot obtain these information from a VM based language.  But a class on VM implementation and internals?  That would be worth taking... 

As for the rest?  Java, C++, python, Perl, ...  So what they're languages.  Buy an OReilly book for $30 and learn it.  Why you'd spend hundreds of dollars on credit hours for a programming class is beyond me.

I think these colleges might need to do a little more weeding out in their math classes based on this thread.

Nat Ersoz
Tuesday, February 11, 2003

For what it's worth, I was at the top of my math and CS theory classes, and have been programming since I was a kid, including assembler.  But it seems like somehow I was able to let go of my ego enough to cross to "the other side" and care more about solving the right real-world problem in the first place than about writing fully-optimized code.  And to some here, that looks like I've "sold out."

ODN
Tuesday, February 11, 2003


  Have you guys ever heard about "internship" ?  That's where you learn the latest and coolest tools and put in practice the theory you've been learning at school.

  You should not need to have 5+ years of experience in VS.NET and SQL Server to get one.  Actually, that's how you'll manage to get this kind of experience.

  Well, at least it worked for me.  I was an intern at the same company I now work for.  They liked me, and they hired me when I graduated.

  If you want the best of both worlds, you have to be in touch with both worlds.

 

Ricardo Antunes da Costa
Tuesday, February 11, 2003

It's not about technology. You are forgetting that a degree is intended to prepare you for a career that is 40 years long. I think I can safely guarantee you two things about computer languages twenty years from now:

1) The hot language will be something we have never heard of;

2) Someone will still be programming in FORTRAN;

When I was an undergrad, the CS department switched from teaching in ALGOL to teaching in PASCAL (neither renowned for their real world usage). Did industry fight to recruit these people? You bet. Did they care about the language? Not in the slightest.

To be fair they were introduced to the common languages of the time (C, COBOL,BASIC if I remember) but only at a very introductory level.

Learning your first language is the hardest. Learning your first OO language is the next hardest. All the others are easy.

David Clayworth
Tuesday, February 11, 2003

anon wrote:
"What are you talking about?  It's about technology, Tim.  If you want theory, you're in the wrong department; major in Mathematics."

It most certainly is NOT about technology. University is about one thing, and one thing only: critical thinking. Everything else is just a nice to have.

Computer Science is about learning functional decomposition and developing thinking strategies. You learn languages as a side effect, so you can implement the strategies and see them in action. That's why you learn Turning or structured BASIC in first year - because you don't need something practical, you need something easy.

After first or second year, it's not about languages, it's about algorithms and problem solving. How to sort a list in eleventy different ways, evaluating each one on efficiency. You learn C or Pascal or COBOL or FORTRAN as a side effect of learning how to implement these algorithms. In my AI classes, I didn't learn how to program in OPS5 (everyone had to learn it themselves, on their own time). I learned about searching, and game theory, and so on.

Data structures, algorithms, math and critical thinking about all of them. THAT'S what you want from Comp Sci, and THAT'S theoretical.

If you're interested in Technology, go to your local community college, which will hold your hand through learning the various languages and technologies that industry is using today! (tm). THAT'S community college, and THAT'S practical.

Tim Sullivan
Tuesday, February 11, 2003

Nat & David,

Nice way to put it, am begining to see the light.

Prakash S
Tuesday, February 11, 2003

David,  20 years ago C was hot. It is still around, does well and hopefully will live another 20 years or so. What's wrong with using it in universities?

Regarding first languages and difficulties to learn - I believe, it's very personal. My first language was Algol and it was not that difficult for me. The same is true for OO. Knowing C, I learned C++ very quickly (in a month or so). On the other hand, languages based on other paradigms were much more difficult for me to learn. For example, Forth. Learning Forth was like exploring another planet. Another example is Perl - it's not that difficult, in principle, but it's just HUGE and it took me about a year to feel comfortable with, and I had 10+ years of programming experience by that moment.

I think, universities could keep a reasonable balance between fundamental concepts, algorithms, critical thinking and pragmatic approach to languages and tools used. If you think C/C++ are not "pure" enough for learning - fine. But in my opinion, Java is clearly market-driven and I hardly see the justification of using Java in universities. Python or Ruby would be much better for learning puproses. They pure OO-languages, plus they support (to certain degree) functional programming, closures and, more importantly, source code looks very clean, comparing to Java.

Just my $0.02

raindog
Tuesday, February 11, 2003

Actually, my university is considering a move to python because its easier on the absolute beginners.

Main argument against python so far had something to do with whitespace. I not in on the discussions so I dont know really.

Eric DeBois
Tuesday, February 11, 2003

Tim Sullivan writes:

"It most certainly is NOT about technology. University is about one thing, and one thing only: critical thinking. Everything else is just a nice to have."

It used to be that there were no Computer Science departments.  In the 1960s CS Departments began separating from Mathematics departments when the need became apparent.  Analogously today, we see a few Software Engineering Programs emerging from CS departments.  Until this becomes the rule rather than the exception, CS departments are most certainly about both science *and* technology.

But on the other hand, Tim, maybe you're right.  In fact, I know you're right.  I now see the light!  University is not about technology, and *is* about one thing, and one thing only: critical thinking.  After I post this, I will immediately email the president of the university and inform him that the Carnegie Institute of *Technology* must be immediately be stripped of its university affiliation - perhaps to be acquired by our local community college.

Oh, and, "functional analysis"?  The seventies just called.  It wants its paradigm back.

anon
Tuesday, February 11, 2003

Oops.  I meant:
Oh, and, "functional decomposition"?  The seventies just called.  It wants its paradigm back. 

anon
Tuesday, February 11, 2003

anon:

Well, you've just completed the aforementioned the exersise in missing the point.

Universities are not about anything except critical thinking, regardless of program. It is not a place to prepare you for the workforce. It never has been, and hopefully never will be. If you think it is, you're wrong. If you think it SHOULD be, well, that's a matter of opinion. However, I'd rather have a comp sci degree working under me than a community college diploma.

FYI: Just because you're using technology to attain the critical thinking skills doesn't mean that the technology is the goal. It's a means to the goal. So they can keep the Technology in their name, since that's the means to the goal of critical thinking.

Oh, and if you think that functional decomposition dies in the 70s, you don't deserve a job in the software industry.

Tim Sullivan
Tuesday, February 11, 2003

Tim, from Merriam-Webster:

"tech·nol·o·gy :
the practical application of knowledge in a particular area; engineering"

"Engineering" is the very definition of technology.  Universities teach engineering.  Ergo, universities teach technology.

If you're really interested in theory, may I suggest a course Logic?  By the way, if you're only interested in critical thinking skills, there are several fine selections in the Oprah book club on the topic, and you'd save a lot in tuition.

anon
Tuesday, February 11, 2003

Tim, I think it would be awsome if Universities Taught Critical thinking...but I have a feeling you either had an outstanding education or your living in a dream world.  The kind of things your talking about are NOT taught in Computer science courses these days.  Now days they cram some information down your throat, expect you to memorize it for the test, forget it, then get ready to memorize new info.  So, this arguement is pointless.  It doesn't really matter  if universities teach logic, problem solving, and critical thinking, or if they teach languages and the art of software engineering. They don't really TEACH at all, they just present some material, and test you on it. 

Vincent Marquez
Tuesday, February 11, 2003

This is a very Old discussion, one that colleges deal with all the time.  How much should college prepare you for the job world?  And it often gets asked by people who are worried about a tight job market.

One point is that college isn't the best place to prepare.  How do they know what's best for the job market?  Do they have a stable of people who do nothing but read Business 2.0 and observe the "trends"?  Are CS professors the best people to teach you the ins & outs of languages that you use on the job, or do they prefer teaching more timeless concepts?

Maybe internships are more appropriate places for vocational training.  You may think there's bullshit in academia, but there's a whole another class of it in the business world.

Of course, there's a compromise.  You can feasibly push for classes that teach VC++ or what have you.  If you're good, you can even teach it yourself, if you research it enough, and learn a bit as you explain.

But don't people get course guides?  Anyone can ask a prof or dept. advisor about what you can do to get experience with Microstopheles IDEs. 

sammy
Tuesday, February 11, 2003

anon,

Let's avoid personal attacks if possible. Such tactics are both unfair and unproductive.

Now, how's this for critical thinking:

Univerisities do not teach Java, Visual Studio.NET, or other current technologies. The job market uses Java, Visual Studio.NET and othe current technologoes. Ergo, universities do not prepare you for the job market. This is pretty much cut and dried logic (which I studied in university, in the Comp Sci program).

Now, either 1) universities are failing at their stated duty of education; or 2) they're doing what they intend, and that's to teach what's important (hint: the latest, marketable technologies are not important).

Regardless of whether all graduates have critical thinking skills, that is what undergrad degrees are for, in whatever dicipline they use, be it English, Anthropology, Computer Science or Underwater Basket Weaving. At the end of the 4 years (or 3, for the slackers!) the hope is that you can take a problem and solve it with any tools that are available.

Oh, and thinking that software has anything to do with Engineering is insane. Ask any real Engineer (someone with a BEng or better) about "Software Engineering", and watch them turn red and punch you. :-) Now, COMPUTER Engineering, that's a whole other kettle of fish!

Basically, I'm saying this: Universities do NOT prepare you for a real-world job, and never will, and this is by design. If you can make a compelling argument to the contrary, I'd love to hear it, but you haven't yet done so.

Tim Sullivan
Tuesday, February 11, 2003

Oh, and Engineering and Education are not the same thing. I wouldn't say that an English degree is engineering, and neither is a Comp Sci degree.

Tim Sullivan
Tuesday, February 11, 2003

"It's high time the academic world acknowledged that the majority of CS graduates will do business programming, and actually prep them"

No, it is high time the business world stopped expecting someone else to do their work, preparing and training people for the jobs that they will do, for them.

A computer science course is about computer science; if people want to learn how to program using Visual C++ then they should take a Visual C++ course. Better still they should learn to read the prospectus before joining a University course.


Wednesday, February 12, 2003

Re:

<Eric DeBois>
Nick and ODN:
I dont know how things work in the US but in europe none of the academic disciplines are in any way adapted to the "world out side". Nor should they be. Its not the job of universities to train future employees.
</Eric DeBois>

-- and --

<Tim Sullivan>
... Universities do NOT prepare you for a real-world job, and never will, and this is by design. If you can make a compelling argument to the contrary, I'd love to hear it, but you haven't yet done so.
</Tim Sullivan>

First, a disclaimer: I was not a CS major. My undergraduate degree was in another engineering discipline.

Yes, we had a great deal of theory classes and scientific research in the curriculum. For some people this material did translate directly to their future job responsibilities, but for most of us it was background theory that lead to a greater understanding of engineering problem domains. I think we all agree that this should be a central philosophy of university curriculums.  However, many universities also require a great deal of practical application coursework in their engineering departments.

When I recently looked into returning to school for a 2nd BS or a MS in CS, I was surprised to find how theory-ladden the curriculum was, and how little practical application material was required.

So my point is that there should be a better balance between scientific theory and practical application.

Lastly - yes I do believe that it is the job of universities to train future employees.  Should they train them in VC++ or MS SQL?  No.  But they should train them in C++ and SQL 92. Academics don't like to think of education as a product, but I think they should. More precisely, I like to think of it as an investment vehicle. Would I buy a security simply because it "looked good" in my portfolio? Of course not. Same goes with education. If you want to shell out thousands of dollars without expectation of a monetary payback, that's fine. But I want a good ROI, baby!

20+ years ago, when I entered college, I would have agreed with you. And while I still believe in the virtues of knowledge for its own sake, I've become jaded. I've got 3 kids, a wife, a dog, and a mortgage. So when I considered the time and effort that returning to school would have entailed, a cross-check between the CS curriculums and the current in-demand skills was a factor.

more below ..

<Nat Ersoz>
d00ds, in between MP3 file downloads, you might consider that 5 years ago you'd be complaining that you're not learning COM, or 5 years before that you're not learning MFC, or 5 years before that you're not learning Windows Messaging, ... etc.  See a pattern?
</Nat Ersoz>

I wasn't suggesting this. My response was triggered by two things: (1) the posts about CS departments dropping C/C++ in favor of Java; (2) a post several months ago by a soon-to-be CS graduate wanting to how the best source for learning SQL (I couldn't believe that SQL-92 wasn't introduced anywhere in the curriculum).

Personally, I think they ought to teach C, C++, Java , and SQL.  All 4 are have staying power.

On the other hand, I don't think it's unreasonable to expect universities to offer senior-level electives on current technologies. Many do.

Nick
Wednesday, February 12, 2003

Computer Science is not a science, it is an engineering discipline. Even the icons of CS agree on this http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/ .
Unfortunately in most universities the CS department is part of the Science faculty. This is because most often they splitt of from the matematics department as was mentioned before. This has the sideeffect that CS, although in hart an engineerig discipline, does not carry within its DNA good enginering methodology and practice.
On the other hand because the subject is at odds with science (as in the natural sciences), it also has no decent scientific lineage to take advantage of.
The result is the hodgepodge of factless science and unsubstantialted advancement claims we hate to love.
Over time I am sure we will see the theoretical parts of CS move back into maths, while the rest will find a decent home in the engineering faculties.

Just me (Sir to you)
Wednesday, February 12, 2003

Tim,

My first undergrad degree was in Mathematics, and in fact, in grad school, I'm dual CS/Math, so my tastes run more toward the Chomsky Hierarchy and Gödel's Theorem than toward Java or any other marketing buzzword.  Believe me, there is no one on the planet who would love it more if University were actually about teaching critical thinking skills.  But this isn't the fairy-leprechaun-dream world you describe.  Universities teach technology.

But this is an understatement of several orders of magnitude.  Universities don't just teach - they indoctrinate.  They are huge Unix madrassas where students are enlisted in the holy jihad to destroy the great Satan, Microsoft.  They are great marine corps boot camps that teach recruits that the world is a stream of ASCII characters at the end of an idiotic 1970s teletype Bash shell command prompt.

If university were truly only about critical thinking skills, Tim, could I not learn these skills just as easily if my quicksort is compiled to an x86 box? 

anon
Wednesday, February 12, 2003

I agree with most posters on the points that universities are not vocational training houses. Even so, it is clear that the simple existance of differentiated faculties and courses prove that more than "just acquiring critical thinking skills" is on the menu.

CS is not thought in abstract terms, technologies in its various implementations are used. I agree with the poster that said C++ and SQL 92 should be the focus, not VC++ or T-SQL.
But in this light it is even stranger that e.g. Java finds a prominent place in the curiculum of so many CS degrees. Java is horrible as a teaching language (you have to expose too many things in the examples from the start), and it is the IPR of one company, that is very agressive in protecting this IP. Furthermore at the time of its wide adoption in the curicula it was neither very widely used, nor were there many decent experimentation environments available.

Maybe the fact that Sun came out of the academic world while Microsoft definetly did not still plays a major role.

Just me (Sir to you)
Wednesday, February 12, 2003

"Universities don't just teach - they indoctrinate.  They are huge Unix madrassas where students are enlisted in the holy jihad to destroy the great Satan, Microsoft."

Well said anon. This has also been my experience.

Just me (Sir to you)
Wednesday, February 12, 2003

anon, I understand your frustration, but there are two reasons why things are not as you wish them.
a) universities are incapable of providing what you want, on this topic
b) normal incompetence on top of it all, as with anywhere else

There are some minor contradictions you make that make you sound like a troll.  For example, C is very much a Unix language.  But it's hard to be constructive when everything is framed in terms of crusades and jihads.

sammy
Wednesday, February 12, 2003

"universities are incapable of providing what you want, on this topic"
I meant "most large universities."  Clearly, there are the UWaterloos out there.

sammy
Wednesday, February 12, 2003

Sammy wrote:

"There are some minor contradictions you make that make you sound like a troll.  For example, C is very much a Unix language." 

Just because C was created to write Unix, doesn't make it a Unix language.  C/C++ are used on every platform and probably in 99% of the software for every platform.  From my earlier posts, you will see that this universality is a major reason I believe these are languages every software engineer / computer scientist must know.


Sammy continues:

"But it's hard to be constructive when everything is framed in terms of crusades and jihads."

I may be frustrated, but I'm not trolling.  And I don't believe I'm framing this debate as anything other than what it is.  This *is* a religious war, and people are fighting it with every bit of emotional intensity that crusaders have.  Honest experiment:  In Joel's archives there are threads about the existence of God.  Read enough to gauge the intensity of emotion.  Then compare this with threads on MS vs. *nix.  After that, if you honestly believe my comments are hyperbolic, please let me know.

anon
Wednesday, February 12, 2003

I will crush all your puny languages with my COBOL compiler. It wieghs a ton.

Seriously, I used to get attached to languages and platforms and specific hardware. Then I realized that they were all simply tools. How can one debate the merits of one hammer over another? There can never be an end to the discussion because there are too many variables in the equation and people get personally attached to their tools.

Ian Stallings
Wednesday, February 12, 2003

Wow, the level of utter snobbery and ignorance is actually dripping down my screen and begining to seep into my mouse pad.


1) I await the citing of the Divine Dictat that specifically declares College/University to be "only about X".

2) if x = "critical thinking" ...

One certainly wonders why there are so many various degree programs and courses just to teach critical thinking. Seems like such a round-about way to teach something, or it's just complete over-kill.

As it is, my college is teaching me things almost completely unrelated to critical thinking. Funny. This is because, of course...

3) Most college programs appear to be about the development and dissimination of Information/Knowledge thought to be useful in some way, and to help students develop increasingly specialized skills (only ONE of which is critical thinking) - typically in service of the former stated objective.


4) At least as it relates to "why people will pay money for it", it all then leads down to a matter of utility - and the prime source of utility here is in productive functioning, as in "because I learned X, I can now do Y", where Y is some useful activity that permits one to move towards some desired goal.

Further, as it relates to "why the government subsidizes it", in economically rational terms, it is because what is taught is hoped to be of such a productive value To Other People (and more directly, To The Government) that the relative ROI justifies the expense.

Brian Hall
Wednesday, February 12, 2003

Its one thing to use sentence fragments to convey thoughts.  But what do thought fragments convey?

Nat Ersoz
Wednesday, February 12, 2003

to say that its only about critical thinking is an oversimplification. The Idea is to teach student to do science and prepare them so they can continue the work in the choosen area.
Its an eco system.

Eric DeBois
Wednesday, February 12, 2003

*  Recent Topics

*  Fog Creek Home