Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a student in high school who has wanted to become a computer programmer since elementary school. There are not very many places that teach programming to people my age around where I live, so I am entirely self-taught using resources on the internet such as the MSDN.

I have learned and become decent in QBASIC (which I know is very old, even when I learned it), C, C++, C# and have dipped my toes into Java. I get the basic idea behind OOP.

I'm planning on going to college and getting a degree in computer sciences, and maybe computer engineering and electrical engineering while I'm at it, because the curriculums are supposedly extremely similar, according to a man I briefly met and talked to from a college.

What should I know about computing/programming before going to college? Should I already know a whole lot, know a language or two proficiently, and have fairly high programming/computing skills, or do classes basically start from scratch?

share|improve this question

migrated from stackoverflow.com May 15 '11 at 4:08

This question came from our site for professional and enthusiast programmers.

2  
Thanks to whoever migrated my question to the appropriate site. I'm new to the stack exchange network and didn't know that this one existed. –  Jared May 15 '11 at 4:11
    
Computer science is quite different to programming, you cover much more theory like this rather than learning how to program specifically. –  Andrew May 15 '11 at 4:12
1  
@Andrew I find CS.SE to me significantly more scary then anything I've learned in CS as an undergraduate. It does give examples off the kind of things you'll learn but the site does contain a lot of PhD level content. –  Raynos May 15 '11 at 4:17
    
@Raynos Fair comment - I guess the point is that (in my experience) the focus of a CS degree is not on how to become a good programmer, but more on the theoretical aspects of complexity, graph theory, computability, etc. –  Andrew May 15 '11 at 4:21
2  
Hey Jared, I see that you're new, so I figure I'd pass a recommendation about question style. While this post was not hard to read, it's bordering just a tad on ugly. For future reference, try to break your paragraphs up to enhance readability. That way, when you have a less interesting question, you'll still be likely to get some responses. Good luck! –  Casey Patton May 15 '11 at 10:01

10 Answers 10

up vote 9 down vote accepted

I have learned and become decent in QBASIC (which I know is very old, even when I learned it), C, C++, Visual C#.NET, and have dipped my toes into Java. I get the basic idea behind OOP.

You're already way out in front. Since you're interested in the engineering aspects as well, I'd recommend learning assembler for some particular CPU architecture (x86 is probably the most popular). This will give you (as in, force you to learn) a better understanding of what goes on under the hood.

I'm planning on going to college and getting a degree in computer sciences, and maybe computer engineering and electrical engineering while I'm at it, because the curriculums are supposedly extremely similar, according to a man I briefly met and talked to from a college.

Whether the programs are similar depends heavily on the college. I happen to be fond of that particular combination because it's what I studied (EE undergrad, CS graduate). You'll need strong math skills to go this route.

I'm wanting to become the best programmer that I can possibly be.

Make sure that the colleges you apply to know this!

The question I have is what should I know about computing/programming before going to college? I am entirely unsure of what the curriculum for a computer science major is. Should I already know a whole lot, know a language or two proficiently, and have fairly high programming/computing skills, or do classes basically start from scratch?

When I started the CS graduate program (several years after graduating), I had been programming for a while and was pretty good at it (enough to get paid to do it). It didn't matter. I had to start with the same intro courses that everyone else started with. Your knowledge will make these intro courses easier for you, but colleges don't expect much in the way of specific CS skills from incoming students.

However, your demonstrated ability to learn independently may open some doors. Because of what you have already learned, you may be accepted into a program you might have otherwise not been. It may also help you find co-op opportunities or a campus job that will help you make connections (if that interests you).

Also, were there any mistakes that you mad in college that you regret making that you would like me to know about? Any help or advice at all would be greatly appreciated. Like I said, I want to be the best I possibly can. I dont want to be behind my peers when I start college. If anywhere, I want to be semesters ahead.

My biggest mistake in undergraduate EE was not seeking out mentors among the faculty and graduate students. I basically went to class, did my homework, and hung with fellow students. I hardly interacted with professors outside of class and office hours (and then only talk to them about assignments).

share|improve this answer
    
Wow, thanks for all the input and details! –  Jared May 15 '11 at 4:48
2  
I second the comment to talk to professors and others outside of class. It's one of the things I wish I had done more of. –  Caleb Huitt - cjhuitt May 15 '11 at 17:36

I have done a CS college degree by switching from another one halfway through with 0 programming knowledge. It works fine.

If you want to be ahead of the game learning languages like

  • python/ruby/javascript (Knowing Scripting languages is useful and a great introduction)
  • C / ASM (Understanding how it works at a hardware level)
  • haskell/lisp (Understanding functional languages)
  • Java/C# (Understanding classical OOP would be useful)
  • Matlab / Mathematica (Languages for doing mathematical things like manipulating matrices).

Would help.

