• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Why is Java taught in Universities?

Page 3 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.
Originally posted by: Vadatajs
Originally posted by: TheBoyBlunder
So people can get told by asshat advisors to take it with Calc I and flunk out of school.

/bitter

I learned java in my operating systems class (cosc433) while taking upper level statistics and mathmatical proof last semister. Java I + Calc I = easy.


Java and an OS Class. There are too things that don't fit. Network class maybe, but not an OS class.

Though I do agree Java I and Calc I is not hard.
I had Data Structures, Linear Algebra, and Digital Design in the same semester.
 
grovel grovel grovel

I love C 😀

I've never touched Java mostly because I don't even need to use C++ the majority of the time (I don't need OOP for most of my stuff--small programs a few thousand lines max).

Though Java would be nice to learn. Maybe if I ever get some free time.

As for why they teach Java I'm not sure. I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion 🙂
 
Originally posted by: DWW
grovel grovel grovel

I love C 😀

I've never touched Java mostly because I don't even need to use C++ the majority of the time (I don't need OOP for most of my stuff--small programs a few thousand lines max).

Though Java would be nice to learn. Maybe if I ever get some free time.

As for why they teach Java I'm not sure. I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion 🙂

Exactly my thoughts. I love C as well.

I agree that schools should start with the basics of programming. Then if the student wants to learn OOP, hey good for them,
thats another class. I have run into more fresh out of college guys that think OOP is the answer for everything, be it C++
or Java. While it does have a purpose, OOP doesn't work for all stuff.

I guess most schools teach java because of the student demand for it. I learned bits of Java in a Programming Language course, but
it was also filled with Prolog, Lisp and Ada.

I enjoy reading the comments that Java is fast, because it depends.
All I am going to say is for hard real time requirements (where speed is your main concern), Java is not the solution,
but then again neither is C++.
 
Originally posted by: Ynog
Originally posted by: DWW
grovel grovel grovel

I love C 😀

I've never touched Java mostly because I don't even need to use C++ the majority of the time (I don't need OOP for most of my stuff--small programs a few thousand lines max).

Though Java would be nice to learn. Maybe if I ever get some free time.

As for why they teach Java I'm not sure. I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion 🙂

Exactly my thoughts. I love C as well.

I agree that schools should start with the basics of programming. Then if the student wants to learn OOP, hey good for them,
thats another class. I have run into more fresh out of college guys that think OOP is the answer for everything, be it C++
or Java. While it does have a purpose, OOP doesn't work for all stuff.

I guess most schools teach java because of the student demand for it. I learned bits of Java in a Programming Language course, but
it was also filled with Prolog, Lisp and Ada.

I enjoy reading the comments that Java is fast, because it depends.
All I am going to say is for hard real time requirements (where speed is your main concern), Java is not the solution,
but then again neither is C++.

Well. I think, at least from my standpoint, the school should teach OOP but at a later stage. Not at the last minute as a "this is what you will see out there" sort of thing but after the students are well grounded in procedural programming.

Funny you say about the fresh kids who think OOP is the only way. I have a friend who thinks VB 6.0 is 'OOP' and tells me he could never go and write code without OOP. Only problem is that VB 6.0 leaves out INHERITANCE (Which to me is the most important part of OOP. Sure encapsulation some people will say, but that is just the basis--the shell of which you can use to do further things like inheritance. On its own encapsulation is crap 🙂. I've seen some really yucky stuff he tries to do with interfaces too hehe. VB .Net is nice though because it has inheritance among full threading abilities, regex and more neat stuff 😉

Java and OOP in general no doubt have their place. They are in more demand then ever despite what I would argue about OOP not being the only solution. Being realistic, students must learn this if they want a job (of course, not including the niche areas like embedded programming and so forth). But they have succeeded basic programming foundations with it from the getgo which is wrong. I know some Comp Sci students who don't even know how and when to use pointer arithmetic heh.
 
Originally posted by: DWW


I've never touched Java mostly because I don't even need to use C++ the majority of the time (I don't need OOP for most of my stuff--small programs a few thousand lines max).

Spoken like a person who's never worked on a large-scale project with other programmers. While OOP isn't a silver bullet, it's a powerful design paradigm which allows programmers to minimize design impacts over lifecycle changes to a software project. The difficulty of programming isn't kicking something out the door; it's maintaining it.

As for why they teach Java I'm not sure. I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion 🙂

While I think any competent programmer should have knowledge of all those things in his toolbox, I completely disagree that they're prerequisite training. If nothing else, things like pointer arithmetic and memory management interfere with learning the basics of algorithmic design and data structures, and probably garner a lot more poor hacking habits than sound design skills.
 
Originally posted by: FeathersMcGraw
Originally posted by: DWW


I've never touched Java mostly because I don't even need to use C++ the majority of the time (I don't need OOP for most of my stuff--small programs a few thousand lines max).

Spoken like a person who's never worked on a large-scale project with other programmers. While OOP isn't a silver bullet, it's a powerful design paradigm which allows programmers to minimize design impacts over lifecycle changes to a software project. The difficulty of programming isn't kicking something out the door; it's maintaining it.

You're right for the most part. I've not worked on many large-scale projects. At most I've worked with four-person teams.

As for why they teach Java I'm not sure. I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion 🙂

While I think any competent programmer should have knowledge of all those things in his toolbox, I completely disagree that they're prerequisite training. If nothing else, things like pointer arithmetic and memory management interfere with learning the basics of algorithmic design and data structures, and probably garner a lot more poor hacking habits than sound design skills.

Algorithm design and data structures are not language specific and are focused on design, logical and mathematical reasoning. Therefore they should not even be taught in a language-related class. Most people would probably agree there are two sound parts to being a good programmer: language/hacking/computer understanding & ability and then there is sound design. When the thread discussed Java and I questioned it I was just talking about language and computer understanding.
 
Originally posted by: DWW

Well. I think, at least from my standpoint, the school should teach OOP but at a later stage. Not at the last minute as a "this is what you will see out there" sort of thing but after the students are well grounded in procedural programming.

Funny you say about the fresh kids who think OOP is the only way. I have a friend who thinks VB 6.0 is 'OOP' and tells me he could never go and write code without OOP. Only problem is that VB 6.0 leaves out INHERITANCE (Which to me is the most important part of OOP. Sure encapsulation some people will say, but that is just the basis--the shell of which you can use to do further things like inheritance. On its own encapsulation is crap 🙂. I've seen some really yucky stuff he tries to do with interfaces too hehe. VB .Net is nice though because it has inheritance among full threading abilities, regex and more neat stuff 😉

Java and OOP in general no doubt have their place. They are in more demand then ever despite what I would argue about OOP not being the only solution. Being realistic, students must learn this if they want a job (of course, not including the niche areas like embedded programming and so forth). But they have succeeded basic programming foundations with it from the getgo which is wrong. I know some Comp Sci students who don't even know how and when to use pointer arithmetic heh.

I definately agree that if your a Computer Science student at one point you should take a class on OOP. I also feel people should have to take
an OS class as well, because there is alot of information there that is just as valuable. And I also do find it funny when people write in C++, and think
its C++, its OOP, when its not.
 
I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion

didn't read the whole thread, but here's my 2 cents. That's exactly the wrong way to teach someone computer science. It has its place, but let me know how that'll help you write "hello world".

I went through undergrad learning C++ and now I am TAing introduction to Java since our school has changed languages. I think it is an EXCELLENT idea to teach OOP first. Java is a very clean language that follows very strict rules (ie: everything is a class etc.). C++ is horribly patched together and has little methodology (ie: cout <<).

Pointers, references, C++ inheritence and polymorphism are overly complicated. Learning them first in Java is good for *teaching* and *learning*. It is good to know pointers and how things work in C++, but as a freshmen in CS they only bog you down and frustrate you. After teaching a semester, having a good foundation on OOP will make a better platform for teaching all the other parts of computer science and eventually lead up to Operating Systems classes which are taught in C++.

As for actual uses, read up on J2EE, you are totally missing the power of Java if you think its for desktop applications.
 
Originally posted by: cRazYdood
I was told at my University (Wisconsin Madison) that they teach us java, at least in our intro classes, because it enforces OOP easily, and that worrying about memory management is beyond the scope of those courses.

Heh, when I started going to Madison they still taught the intro CS classes in C++ and everyone was expected to be working on a bunch of P2 WinNT machines. The following year they switched to Java for CS classes and bought a bunch of 'tux machines.... probably a cost savings thing.

Even back in the day, though, the cs TAs were grading on some really strange systems. I remember the desktop of my TA was an old Sun station... maybe a sparc station. It's probably easier to get java ports.
 
Originally posted by: DaZ
Originally posted by: sygyzy
I don't have any qualms about JAVA as a language but to say it is ready to run as full fledged products is sily IMHO. We have TeamTrack at work and that is entirely JAVA and it's slow as beans. I mean have you ever seen a graphical JAVA program run fast? I haven't, even professional programmed products.

Thats my other issue with Java, its UGLY as hell. I've never seen a nice looking Java applet.. Do they exist? Links?

I totally agree. You can immediately tell that it's a java applet. It's like MacOS prior to OS X! I wonder why it took that long for Mac's GUI to catch up to Windows. I am not talking about ease of use or anything but just the way things work. MacOS kept using those boring three parallel lines in the title bar. Even Windows 2000 was skinnable and XP is even more so with a handful of apps. Of course that has all changed now with OS X.
 
Originally posted by: DaZ

What are some actual uses of Java? Other then a stock quote program my pops uses, I have yet to see any real uses for it.
I guess you never used Ebay, because it's backend is J2EE based, as well as thousands of other sites from Citibank to Friendster. Java is also widely used in the scientific community most recently to to relay command sequences to a remote rover on the Mars mission.

Regarding teaching it at the University, you are learning the concept, not the language. Good developers know a concept, such as OOP. Bad developers know a language, such as Visual Basic or C++. Good developers will always be able to adapt to changing times. Bad developers will be stuck maintaining legacy code the rest of their lives when their language goes the way of COBOL.
 
Originally posted by: dwell
Originally posted by: DaZ

What are some actual uses of Java? Other then a stock quote program my pops uses, I have yet to see any real uses for it.
I guess you never used Ebay, because it's backend is J2EE based, as well as thousands of other sites from Citibank to Friendster. Java is also widely used in the scientific community most recently to to relay command sequences to a remote rover on the Mars mission.

Regarding teaching it at the University, you are learning the concept, not the language. Good developers know a concept, such as OOP. Bad developers know a language, such as Visual Basic or C++. Good developers will always be able to adapt to changing times. Bad developers will be stuck maintaining legacy code the rest of their lives when their language goes the way of COBOL.

I'll have you know there are plenty of COBOL jobs that I know of still 🙂 In addition if you have at least around five years of good experience in RPG I can get you $130K to $150K yearly.

Edit: forgot to say CAN $ if that makes a difference heh. Not that it will anymore since we're approaching 80 cents on the dollar soon 😀
 
Java isn't as practical as C++ but they teach it so you can learn the concept of OOP. I think once you learn a language, the other languages aren't as hard to learn.

Ohh and also because Sun throws money at these Universities. 😀
The college that I graduated from now teaches strictly Java because of the generosities of Sun Microsystems. 😀
 
Originally posted by: Ranger X
Java isn't as practical as C++ but they teach it so you can learn the concept of OOP. I think once you learn a language, the other languages aren't as hard to learn.

Ohh and also because Sun throws money at these Universities. 😀
The college that I graduated from now teaches strictly Java because of the generosities of Sun Microsystems. 😀

Sounds like when University of Waterloo started using MS languages in its curriculum (C# I think was the big one) after a generous donation. For those who don't know (Americans maybe) Waterloo is considered the northern MIT.
 
Originally posted by: xizor
I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion

didn't read the whole thread, but here's my 2 cents. That's exactly the wrong way to teach someone computer science. It has its place, but let me know how that'll help you write "hello world".

I went through undergrad learning C++ and now I am TAing introduction to Java since our school has changed languages. I think it is an EXCELLENT idea to teach OOP first. Java is a very clean language that follows very strict rules (ie: everything is a class etc.). C++ is horribly patched together and has little methodology (ie: cout <<).

Pointers, references, C++ inheritence and polymorphism are overly complicated. Learning them first in Java is good for *teaching* and *learning*. It is good to know pointers and how things work in C++, but as a freshmen in CS they only bog you down and frustrate you. After teaching a semester, having a good foundation on OOP will make a better platform for teaching all the other parts of computer science and eventually lead up to Operating Systems classes which are taught in C++.

As for actual uses, read up on J2EE, you are totally missing the power of Java if you think its for desktop applications.

I hate to go off on a tangent on this thread, since its about Java, but

I have to disagree here. Object Oriented Programming is a design methodology. Now if you want to teach someone the basics of
programing using an language like Jave which is used for OOP , thats ok. But you should understand data structures and algorithm
design before you begin to discuss a design methodolgy. I don't understand how learning OOP gives you a good platform for a Database
course, or a software architecture course. Not to mention OOP has little to no place in embedded programming. And Operating
Systems classes should be taught in C, or if you are going to use C++, they shouldn't be OOP. Won't speak of Windows because,
I don't know the code, but look at Unix and varients. Its C, and C isn't OOP at all. Its true that the basics of programming can be
frustrating, but you need to learn and understand those basics, or you will develop into a sloppy programmer.

I still think OOP should be a requirment, espcially since its widely used, however programming paradigm shouldn't be the focus of
the beginning of learning about computer science.
 
Originally posted by: DWW
Originally posted by: Ranger X
Java isn't as practical as C++ but they teach it so you can learn the concept of OOP. I think once you learn a language, the other languages aren't as hard to learn.

Ohh and also because Sun throws money at these Universities. 😀
The college that I graduated from now teaches strictly Java because of the generosities of Sun Microsystems. 😀

Sounds like when University of Waterloo started using MS languages in its curriculum (C# I think was the big one) after a generous donation. For those who don't know (Americans maybe) Waterloo is considered the northern MIT.

Ummm... I have some friends at Waterloo and they use Java for undergrad classes. It's a huge misconception that MS is forcing C# onto Waterloo, last I knew they told me that only a couple of C# classes were being given last semester. Also, Waterloo isn't the northern MIT, the people who go there like to think they are, though.

Edit: And I agree with all the people who say that OOP is the way to teach programming. I learned the procedural way first anf OOP later, and I think that OOP is a much more modular approach that should be used for all but the smallest projects.
 
I agree with everyone else in the thread. Java is very useful for first learning programming concepts and still useful for developing large scale applications. I didn't learn Java first though. I went basic->scheme->pascal->c++->java->c
 
Originally posted by: RaynorWolfcastle
Originally posted by: DWW
Originally posted by: Ranger X
Java isn't as practical as C++ but they teach it so you can learn the concept of OOP. I think once you learn a language, the other languages aren't as hard to learn.

Ohh and also because Sun throws money at these Universities. 😀
The college that I graduated from now teaches strictly Java because of the generosities of Sun Microsystems. 😀

Sounds like when University of Waterloo started using MS languages in its curriculum (C# I think was the big one) after a generous donation. For those who don't know (Americans maybe) Waterloo is considered the northern MIT.

Ummm... I have some friends at Waterloo and they use Java for undergrad classes. It's a huge misconception that MS is forcing C# onto Waterloo, last I knew they told me that only a couple of C# classes were being given last semester. Also, Waterloo isn't the northern MIT, the people who go there like to think they are, though.

Uh well its been dubbed that from many people. It is Canada's equivalent at least supposedly and is rated year after year as the/one of the best in Macleans magazine and other ratings. Microsoft's first Canadian choice is Waterloo for hiring. Out of curiosity which school did you go to? Toronto? Simon Fraser? 🙂

Edit: And I agree with all the people who say that OOP is the way to teach programming. I learned the procedural way first anf OOP later, and I think that OOP is a much more modular approach that should be used for all but the smallest projects.

It is all opinion. What do you teach a future NASA shuttle pilot (who knows nothing)--how to fly a fast mach 5 jet or a single prop? Sure the jet is more real to his job, but the plane came first and it is those foundations which he/she should understand first and the basics of the subject.
 
Originally posted by: ChefJoe
Originally posted by: cRazYdood
I was told at my University (Wisconsin Madison) that they teach us java, at least in our intro classes, because it enforces OOP easily, and that worrying about memory management is beyond the scope of those courses.

Heh, when I started going to Madison they still taught the intro CS classes in C++ and everyone was expected to be working on a bunch of P2 WinNT machines. The following year they switched to Java for CS classes and bought a bunch of 'tux machines.... probably a cost savings thing.

Even back in the day, though, the cs TAs were grading on some really strange systems. I remember the desktop of my TA was an old Sun station... maybe a sparc station. It's probably easier to get java ports.


In our intro class, they taught us java on windows 2000 using CodeWarrior(Which I despise). Data Structures was java on linux machines, but in class we rarely did any real coding in java, more psuedo code. I still did all my coding using java's netbeans studio under windows and just sshed my homework in.
 
Java is a good language to learn OO concepts since there isn't much u need to get started. It doesn't hurt to learn it at all, because u can pickup c# in a day if u know Java.

I prefer C# because it is 'Java improved' in my opinion. Plus you have visual studio which is a sweet environment to work in, and the GUI in .NET kicks the crap out of Swing.
 
Originally posted by: Ynog
Originally posted by: xizor
I think a school should start with C. Show you the basics of every program--stack, memory management, user I/O, file access and so forth but that is just my opinion

didn't read the whole thread, but here's my 2 cents. That's exactly the wrong way to teach someone computer science. It has its place, but let me know how that'll help you write "hello world".

I went through undergrad learning C++ and now I am TAing introduction to Java since our school has changed languages. I think it is an EXCELLENT idea to teach OOP first. Java is a very clean language that follows very strict rules (ie: everything is a class etc.). C++ is horribly patched together and has little methodology (ie: cout <<).

Pointers, references, C++ inheritence and polymorphism are overly complicated. Learning them first in Java is good for *teaching* and *learning*. It is good to know pointers and how things work in C++, but as a freshmen in CS they only bog you down and frustrate you. After teaching a semester, having a good foundation on OOP will make a better platform for teaching all the other parts of computer science and eventually lead up to Operating Systems classes which are taught in C++.

As for actual uses, read up on J2EE, you are totally missing the power of Java if you think its for desktop applications.

I hate to go off on a tangent on this thread, since its about Java, but

I have to disagree here. Object Oriented Programming is a design methodology. Now if you want to teach someone the basics of
programing using an language like Jave which is used for OOP , thats ok. But you should understand data structures and algorithm
design before you begin to discuss a design methodolgy.

OO is not a methodology; rather, it's a paradigm, or even perhaps a model (loosely). A design methodology would be RUP, XP (or many of the other agile methodologies such as SCRUM). I agree on your other points though.

I don't understand how learning OOP gives you a good platform for a Database
course, or a software architecture course. Not to mention OOP has little to no place in embedded programming. And Operating
Systems classes should be taught in C, or if you are going to use C++, they shouldn't be OOP.

I agree, but how many developers are working on embedded systems? I understand that knowledge is hierarchical and cumulative, and that neophytes should permute the course of knowledge, but if they spent as much time on C and embedded systems as they do with OO it would leave the students horribly unprepared for the real world of development.

Won't speak of Windows because,
I don't know the code, but look at Unix and varients. Its C, and C isn't OOP at all. Its true that the basics of programming can be
frustrating, but you need to learn and understand those basics, or you will develop into a sloppy programmer.

Again, how many people are designing operating systems? Not many relative to the many, many number of developers working in the enterprise on large-scale OO applications.

I still think OOP should be a requirment, espcially since its widely used, however programming paradigm shouldn't be the focus of
the beginning of learning about computer science.

Well hell, now you said paradigm, so my statements above are negated 🙂 I'm going to leave them anyway. :beer:

I think the undergraduate education students receive should lend itself more towards industry than academia, and learning hardcore C for embedded systems is so esoteric that it renders the graduating student unemployable for the most part. If you have post-graduate aspirations, or if you plan on specializing, then obviously this doesn't apply; however, the vast majority are trying to remain employable in what is currently an extremely volatile industry that requires you know the current paradigms/models/methodologies/tools/languages/ad nauseum as profoundly as possible.

My tupence.
 
The reason? Because it's relatively easy to learn.
I tutored/TAed whatever you want to call it, and introduction to OOP course last term.
The idea of java is basically to teach good OOP principles, like polymorphism, inheritance. It allows you to forget about things like memory managment, and object heirarchies (alot of the time, since every objects extends Object).
Also probably because it allows students to get experience in a language that is used in the workforce. Better chance of getting a co-op job.

As for people arguing why certain things are taught in certain ways.. read this
It's an interesting site I came across while reading a ciriculum change for U of Waterloo.
 
Back
Top