Re: Re: Re: (Univ that only teaches unix/linux)

"Jones, Gregory James" <[email protected]>
Newsgroups gmane.linux.usability.annoyances
Message-ID <[email protected]>
> Date: Mon, 15 Sep 2003 17:10:07 -0400
> From: Jay Smith <jay-BB6z0fKkvBxWk0Htik3J/[email protected]>
> Organization: Jay Smith and Associates
> To: [email protected]
> Subject: Re: [Annoyances] Re: (Univ that only teaches unix/linux)
> Reply-To: [email protected]
> 
> Neither can a person learn CS in an environment where 
> *nothing* is taught 
> or mentioned about MS products/environment (if I understood 
> the original 
> poster correctly).
>

Despite what the chair of the program said, I doubt that would be the
case.  The students will most probably be exposed to MS products in some
form or another during their instruction or on their own... nothing is
stopping them from coding with and for MS products in their spar time,
universities are about exploring after all.  However, your son probably
wouldn't have a class in C# programming by itself.  Many schools don't
have many courses that just cover one language.  Generally, in my
experience, the first few classes on programming where the focus is on
programming IDEAS and not a specific language do use one language as a
guide, but mention and demonstrate how other languages handle the same
problems. Most schools use either C, C++, or Java (years before it was
C, Fortran, and Pascal).  The language doesn't really matter, because
the purpose is to teach programming.

This may be what is confusing the discussion.  Programming Languages and
Programming and two separate things.  Universities (4 year institutions)
are concerned with teaching Computer Science which relies heavily on the
art and science of programming... languages are just a subset. 

This general approach serves the students well, as I will show with a
concrete example (anecdotal of course) that should allay some of your
fears.
 
> 
> My impression was that the CS department at that university 
> had a "see no evil" approach to education.
> 

C# is only 2 (maybe 3) years old.  That's not even a lot of time for
good source textbooks to come out.  It is still a young language that
may have hidden issues (beyond proprietary lock-in) that need to be
addressed and understood before teaching it to students.  If
universities rushed into each new tool, they would be more likely to get
students involved with fad languages that don't help them understand the
general concepts of Programming.

Also, it was a big deal when Java began to be used in these survey
courses.  Some of the "advanced" concepts of the language meant that
areas of Programming would be missed when using it as the "example"
langauge.  How do you deal with memory management when the language
handles (for most intents and purposes) that for you?  How do you teach
advanced topics like avoiding built in "features" without degenerating
the class into a list of features of the language?  These are sticky
issues... C# has many more.  Generally the "teaching" language should
support the ability to "teach" the discipline instead of the other way
around.

>
> I contend that a properly educated student has to have some sort of 
> understanding of at least what a "C#" or a ".net" (or 
> whatever the flavor of the day) is in order to understand what they do
or do not know.
>

What everyone else has been contending is that any good CS student will
know this stuff.  They will read about them.  For programmers .Net and
C# are in all the "news" that they are (or should be) reading.  They
can't avoid it.  And while most professional programmers with university
educations (and even those without) out there now weren't taught C#,
they can use what they already know now to teach it to themselves.  

THIS and this principle alone drives most programmers.  "If a new
language comes along that I haven't used before, I can teach it to
myself."  This is one of the first things that I learned as a CS
undergrad.  You can never know all the languages that you will
potentially come across.  It is a virtual impossibility, BUT you can use
what you know already to help in learning them.  That is where the
general teaching of Programming shines above the teaching of Programming
Languages.

> 
> I am not suggesting that university is the place to learn the 
> latest flavor or the latest version of this or that program/language.
As 
> you pointed out, there is tech school (or other forums, books, etc.)
for that. 
>  However, it *is* an important training ground and an important place
for 
> people to gain some protected exposure to the dark side.
> 

Exactly, though I wouldn't call it "the dark side."  Your son will be
able to learn any language that he likes where ever he goes.  No one is
going to stop him.  He can teach it to himself if it is not taught in
class.  Then he can write as many programs as he likes in the safety of
a non-job situation where, if they blow up on him, it doesn't mean his
job... and despite what he may say about "having no time," college is
THE best time to do this experimentation as he will have all the time in
the world.  

It will take initiative on his part though.  It won't be spoon fed to
him.  I envy him that time.

>
> I just can't accept that one of the most prevalent software 
> environments on the planet should not be at least mentioned in a
university 
> CS curriculum.
>

That's a little hyperbolic (as was the Dean's statement).  It will be
mentioned, no matter where he goes.  Maybe not in pleasant terms, maybe
in glowing terms AND examples will be shown as proof for either
argument.  The exposure will be there... in some form.

My school didn't teach MS (before C#) programming for the most part...
but we got a ton of exposure to it.  My senior capstone project was
written in Visual Basic, per a requirement from our client, and not one
of our programmers had ever taken a class in it.  We succeeded and the
program is still in use today (without problems), over 6 YEARS later.

> 
> My viewpoint is along the line of [to paraphrase] "I will 
> defend your right to say whatever you wish to say, no matter how wrong
you are".  If 
> open-source people start pretending (in education) that closed-source
does 
> not exist, then the open-source people are no longer "open".  
>
They know it is there and they acknowledge it.  They just prefer not to
use it (in this case) and will most likely give a laundry list as to
why.

>
> I think it is more appropriate to present, to students, what the 
> closed-source world is and then demonstrate, through education,
actions, and 
> experience, that open-source is better.  That is the more difficult
road, but 
> I believe better for the students.
>

So, time for my final anecdote.  I had a student worker who went through
the same CS department that I did.  He did use MS Visual Studio for most
of his projects but almost all of the coding was for console apps and
they compiled on the Linux/Unix systems as well.  The IDE was just a
programming aid and it was used by most of the students and professors
(but not all).  Writing full-blown windows apps for most CS project
homework is just overkill anyway.  Do you really need a
window/mouse-click program to help solve the Tower's of Hanoi problem?
For the most part he programmed in C++ and/or Java.

So.  When it came time for his capstone project, he wanted to try out C#
as it had a lot of press lately.  The capstone project at our school
(required of all seniors before graduation) requires  groups of students
(3-6 students per group) to find a client that needs a programming
solution, do a project analysis for the client, and program a solution
based on that analysis over the course of a year.  This process is
backed up with software (and large project) engineering classes.  The
students are not allowed to graduate until the client (who is usually
independent of the university) signs off and accepts the completed
program.  He chose to program the project, and then convinced 4 other
students, also with no C# experience, to program the project in C#.
Using their CS backgrounds, they all taught themselves the basics of the
language in a few weeks and then the nuances of the language through a
rapid prototyping and deployment plan that they worked out with the
client.

At the end of the year they had the language down pat and the client
accepted their project.  When they ran into troubles they would take the
source and their notes to their professors (who may or may not have had
direct C# experience as some had been exploring it on their own) and
received the help that they needed.  Most of the time, errors crept up
due to ill-defined classes and improper programming logic, something
even unskilled in C# professors could easily point out.

> 
> Jay
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.