views:

304

answers:

11

My university is (to my dismay) fully entrenched in the Linux side of software development, with Java typically being the language of choice for most instructors. One of my classes this semester required the book Pro C# 2010 and the .NET 4 Platform. I was so excited to finally have a class based around C#. First day of class the instructor said we could return that book because he was going to use a Java book instead.

Java isn't that bad by any means, but with what little experience I have, using C# in Visual Studio seems SO MUCH BETTER! Visual Studio seems to have so much to offer (ASP.NET, Silverlight, a great debugger, ect.) and with Mono I cannot see any reason for instructors to keep pushing Java instead of Visual Studio and related .NET technologies. Additionally most students (like myself) grew up with Windows, not Linux. I like learning new stuff, but I hate having to re-learn all the command prompt commands in Linux... and don't even get me started on VI (another favorite of my instructors).

What arguments should I use to convenience my instructors to at least try teaching .NET in a Windows environment?

A: 

.NET is more current. And you don't need take my word for it:

http://www.thoughtworks.com/sites/www.thoughtworks.com/files/files/tw-radar-april-2010.pdf

That being said, Java reduces the overhead/added complexity of the Microsoft IDE. NEVER in your programming career should you let yourself think "I don't want to learn/re-learn"...every year, a new language/tool/technology comes out, that will help you improve your productivity.

Lachlan
Overhead? Most universities have some sort of deal with MS that allows the students free access to a lot of Microsoft stuff, and there's the dreamspark programme too. I've got VS2010 ultimate installed on my machine for nothing, along with windows 7 x64, sql server and plenty more besides.We had to learn Java too, but then moved on to Groovy, but don't often program with either.
Doozer1979
I am not sure @Lachlan was referring to the cost over head, rather all the extra stuff associated with Visual Studio when compared to a Java IDE like Eclipse or NetBeans. I would agree with you @Lachlan that Java IDEs are less complex than Visual Studio, but I don't think that should be a concern. Also, I like to learn, but I would rather be the master of one language than the jack of all, and the language I want to master is C#. I know many of my fellow students feel the same way.
typoknig
Yes, typoknig understood me correctly: I don't mean money, I mean the ability to focus on what is important. University isn't for learning an IDE that will be yesterday's news by the time you graduate, it's about learning principles, algorithms, data structures, etc.
Lachlan
@typoknig, I agree that being an expert in one language is best, but one should also have some knowledge of the alternatives, in case there is a better tool for the job.
Lachlan
Fair enough, but for what it's worth my university has not spent nearly enough time on debugging techniques, and has spent zero time on version control. Fairly important stuff that all graduates should know.Also a common complaint from employers is that uni course do not teach them enough of the skills that graduates require.
Doozer1979
@Lachlan, the more tools you have in your toolbelt the better. Allows you to do more. Also the one just with a hammer, tends to view all problems as nails.
Thorbjørn Ravn Andersen
I find Eclipse to have a fair amount of features that VS is lacking, though I do far more Java than .NET work, so that very well might be biasing things.
AHungerArtist
@Thorbjorn, you should know a bit about the alternatives, but you have to choose one to excel in. Otherwise you're good at everything and great at nothing.
Lachlan
@AHungerArtist, in what respect is Visual Studio lacking?
typoknig
@Lachlan, excelling in a given programming language requires thousand of hours of deliberate practice. In this particular case, it would be smart to choose the one that the university provides mentors for.
Thorbjørn Ravn Andersen
+5  A: 

Think about it this way: you don't like Java, so you're not likely to learn it on your own. On the other hand, you do like C# and .Net, so you'll probably learn it by yourself anyway.

They're not that different anyway, conceptually. And knowing both will make you a better all-around professional.

As for Windows vs Linux: you'll need both in your career (yes, even if you choose to work on .Net, you'll very likely have to use Linux some time) so you'll have to learn Linux anyway sooner or later.

Mauricio Scheffer
No no, I like Java fine, I just like C# better, and I would like to use the most current technologies available. You are right about learning on my own though. If I were not in school I would try to learn C# on my own before Java.
typoknig
+1  A: 

You should tell them to teach you LISP.

And then Haskell, Java, Erlang, C and a bunch of different stuff. That will make you a programmer, not just a C# hacker.

