I’m off to University in just over a month and I thought it’d be a good idea to get a head start, academically. I’ve applied to study Computer Science, and, as only sense dictates, the first language we touch upon will be Java, the big brother of JavaScript… kidding; I can hear Crockford screaming! So, with all this spare time I’ve decided to learn Java, or, at least begin on the journey!
I downloaded Eclipse and the “Java runtime”, only, of course, to find out that I already had about 10 different Java runtimes already installed. I fired everything up and then stopped; I had absolutely no idea what to create… What can I say? The command-line doesn’t excite me! Yes, I know pretty much anything can be created with Java, even hardware-accelerated games, but all the beginner-tutorials out there only show you the monotonous command-line drivel.
I also purchased a book recommended by the University; I believe it’s the one we’ll be learning from in the first year. It’s called “Objects first with Java” and goes into a tremendous amount of (unnecessary?) detail; I haven’t really got past the first few pages. I’ll tell you something about objects; you’re never going to learn squat about them from tutorials or books. Yeh sure, you’ll get an idea about what they are but you’ll never appreciate the abstraction provided by OO language until you dive in.
Now, don’t get me wrong about this whole University thing; I am looking forward to the “experience” but I’m not exactly overly-excited about the impending course material. I haven’t even begun and I’m already finding it dull; I’ve no doubt that I’ll be pleasantly surprised though… I’m sure the first lecture will prove enthralling!
I’ll be honest with you; I’m only going to University because “that’s what one does after school”. Heck, most people go to Uni for exactly the same reason (they just don’t know it); it’s what’s expected of us. You can say what you want about it but essentially, University is yet another device used to extend and perpetuate the status-quo; i.e. us working and the government getting richer. I just can’t wait; out of uni with a load of debts and then into the monotony of a “career”. Eventually I’ll have additional burdens that will require monetary attention and before you know it I’ll be where most of the British upper-middle-class finds itself, paying off debts… living the dream!
Isn’t it amazing, I haven’t experienced any of this impending fate yet and I already have the capacity to be utterly dismissive and totally negative about it all! Here’s hoping the grass is greener!
Thanks for reading! Please share your thoughts with me on Twitter. Have a great day!
No need to ask for people to be gentle. I not only despise Java but agree with everything you’re saying here, especially as I attend one of the “better” Schools for CompSci here in the states.
Either way, good luck at school and with Java
Ohh I’ve been at uni for 4 years, and I still feel the same way as you. The first couple years will no doubt be boring, but content should get more interesting toward the end once you’ve finished the intro subjects.
At least you’re starting with a decent language – the first one we learned was Scheme… *barf*
The really interesting stuff starts when you get to do your own thing at the University’s expense, ie research.
You could see how fast you could get that Conway’s Game of Life to fly =)
I wouldn’t be too down on the whole thing… On the plus side, you will undoubtedly be much smarter than your classmates so you can plow through the coursework and spend the other time perusing other interests. An awful lot of startups are bored college kids =)
I have been the last two days looking for resources to learn Java. I am really interested in the stuff because I love all the possibilities of the visualization. I search two or three places to learn and guess what… a lot of money. Well, if you find really nice stuff about it…please e-mail me.
I found this:
http://www.cafeaulait.org/javatutorial.html
I hope be useful.
University is unlike anything you’ve done, and unfortunately anything else you’re going to do unless you really love the study of computer science. I recently graduated from university with a degree in Computer Engineering, taking roughly similar courses as a Comp Sci (except we also took harder classes related to engineering that were straight out of unrelated engineering disciplines, like thermodynamics, statics (bridges), and materials science).
Almost everybody enrolled in the computer science department started out years before school, programming in something–usually web development (esp. Javascript, the bad parts). A healthy number of them drop out of the program and switch to math/physics/management or even art history. They drop comp sci not because they are dumb, or have a slower intake of the sheer volume of dense material fed to them. It’s because they discover that the internals, things like how primitives are actually allocated in different ways in memory, sometimes even to your advantage to use the right one, are not as interesting as they had hoped. Low-level course material, such as transistor logic, VHDL, networking, operating systems (easily one of the most challenging and rewarded courses taught in computer science), and systems programming, are all above and beyond what most contractor/freelancers will face while they are busy earning 25% more than their comp sci cousins.
But the difference is worth a lot. Take a look at that one, systems programming. Here is a short description of what’s taught:
If you want to write code that does anything that involves automated decision making, the true back-end of great companies to work for or start, you need to actually study and learn about these low-levels to build better decision trees (data structures alone make it worthwhile) and neural networks. There are so many fascinating topics out there, and they are all more expressive than having to design web sites for clients.
I absolutely love the study of artificial intelligence, and am working on a project where the meat of the project is in the AI that feeds the site, but I don’t write algorithms or architect systems for a living. I write Javascript code (and Python on the back-end serving up the front-end), designing a web app for publishers to create photo galleries. It’s not quite the academic challenge I get on my project, but you also have to be very, very good at computer science to get recognized and to make big contributions, even to small companies (think startups).
Computer Science is a rich and engaging degree, and while it isn’t for many who think it is, those who stick with it all 4 (to 5) years end up very happy. This is the golden age of software. There’s a lot of upheaval which will forge new empires, and I bet something as notable as the few winners of the California gold rush of the 19th century didn’t even have the prestige that good engineers have. Think of all the famous and very wealthy nerds. Think about that when you’re slogging through decimal floating-point arithmetics in binary by hand.
I wasn’t able to attend uni, and as such I do feel like I’ve missed out a bit on some knowledge I really need. I’m not sure how you’ve learnt all you know about web design in general, but you seem pretty good and knowledgeable about it. Myself, on the other hand, you could call a 1st/2nd year bum – I know what I need to make some of the more simple stuff, generally plodding through till it works.
It’s not like I haven’t tried learning all this through reading and tutorials and the like, I just don’t seem to be able to pick up on it, it’s sort of like a blur. Show me a screen cast or something similar though and I’ll be able to write something 10x better then what’s shown by the end of the cast. To me at least, Uni is the chance to be shown visually all the little things that make all the difference, rather then reading about (and forgetting about as I tend to do).
BTW, I’m not sure what it is, but most of the time when this comment box expands, I lose the writing caret. Kinda annoying actually, as then I have to use the mouse to fix up mistakes.
I just finished CompSci (in the US). I’m pretty sure only about 1/2 of the people that originally started the program graduated. Most people transferred out after the 1st semester into business.
We learned Scheme first. And I now appreciate it after taking it freshman year than later again in my senior year for Programming Languages. It’s just like JS, except retarded syntax. It teaches you lexical & dynamic scope, evaluation, lambda, etc. Starting with Java will immediately take you into OOP concepts which I’m sure you know anyways. Either way, you’ll most likely know a lot before it’s even taught so stick in there and keep at it.
Good luck.
Thanks for the fantastic and insightful comments; all of you!
All this is definitely making me think a lot about the course; I think I’m probably a little more optimistic about it all now!
Thanks! 🙂
Good luck, with your journey at the university 🙂 and on the learning java subject, maybe this site can help a bit http://www.javavideotutes.com/index/lessons/
I wouldn’t worry too much about your course content, you seem to be rather intelligent, so you can make anything of your time at uni.
While I studied “Internet Computing” only 2 units were different to the typical Computer Science course, but I was going through uni just to demand a greater salary so I stuck with it, and did web design/development in my spare time (which I had plenty of). Much of the course is related to things that aren’t really relevant to many real life jobs these days, for example, in my second year we had to learn about sorting algorithms, which is utterly useless to me – many people only need to know is that they can code: “[1,3,4,2].sort”. Same goes for how databases actually perform locking – most of us only need to know how to lock/unlock rows etc, unless you’re coding a DBMS (working for MySQL, Oracle etc) then it’s useless. But I actually don’t believe you go to university to learn, unless you are really interested in continuing in research or a real geek (i.e. you like low-level programming, or study physics etc), you simply go to prove you have a good aptitude for learning quickly. Most jobs have specific ways of doing things, whether it’s a specific language they develop in, how they communicate, etc, so by proving you can learn and adapt to those quickly – that’s what they want, they can train you when you start.
I came out with a 2:1, I could have got a 1st if I worked much harder, but the toss up between enjoying my time, improving real life skills, and making money and getting a better grade and having to work much harder for it wasn’t worth it.
The same happened on my course as @Mark above, first year seems to be what Universities use for filtering people out, ditching people who aren’t dedicated, transferring those who are on the wrong course.
Good luck with the next 3+ years James! I’m sure you’ll have a blast like I did.
PS: if there is one piece of advice I can offer you: take what you learn at Uni, and try to apply it to your real life projects – or at the least, take your notes and write them up into a blog post that should be interesting to general public of web designers/devs (and others you’re targetting with your blog), most people learn best through *doing*, not reading or watching. That tip applies to @Live-Dimension above too.
Java is a useful language to learn in terms of OO concepts and stuff. They only started teaching it when I got to the third year of Uni (10 years ago!) but I learnt it for a year and it’s come in handy since (directly with writing socket servers for flash games and indirectly with the OO stuff it taught me etc) although I don’t use it that often. Learning java makes lots of other languages very easy to learn too (e.g. c#, as3 etc). In terms of learning, our textbook was “Thinking in Java” by Bruce Eckel and it was pretty decent. I think it’s available for free download too…
In terms of finding a project to interest you, maybe have a look at processing as that gets to the interesting/ pretty stuff a lot quicker. Or maybe into development for Android (something I’m starting to look into myself). In both of those cases your canvas is a bit more interesting than an empty commandline!
Oh yeah… And Uni isn’t really about what happens in the classrooms or on your course anyway! It’s all the other fun stuff that’s what makes it so worthwhile 😀
I’m appalled with the comments regarding Scheme. It’s the other way around: Java is the “retarded” language. I was hoping for CS students to have a clue about the history of programming languages.
Lisp like languages were and are way ahead of Java. And @Mark. It doesn’t have any syntax: everything is an s-expression.
People here don’t seem to have a clue about the genesis of Smalltalk and how Alan Kay was influenced by Lisp’s design. So he says.
And yes Lisp has OOP. In a way that Java doesn’t have. I believe that was Gosling
that said that Java was a language for “average programmers”.
The Crockford that is cited above has stated that Brendan Eich’s first idea for the “browser language” was Scheme. Closures and Lambdas (anonymous functions) came from Scheme, I suspect. There are a lot of nice things in JavaScript and most of them came from Lisp/Scheme. The same goes for Ruby.
For a Lisp like language that functions on top of a Java VM, in active development see Clojure.
@perusio
Sure, Scheme is powerful and certainly has its uses. However I don’t agree with the use of it as an introduction to programming, since it is so different to the majority of languages actually in use, and in my opinion much more difficult to follow for new programmers.
@kelvin
Totally agree with your second comment 😀
@Jordan @perusio
I also learned scheme and prolog in the first year of university. This is only because the university wants to give you a round up about what is out there. The problem with this is, it lacks (at least here in germany) the practical side. I surely learned a lot, but I didn’t used it, so I forgot already most of this stuff.
But i do remember the time we spend in a learning group leraning scheme and for every problem we did make up trying to write the shortest solution. That was fun. I am glad I have been gone through with it, but I really think, I could have been spend my time a little more valuable.
And I now know: Computer Science is the last thing I would study if I had the chance to start over again. (And again: at least here in germany.)
But I wish you good luck with that, have fun and do something worthful with your sparetime. And blog about some interessting stuff, so I can remember what I already forgot.
imo
attend first year to get a handle on the social and achedemic scene, but
don’t enroll in 2nd year,
instead hang around working part time to pay the bills, attending classes to learn — save yourself the debt
You’re a talented and knowledgeable developer already… going in to debt only to have the opportunity to be judged by the estblishement is questionable — in the end your employers aren’t likely going to care if you’ve gone to university. This is double significant if you plan on doing the startup thing…
lots can be learned at university…. but when it comes to web work academia is generally so far behind that their approval of your skill is largely irrelevant.
that said, social and intelletually university is great…
James,
While I think it’s applaudable that you are jumping ahead in the coursework, take some advice. Don’t spend too much time on it, just enough to get the A. There are many more important things to be doing at uni.
But if you feel compelled to do something interesting and web related in Java, why not play with GWT and compared to the JS you know.. And that can keep the blog kinda on topic 😉
If you’re not liking it, just switch it up for something you do like.
Expect some things to be dull, even the boring parts are important. It’s all about building that foundation, no matter the cost. It’s fine if you struggle with it as well. I’m pretty sure most people aren’t geniuses and automatically know everything. Anything worth knowing is going to take time and an investment from yourself. I believe that is worth having.
@perusio
yes, lexically scoped closures came from Scheme (see Clinger’s Scheme 33 paper), lambdas were introduced by Lisp over 50 years ago, but without closures (see funarg on Wikipedia). Scheme got lambdas right.
@Jordan
Scheme is used as an introduction to programming because its syntax is simple, the language is very lightweight (the core language is the lambda-calculus + assignment), features powerful abstraction mechanisms in the guise of first class functions and first class continuations and as such is ideal to introduces the basic concepts of CS. And here’s the point: when you understand the basic tenets of CS you can learn about any language.
@jordan
I forgot macros (metaprogramming) and Tail Call Optimization !