Also, were there any mistakes that you mad in college that you regret making that you would like me to know about?

Every CS student I know starts his coursework a week before the deadline. It's the done thing, CS students are lazy. This is the only thing I've regretted, not sticking to deadlines.

I dont want to be behind my peers when I start college. If anywhere, I want to be semesters ahead.

The only thing I've noticed CS students struggle with knowledge in Maths and Understanding theoretical computer science. A lot of knowledge about topics not directly related to a course get's assumed (Like knowing matrix manipulations on a course for computer graphics or understanding calculus behind Feature detection algorithms)

share|improve this answer

You sound just like me four or five years ago, and take it from me in the form of a ridiculously broad but (unfortunately) also rather fair assessment: colleges start from scratch because they don't expect high-school graduates to know anything, and moreover businesses start from scratch because they don't expect college graduates to know anything—except of course the basic required to learn on the job. A CS degree is worth it, but you probably won't be too challenged by a normal curriculum.

The best advice I can give is to keep learning on your own and see how you feel in the future; a college degree is worth getting because most companies won't spare you a single glance without one. If you find yourself studying CS in college and aren't being challenged, seek out good professors who share your interests and work with them on independent projects—if there are no such professors at your college, find a better college.

In short, learn everything you can whether on your own or from higher education. Study what interests you and constantly try to improve, because there's no reason to limit yourself. Even if your courses cover topics you already understand, you will most likely see them in a new light and find yourself taken down new paths.

Above all, have fun.

share|improve this answer
2  
Companies tend to have extremely focused training (“How do I use this tool”) whereas college degrees tend to be more broad and abstract (“What are the general concepts behind a class of technologies”). Both are valuable, but only one is likely to be useful for any length of time. –  Donal Fellows May 15 '11 at 16:14
1  
@Donal Fellows: Very true. They usually expect that college graduates at least have the fundamentals and the capacity to learn the job-specifics. –  Jon Purdy May 15 '11 at 16:35
    
I think a lot also depends on the school. I would suggest that he go to a reputed, difficult school. I've attended two different colleges, and I can attest to one school's program being way more difficult than the other. –  Casey Patton May 15 '11 at 23:19
    
"...businesses start from scratch because they don't expect college graduates to know anything." and yet "...degree is worth getting, simply because most companies won't spare you a single glance without one." It's a little contradictory. They most definitely do expect you to know something. I'll be honest though... I don't know what that something actually is. –  Steve Evers May 16 '11 at 4:08
1  
@tdammers: Absolutely, but I guess the idea is that you've got to demonstrate your aptitude somehow, and it's going to be with either a degree or a ton of personal projects and work experience. –  Jon Purdy May 18 '11 at 6:34

There are not very many places that teach programming to people my age around where I live, so I am entirely self-taught using resources on the Internet such as the Microsoft Developer Network. I have learned and become decent in QBASIC (which I know is very old, even when I learned it), C, C++, Visual C#.NET, and have dipped my toes into Java.

Knowing the basics of C++, C#, and Java will put you past most of the students in the first couple semesters. Knowing where and how to read the manufacturer’s documentation also puts you ahead of most students in their freshman and sophomore years and will greatly cut down the time you have to spend on your assignments.

The question I have is what should I know about computing/programming before going to college? I am entirely unsure of what the curriculum for a computer science major is. Should I already know a whole lot, know a language or two proficiently, and have fairly high programming/computing skills, or do classes basically start from scratch?

You don’t really need to know anything about computing or programming before going to college as they will teach you the fundamentals. What you already know puts you at an advantage and depending on your skill level you will likely find your first couple intro to programming classes to be a rehash of what you already know. Here is the course curriculum of the college that I went to when I was an undergrad. http://www.cse.psu.edu/curriculum/cs/cs-ug-handbooks/cmpsc2010 On page 10(psu)/13(pdf viewer) you can see a list of courses that Penn State requires for you to graduate. When I went there the intro programming classes were in C++/Java.

Also, were there any mistakes that you mad in college that you regret making that you would like me to know about? Any help or advice at all would be greatly appreciated. Like I said, I want to be the best I possibly can. I don’t want to be behind my peers when I start college. If anywhere, I want to be semesters ahead.

I recommend actually reading the books (some students think you can learn the material with the plastic wrap still on the book) and reading the material that will be covered before you go to class. This way you can ask questions about anything you didn’t understand in the material or thought you understood. I also recommend keeping your college books rather than trade them in (if you are not strapped for cash). I can’t tell you how many times I have referenced one of my old textbooks for something I needed on the job. I also recommend talking with your professors outside of class. They are a great source of knowledge and can lead to connections within the industry. I also recommend that you interact with your fellow students so you can help fill in your knowledge gaps faster as you explore areas that you are not familiar with.

share|improve this answer