Albin Sunnanbo
Well I would like to learn them all, but I would just like to start with what I think I will be using most... that is C#. When I go looking for a job I want to find a position as a .NET developer, and I think knowing C# very well would help me there :)
typoknig
How do you know .NET wont be depreciated by the time you get out of school? Replaced by whatever new framework has come along? Dont tie yourself to a single technology, or you will be out of date before you even get started. If you really like C#, then do some projects on your own.
GrandmasterB
I know that newer, more advanced technologies will replace .NET some day, but right now it seems to have the most going for it. When I get done with school that is the field I will be searching for a job in.
typoknig
+1  A: 

you won't find Java hard to use. Windows + Eclipse. (my favorite is IntelliJ tho)

people are hostile towards MS, the evil empire. but now Java is under the control of Oracle, another evil empire, we'll see how the sentiment goes.

as of today, Java community is still bigger, more open and sharing, innovative while uniting.

both languages are becoming very bloated in a feature arm race. they are not fit for education.

irreputable
Because writing tons of code yourself that should exist in the language or big library is completely better... Anyway, OOP is an essential skill. This can be accomplished with C++, Java, or C#. Since C++ has a reputation of being hard, crazy syntax, and strange, I can agree with the choice of C# or Java
TheLQ
+13  A: 

I have no dog in this fight, as I dont particularly care for Java or C#. But, for starters, to teach a system, one's instructors should actually know it. And its pretty clear that your instructors dont know .NET. So its probably a good thing they are sticking to what they know and teaching Java well vs teaching .NET poorly.

Its far more important you learn the basics of coding, and not focus on 'using' the flavor of the week IDE/tool. By the time you get out of college, there will be some other must-use technology anyways. Also, you say you want to use Windows because thats what you grew up with. To me, that sounds like exactly why you should be working in Linux - what are you learning if you stay tied to Windows? Learn as many different languages and systems as you can and you'll begin to truly understand their similarities. That will make you flexible in picking up new technologies - something you'll need in your career.

GrandmasterB
@GrandmasterB, I agree that I would rather have my instructors teaching me what they know, but if you are an instructor at the university level isn't it kind of your job to stay current with technology? Over half of our department's instructors have been at the university for over 15 years, some more than 20, and only one less than 10. If they just stuck with teaching what they knew when they took the position I would be learning BASIC or some other archaic language.
typoknig
@typeknig: .NET isn't more "current" than Java is. You may like it more, but that's a different thing entirely.
Jasper
+1  A: 

In my point of view .NET has a strong advantage in user interface programming with WPF. In education I would like to see more use of functional programming, and I think that F# on .NET will be more successful in the industry than Scala for the Java platform will be. However the two languages that would be good to have academic experience from is Haskell and Erlang, so it's not only .NET vs Java.

Jonas
I have been stating we use Java for everything, but that really means we use it for everything imperative. I have also worked with Haskell and Prolog at my university. I don't know if it is the same for typoknig, but it might be.
Jasper
+4  A: 

Why go to school in the first place if you are not ready to learn things outside your comfy scope ?

There is a good chance you will have to work with Linux sooner or later, so you have got even MORE reason to learn it as you come from a windows background (not the other way around!). Even if you don't get to work with it in the future, it will have been a mind opening experience.

As for C#, teaching wise, it's not so much different than Java, so why should your teachers change all their courses ? And pay for windows' licenses ? What's important is learning an object-oriented language, as well as other ones for good measure, not play with your a priori language of choice.

Shautieh
All of our computers are dual boot... Windows 7 and Red Hat Enterprise... so they are paying for two license already :) We have Visual Studio installed on every computer, they just never use it!
typoknig
It is not only about computers in your class rooms. I don't know how it is working in your country but in my country the most course work is done at home. So you also need easy and legal way to spread hundreds of Windows + VS licences to your students (unless you use Express edition which is free). MS has special academic programs which allows this but your university has to participate in those programs.
Ladislav Mrnka
As another person already pointed out, getting license is not hard, especially for students. The Dreamspark program provides free license for nearly all MS software a student would ever need.
typoknig
But isn't it better if students do not have to get a license? It's just another step where things can (and will) go wrong.
Jasper
My university paid microsoft for a similar program, but in the end I didn't bother getting any of their softwares as the licenses were way too restrictive... Also, I don't see why the university should impose on its students specific hardware and OS in order to be able to install the microsoft suite of softwares for homework.
Shautieh
+4  A: 

