views:

59

answers:

4

I'm currently a senior in high school, about to matriculate and pursue a major in Computer Science (possibly dual-major with electrical engineering. Comments?). I already program regularly as a hobby, but I would like to get a jump start this summer by perhaps attending a seminar, helping out on an open source project...you know, something legitimate that will bolster my knowledge of the computer science field.

Any ideas?

A: 

Help out an open source project! I cannot recommend this enough. You get experience working with other people, you get to read code, and you get to work on real-life applications, and... your work will probably have some meaning even if you decide to abandon the field.

Plenty of medium and high-profile open source projects have a page of projects that they want done, some are accessible to novice developers and even non-developers. Here's an example from the VideoLAN project: http://wiki.videolan.org/Help_VideoLAN

Dietrich Epp
I think I might start working on this, looks good. I highly doubt I'm proficient enough to dive straight into full-on coding, but the code janitorial sounds like a good place to start.
SteveStifler
A: 

As far as specific seminars, it would be difficult to say unless I had some idea where you live. (Not to sound creepy ;D)

But many universities (such as MIT, or I just finished a "course" at Harvard) have freely available course lectures and notes, assignments, etc. available to those who have the interest to watch and (sort-of) partake.

Here is Harvard's "CS-50".

Chris Cooper
Just checked out the CS-50 site, very interesting! I like how it actually allows you to do the problem sets and such. It's not just videos like most of the others I've seen.
SteveStifler
@SteveStifler: Yes, and it's actually a very interesting survey course. The end-project of most programming classes is to make a program that does something in a specific language. The techniques and ideas they teach in that course though, allow the students to learn to use any tool they like, and the end-projects are in about 15 languages, and do useful things like integrating with google maps, running on iPhones, and generally serving actual purposes.
Chris Cooper
A: 

I entered college with a experience in programming, and found the classes to be overly easy and simple. I would recommend against taking classes over the summer unless they would count as credits. You're going to be bored out of your mind if you have to sit through an introductory class if you know all the material.

That being said, I don't know if I would have skipped the intro class if I could, knowing what I know now. Since then the majority of the cse classes have been similar, but they provide small tidbits which can be very useful or provide a better solution or tool than you had before. Its through college that I was introduced to linux, eclipse, gcc, etc. Its the introduction which is hard. After you get the ball rolling, dancing is easy.

I should mention that I'm finishing my second year, and have just this quarter started upper divs.

All that being said (some of which was superlative), I would suggest working with an Open Source project. The possible benefits that I can think of are as follows (I'm sure I've missed some as well):

  • actual programming experience
  • depending on the OS project, actual team work interaction
  • better for resume
  • more interesting
  • can work on the project in the future
  • large realistic project/application

Remember, after school starts, you're going to get your fill of classes. Why not do something different during the summer?

Matthew
That's a good point. I didn't think of the possibly momotonous nature of 12 straight months of lectures...
Chris Cooper
A: 

Pick a totally random language (from Ruby, Python, Erlang, Scala, OCaml, etc) and work your way through http://projecteuler.net/ solving each problem posited on the site.

As the problems get more and more complicated, you will be forced to learn more and more features of the language (from Google, SO, etc) and after about 200 problems, you will have a pretty good idea about a entirely new language and possibly paradigm of programming. You are not aiming to merely to merely solve the problem, but to learn the conventions and best-practices, an expert of that language might use to do your task.

At that point you might want to be motivated enough to build something that language is generally known to be very good at, and so might end up entering a new domain of application development as well (like web-dev, graphics, distributed-systems, etc)

adi92
Ah, Project Euler. I have played around there before, but forgot all about it. Thanks for reminding me! Definitely a good site for what I'm looking for.
SteveStifler