What do you want to do after you graduate? Some people go on in Academia, doing Ph.D.s and staying in academic research and teaching. Others go to work in the industry as developers. There are also interim paths like doing applied research in a large industrial research lab. If you know the answer to this question, it may direct you in answering other questions, such as where to place your efforts.

I also think you have covered a fair amount of programming languages. College should add some principles, like data structures, algorithms, compilers and programming language theory, to the part you already know.

Here's Joel Spolsky's Advice for College Students, which is quite biased towards industry. If you have spare time, you can find an open source project you like in a language you are already familiar with and try to contribute to it. They would welcome your help. You will learn some of the practices of software development and get experience in the parts that college is unlikely to cover. You can try Github, Apache or sourceforge.net for project lists.

share|improve this answer

The short answer is: you don't need to know any programming before college in order to well. However, if you want to then I won't object.

Do you have an idea of what college you plan to attend? Different colleges start with different languages, and to really get ahead it would benefit you to learn those languages. My school starts with C++, for example, while MIT starts with Python. This info can be easily figured out by looking at the course registration page for the introductory programming class. If you're not sure where you want to attend yet, the most common starting language seems to be C++. Some other good languages to learn are Java, Python, or C (if you reaaaaaally want to get ahead).

To the person who was talking about the fact that you'd be doing more "computer science" than programming, this depends on the school. Pretty much all schools start out with programming and work up to real "computer science" in later courses.

share|improve this answer

You should be in great shape. Knowing how to program already when you get to college will allow you to focus more on the big picture (algorithms, complexity, functional/imperative/OO styles, etc.) without having to sweat the nitty-gritty details too much. That is, you'll learn what to program, in addition to how to program. That what is what the college education is supposed to be all about.

share|improve this answer

I would say the thing to start focusing on is mathematics and logic rather than specific programming languages. Discrete Mathematics will help you learn about writing faster, more efficient algorithms. To be a great programmer, you need more than a language. You need to understand how to break down and solve problems. You also need to understand how to make your programs function efficiently. You are not going to need higher math to do most programming jobs. But, a solid foundation in math will help you be a stronger programmer and will open some programming options to you that others will not have.

share|improve this answer

As others have said, congrats, you're already better prepared than 95% of your peers. I wouldn't worry too much about learning more languages.

If you want an extra leg up, universities like MIT and Stanford put their introductory courses online. Those videos cover a lot of great material and they are designed for new students. Moreover, the two courses teach the material in radically different ways, so you will learn different things from each of them.

Good universities teach a lot of theory, but they usually don't teach practical skills. I would suggest learning to assemble computers, overclock computers, install OSes, and become a power-user. Not only are those skills useful by themselves, but you'll also learn a lot of how computers work under-the-hood.

You might also benefit from reading the books Gödel, Escher, Bach: An Eternal Golden Braid, and The Pragmatic Programmer: From Journeyman to Master. The former introduces methods of thinking which are useful to programmers, and the latter covers a lot of basic development skills.

Best of luck.

share|improve this answer
    
Thanks for the resources. I have actually looked into Stanford. Seems like an excellent school for programmers and the computer sciences. –  Jared May 16 '11 at 4:16

I am a student in high school who has wanted to become a computer programmer since elementary school. There are not very many places that teach programming to people my age around where I live, so I am entirely self-taught using resources on the internet such as the MSDN.

I was in a similar situation. I can tell you that for most of my programming classes, besides the programming courses based on pure theory ( data structures for instance ) I most of time was ahead of 90% of my peers. The only people ahead of me, were actually a great deal smarter then me, I also took courses that would interest me.

I have learned and become decent in QBASIC (which I know is very old, even when I learned it), C, C++, C# and have dipped my toes into Java. I get the basic idea behind OOP.

I'm planning on going to college and getting a degree in computer sciences, and maybe computer engineering and electrical engineering while I'm at it, because the curriculums are supposedly extremely similar, according to a man I briefly met and talked to from a college.

The one subject I wish I knew before i started college is: Assembly. You don't even need to learn x86 Assembly you can learn the assembly language they teach in school ( the exact one escapes me ) if you know how to write in Assembly you would have a huge advantage.

I'm wanting to become the best programmer that I can possibly be. The question I have is what should I know about computing/programming before going to college? Should I already know a whole lot, know a language or two proficiently, and have fairly high programming/computing skills, or do classes basically start from scratch?

If you have an advantage knowlege of Boolean Alegbra, Pointers, OOP concepts, and Regular Expressions ( Computation Theory ) you should do just fine. Computer Engineering/Computer Science is not a hard subject, if you learn to solve problems like an engineer, some people can do this and they end up being the best students.

The one thing I really wish I did was take part in the students clubs. You need to seek balance as a college student, its not all about the grades, you need find balance in your life. I know people who got all A's in their classes and they are still looking for work. While some of their problems might be cause by the current job market. I had no problems getting a job.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.