First your post can easily start flamewar. Don't use SO MUCH BETTER when comparing .NET to Java or VS to Java IDE. I'm .NET developer but I was fascinated with IntelliJ IDEA IDE so the reason why you are so excited is that you haven't seen too much yet.

To your question. When I was student at university we were facing similar problems. Our instructors moved everything from Pascal and C/C++ to Java. But we had small group of instructors who were interested in MS technologies and they started to lecture Win API and .NET. They were also able to get MSDNAA for our university which was important milestone. If you want to teach people MS technologies you need licences for them. I became first MSP (Microsoft Student Partner) at our university and I was responsible for spreading this posibility among students. Later on more studens became interested in MS technologies and all lecturers allowed students to make choice between Java and .Net for their course work. Lectures were still hold in prefered platform for instructor. The only exception were classes directly related to some platform or programming language.

The most important lesson from this story is: If you want to learn programming language / platform you still need to do it in your free time. Lectures will provide you overview and theory but not the practice. That is the reason why we were allowed to do course work in platform of our choice.

Ladislav Mrnka
+1  A: 

To be honest i think that it's most likely a desire on your university's part to remain platform neutral, which i think is a fairly solid reason.

Of course they could plump for many languages other than Java, i personally would have preferred my university to go with C++, but it depends on the type of course you're doing. If it's a straight up computer science course that is going to be heavy on programming, then C++ would probably be a better bet, but for course that are 'Information systems' or some other programming light course then Java is an easier language to learn.

Like others have said, there's nothing stopping you from learning c# on the side, that's what i did. My final year project is a .net one, which i will get virtually no help from my tutors on language specific questions, but computer science concepts are portable across languages, so i will get some help.

Doozer1979
I'd prefer something with a VM, something with memory management, and something relatively academic (Lisp?)Welcome to SO, Doozer!
Dean J
During my first period at university I followed a course called "imperative programming". I already knew how to program, so it was only a slight challenge to me to get the maximum score for the course. Others, however, had to go from scratch to making modifying a simple paint program to be vector based. Andall of that in no more than one fourth of a year. Believe me, the speed was in there. Explaining guard statements, or how to solve circular inclusions or how to solve compile errors in C++ would have been a waste of time.
Jasper
Don't get me wrong, I am a C++ fan, and I do think they should have some course using C(++) - just because it is good to have worked with pointers at least once (as well as with a few other concepts). However, there are just so much simple extra things that would need to be explained, and there would be memory management and there would be libraries at every turn (which may well have different naming conventions), I have since then come to see that C++ would not have been a wise choice.
Jasper
+3  A: 

I'd say it depends on what you're trying to learn. If the class is about distributed, web-based communication, .NET is arguably stronger because WCF makes it really easy to create and consume a variety of services. You could also argue that since many of the features of .NET are going to be in the next version of Java (lambda notation & closures, e.g.), teaching those principles might give students a head start in either language.

On the other hand, if the classes are teaching "programming" and software development generally, I think Java is actually a much better learning environment. It's easier to give someone an exercise that shows their understanding of how object-oriented programming and the memory model work, without having LINQ, dynamic variables, and such get in the way. The syntax tends to be more explicit (no "var" keyword), which can help beginners to understand where the problem is more quickly. At the moment, near where I live, there are plenty of positions open for developers generally, but more for Java developers than for .NET. It's also free, cross-platform compatible, and it has a strong open source community, all of which means a lot to professors.

So unless you take a class where the .NET framework would be particularly appropriate (Xbox game development, e.g.), you probably shouldn't plan on convincing your professors to teach .NET.

StriplingWarrior
A: 

If you know vi and/or emacs, your life will be easier. They're everyday tools. If you want to code for a living, it's best if you do get exposure to Linux; otherwise, half of the jobs or more, you won't be able to do.

Mono isn't used commercially nearly as much as the JVM.

If you want "current", you'd be better off arguing for Ruby, or something supersupernew. Java still has more developers working with it than C#, so it's arguable Java is the best choice there.

If the choice of language matters that much... you're in a bad program. The idea isn't to learn the languages, but the concepts that make them go. Learn some Java, learn Eclipse, and then you'll be able to speak more authoritatively about the differences in IDEs.

Dean J