Ask HN: Should I take this course?

2 points by jmonegro ↗ HN
Hi everybody,

As described in my bio, I'm a high-school student earning a computer science technical degree. For my senior year starting in August (technical degrees start earlier and end later), my CS teacher pulled me aside and offered me an entry to Java AP for next year. Only 10 will be allowed to the program. The Java AP class adds an extra hour to my schedule.

Next year, Java is taught only to Java AP students.

My question is, then, should I take this course? The problem is not those extra hours a week: I don't mind that. Neither is the class, nor the AP (that actually helps me later, so...). The thing is that I'm very immersed into Ruby right now, and I'm afraid that learning two languages simultaneously won't be very helpful. I know that being proficient in many languages can help me, but I'm not sure about learning them simultaneously.

I took my final exam on C++ yesterday (which I hadn't touched since last semester), and already I was forgetting all the semi-colons and whatnot.

So, in the real world, will Java AP help me a lot?

Thanks, I appreciate your comments.

12 comments

[ 2.5 ms ] story [ 40.8 ms ] thread
I think that it's worth taking a good course in Java. It's an important language and would be a good complement to knowing about Ruby.
I'm so out of it. The idea of a high school focused CS degree blows my mind. Have we really taught enough English, Math, Economics, History by the time a student is 17? Java as a core skill set for life seems a bit misplaced.

As too your question, if you've got nothing better to do with your time, sure take the Java class. I am guessing though that the reason you are already forgetting your C++ is because you haven't "used" the knowledge.

Regarding the first part of your comment, yes :D. I take the English AP, the Economics AP, the US History AP as well. I'm not in AP math yet, but I'm taking Calculus as well. I like to think that (at least my school) has weighted all the courses pretty well.

For the second part, in my time I do the usual student stuff like going out and hanging out, but I really like Ruby and Rails, so I do that as well. I also think that's why I'm already forgetting C++ - the lack of use.

I know Java is potentially useful, but I gear my programming towards the web, mostly. I could use Java with the Google App engine, but I can use Ruby with it too with JRuby. There's my dilemma.

Your High School program sounds pretty amazing. Nothing like that when I was in school.

The one benefit you may get from Java that is tough to learn in Ruby is formalization of your object interfaces. Since you've already been a bit brain damaged by C++, the Java won't do any worse ;).

Don't worry about using more than one language. With time, that is normal for most people.
Java is not going away anytime soon, knowledge of it would do no harm if you are looking to work as a programmer.

I was trained in COBOL and FORTRAN. I used COBOL for all of six months (more than twenty years ago) and never used FORTRAN. But knowing them got me my first programming job.

At the age of 17, tho', doing something not at all related to computers and academia is far more impressive on the ol' CV than yet another programming language. Why aren't you an Eagle Scout or something?

I'm in my 30s now and no-one cares that I knew Pascal once, but in job interviews I still get asked about being on the rifle team at school...

>> So, in the real world, will Java AP help me a lot?

I am of the opinion that yes, knowing Java will help you a lot. But will Java AP help you a lot? It depends on you. If you took a class on C++ and were forgetting it by the time you took the final, that means you weren't using C++.

You can't learn to program from a class, you have to do it yourself. So learning Java will help you, but that won't necessarily happen if you take Java AP.

My strategy has generally been to take the easiest possible combination of classes to get a degree (because let's face it, that world wants you to have a degree), and I spend a lot more time trying practical things. Last semester I wrote my own UNIX shell. I'm friends with a guy who took a class on UNIX, and thought I should take the class with him. But I can tell you right now - he hasn't got a clue how to use his knowledge. So who came out of that semester with a better education?

I agree that you can't learn to program from sitting in lectures, but they can help you. They can help especially in conjunction with well chosen programming assignments. Most programming assignments are designed to introduce you to new topics in algorithms or data-structures. This allows you to expand your abilities more quickly that you would on your own. Learning ruby simultaneously will hopefully help jmonegro learn some of the shortcomings of java. The projects probably won't be large enough for him to see many disadvantages in ruby. ruby really shines in the kind of small programs people normally write when first learning a language (among other areas).
Java is very closely related to C#, and I've used a lot of C# lately at my job. You say you'd like to focus on web-based languages. Well, VB and C# are the primary languages for ASP.NET, which is a big part of linking databases to the web.

Even if you wind up using Ruby more than anything else, knowing how ASP.NET interacts with the web won't hurt.

Take it, but don't stop the ruby. At this stage it is worth getting as much programming experience and direction as possible.
You don't need to take the course to take the AP test. I took the AB test this year after signing up late and only haven written two programs in java (one of those being hello world.) It was a fairly easy test. I would recommend taking the class if the class if you want to learn java, but just take the test and teach yourself if you just want to skip entry level cs in college and use the free time to teach yourself what you want.