views:

173

answers:

6

Okay, so far, I have been taking computer science courses in my high school and doing some of my own research on the web, and I have found I really like the subject. However, the computer science courses, having given me a small amount of experience in a few languages (C++, java, and python), leave me wondering where to go for development on my own.

I would like to create desktop applications, or even web applications if I could wrap my head around it. What language would you think would best facilitate this?

As a side-note, what are some good books or online documents that explain general computer science topics? I have found some good ones, but they haven't given me the depth I really want.What are some good ones?

+5  A: 

Find an "itch"--a program you wish existed, that would be useful for you to have, but you can't find (or costs money). Then try writing it, using online resources (like Stack Overflow) to help you.

At this stage in your career, language doesn't matter very much. Some languages are better than others at certain tasks, but often your own level of comfort with the language outweighs other issues. So just pick a language you're interested in, and a project you're interested in, and get to work.

You may find that you need to start with a simpler project, or you may find more resources for a different language or framework. But getting started with something--no matter what that something is--is probably the most important thing.

Ross
+4  A: 

Here is a classic but still quite relevant book if you ever want to level up from coder to software engineer.

Glenn
A: 

It sounds like you would enjoy jumping into a high level, modern language that's native to the operating system you want to target; Objective-C or C# for example. On the other hand if you really want to do something for the web, building a web app isn't much harder (there are just more choices to pick from for the back end and front end technologies you decide to use).

Basically, decide what project you want to work on and choose the best language for it. What really matters is that you're working on something.

Marc Charbonneau
+1  A: 

What language to further develop in?

Given that you know C++, Java, and Python already, a next language I might suggest would be SQL and DDL: defining databases, and getting data in and out of them.

ChrisW
A: 

If your CS course didn't touch on it, I highly advise spending a bit of time with a more functional style of language like erlang, haskell or even lisp.

They won't become your day-to-day hacking language overnight, but can really help you grasp important programming concepts relavent accross all languages. ....especially the one about choosing the right language for the task at hand.

ozone
A: 

Since you're still in high school, I would tell you that time is on your side. You have plenty of time to develop as a computer scientist. Therefore, take the long view for your development. So it's much better for you to understand the abstractions that underly software technology.

In my humble opinion, C++ and Java will always be around and you have plenty of time to develop your skills in that arena. However, a higher level language like Scheme or Python will pay plenty of dividends. You might find this recommendation highly enlightening.

In addition, every application will deal with a database as its system of record. Understanding SQL and data modeling is a win-win.

Also, understanding formal logic and/or discrete mathematics is indispensable for computer science. Computer languages are nothing but formal languages for executing procedures: i.e. mathematical induction is used to define their syntax and semantics.

Alan