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 >