14
votes

I've dipped my toes in C++ programming but I haven't actually delved into it. I want to know if I actually need to learn it or any other languages before I go to college for Computer Engineering or am I just going to learn it at school anyway?

5
  • I would say you definitely don't need to but it wouldn't hurt at all. Before I started on my CS classes I never did any coding and I didn't even know what C++ was and the class was in C++.
    – pllee
    Dec 23, 2011 at 20:11
  • 3
    ...Even if you do learn it there anyway, that just means an easy class. So there's no reason not to learn it now...
    – Izkata
    Dec 23, 2011 at 22:09
  • It might help you find out if you have the apptitude and/or interest in programming.
    – JeffO
    Dec 24, 2011 at 16:25
  • You've asked this question at programmers.stackexchange.com. Did you really expect another answer than "yes, learn C++ before you go to college"? Dec 27, 2011 at 5:31
  • @moose, then close as a duplicate.
    – user1249
    Jan 4, 2012 at 6:53

16 Answers 16

48
votes

Yes, for several reasons.

  1. The sooner you start getting experience with the field, the sooner you'll be able to figure out if this is the field you should be majoring in. If you don't like programming, then Computer Engineering is probably not a good field to major in. Even if you are mostly interested in designing CPUs, you are going to be doing a LOT of programming.
  2. Most folks find that the level and amount of work expected from them in college greatly exceeds what they are used to in secondary school. Unless you are exceptionally talented, you are going to find yourself hammered with work. Do yourself a favor: find out which language is used for teaching the first year course and start learning it now. Worst case, you'll be a little bored in the class, but you'll be able to get the work done faster and use the time saved for your other classes.
  3. Many classes are graded on a curve. The downside of this is that you will be competing with your fellow classmates for grades. Many of your fellow computer engineering students will have already done a lot of programming, so you may already be behind the curve. This is a good time to start catching up.
  4. The only way to get good at programming is to do a lot of it. The more time you spend programming in the next few years, the better you will be at it. The more experience you have, the better the chance you have at landing internships and jobs.
3
  • 7
    +1 For starting now to make it easier in the future
    – Andy Hunt
    Dec 23, 2011 at 19:44
  • One can also skip two classes (typically intro to programming and intro to data structures) while in college, if these were taken in HS. Having less classes to take means possibly less money to spend, or at least more buffer time. The CSE programs can be very rigid - e.g. you skip one class means you stay back a year. Having a buffer would help. One can always take extra grad classes or pick up a minor.
    – Job
    Dec 24, 2011 at 4:55
  • If you end up being exceptionally fluent in the programming language being taught by the time you take an introductory programming class, consider whether your institution has a "Credit By Exam" policy that you can use to test out of it. It can save you quite a bit of time (but only if you are exceptionally fluent in the language).
    – In silico
    Jan 4, 2012 at 13:02
7
votes

As a CS graduate myself (BS, MS, PhD), I would recommend that you get your feet wet as soon as possible. You will have enough other stuff going on in your first year of college. In particular for programming:

  • Check the website of your target university and look at the lower-division class catalog or instructor syllabus webpage for introductory programming classes. Look for the programming language being taught and see what kind of things are covered in the first class. Try to read up on that material before you start.

  • Again, looking at the class syllabus page, look at the previous programming assignments and see what kind of software programming tools and environment are being used. Is it vi and gcc (this is what real men use)? Microsoft Visual Studio? Eclipse? Try to use these tools before you start.

  • Software programming is just one of the things taught in a CS curriculum. Others are algorithms (e.g. QuickSort), data structures (trees, linked lists, hash tables), and pure theory (NP-completeness and set logic). I would say these are at least as important as whatever programming language you learn.

1
  • +1 for not just reading on programming languages
    – Andy Hunt
    Dec 24, 2011 at 0:56
4
votes

It depends on the college. When I studied what they call "Computer Science" at California State University, they (rightfully, in my opinion) concentrated on the science aspect of it, and they expected everyone (even freshmen) to already know how to use operating systems and how to write code in some popular language. They did not accept to transfer some credits I had gained while attending language courses at a State University of Ohio. (That was a bummer for me, but again, I understand it.) This also had an upside: I completed an assignment once, writing my code in C; the professor could not read C, so he asked me to rewrite it in Pascal. I asked the head of the department about the rightfulness of this request, and he said that since they do not teach languages, they also cannot expect anyone to complete an assignment on any specific language. So my professor had to live with my assignment written in C. So, the bottom line is, check with the university you are going to go to. But if you want my advice, it never hurts to learn as much as possible beforehand.

3
  • 2
    And C++ is a good choice for a language to start with, if you are going for any of the engineering disciplines, because with C++ you can learn to program close to the machine, and at the same time you can start learning OOP.
    – Mike Nakis
    Dec 23, 2011 at 19:21
  • Thank you I called the school (University of Illinois) and they told me that usually students just have a slight understanding of the language and that I should just learn as much as I can before I get to school. Thank you for your advice.
    – Matt
    Dec 23, 2011 at 19:27
  • Great. Try to also get acquainted with Linux command-line if you can; such knowledge usually comes in handy in University environments. It is better to be the one who shows to other people in the computer lab how things are done, than to be the guy who is always asking others.
    – Mike Nakis
    Dec 24, 2011 at 1:29
4
votes

If you have to question whether you should learn a programming language in the first place, ask yourself if its really what you want to do. Most computer science first years are already pretty damn good at programming before they even start so you will be competing against those types that naturally tend toward the geek. Either jump into it head first or do something else you love. Don't be on the fence. Love what you do. I don't need or want a vote for this one, just want to talk straight to you.

2
  • 1
    I would amend that to say "most SUCCESSFUL computer science students, in their first year." When I was in college (and later in grad school) there were an alarming number of CS students who didn't know the first thing about using computers, but they just heard that CS was where all the money was. Most of them changed majors, after getting very annoyed at the instructors not telling them what to type.
    – fluffy
    Dec 24, 2011 at 10:13
  • I was one of those noobs and became very successful. However, I had to really try so hard to make it with those geek jocks starting from nothing. If I wasn't in a situation where I had to make money for my kid, I would not have pushed myself so hard. I did end up loving it as I understood it more. Dec 24, 2011 at 16:05
3
votes

I don't think you need to learn it before you attend college. However I believe like most things in life, if you are pre-prepared before attending some event etc then you are most likely to better able to make informed decisions about what information to absorb and what information to discard.

More specifically by at least dipping your toes, you may be able to listen to what your lecturers are saying rather than just copying what they say verbatim but not actually absorbing the concepts they are trying to get across, which in my opinion is the most important part of university (not the actually learning syntax part of a language etc).

As for what programming language to learn. Probably doesn't matter but might be useful to start reading up on the ones you are likely to cover in your first year.

However, the flip side of pre-learning is that when you get to your first few months you might find the lectures boring and elementary. This then could lead you not attending classes or discarding what the lecturers are trying to get across hence missing some vital piece of information such as realising the way you actually learnt something is not the right way i.e. you learnt a bad habit prior to attending college.

By already delving on these types of sites you are probably already part of the way there to being one step ahead and so help your learning during college. Either way, what you pre-learn will probably just be the tip of the iceberg. You will need to carry on this learning curve in and out of college material if you want to carry on the benefits it may provide.

2
votes

Yes, but don't start with the most complicated language, there will be plenty of time for that later.

Start with something simple to get your feet wet. It's much easier to wrap your head around programming concepts when you're not being burdened by the language itself. Likewise, some languages do things better than others.

Learn Python for dynamic programming, simple object oriented programming techniques, and proper indentation. Learn javascript + JQuery or Lua to learn about closures. Learn Java or C# to learn about static typing. Learn regular expressions for string parsing. And learn a little SQL since every programmer has to touch a database at some point. Then Learn PHP so you can identify spaghetti code.

This list may vary, but basically pick a few fun languages and use them to learn concepts. Subsequently, you'll be learning to be adaptive, rather than stagnating on one language for the rest of your life and angrily trying to defend it on the internet all the time.

1
vote

I'm going to say that I don't think it will matter too much which language you know when you start, but it will probably give you an advantage in the sense that when you get your first programming assignment, you don't have to struggle with the problem of thinking in terms of code - you will already have some experience there. One less learning curve to overcome is a good thing. Bonus if you learn the language they teach in your first year, but not necessary.

1
vote

You won't know whether Computer Engineering is really the appropriate degree program for you until you at least find out how hard or easy it is you find programming to be, as well as how good you are at it. The only way to really know is to try and learn at least one programming language and do lots of coding, ASAP.

1
vote

Some things you might be interested in learning before going to University (choose among them):

  1. Some more math (I cannot be more specific, because I'm French, and have no idea of the math skills you are expected to have).
  2. Some other programming languages, like Ocaml, Scheme, Haskell, Lua ... They will open your mind to new ways of thinking.
  3. Some algorithmics book
  4. Better English & written skills (and a foreign language is never bad)
  5. Using and coding under GNU/Linux, and free software in general. The ability to study free software (and contribute to it) will learn you a big lot.
  6. Work autonomy, being able to define yourself a work plan, and stick to it
  7. The SICP

I won't recommend focusing in a narrow way on C++; other languages, books, skills will bring you much more. Don't spend all your efforts on C++.

Enjoy your learning.

1
vote

Honestly, if you have time go for it. IT will make more sense while the teacher is teaching. You will get most out of it than the students who have never programmed.

1
vote

Definitely! If you haven't programmed before, learning C++ or C or Java or C# will get you started off right. All of those languages are Algol based (roughly) - once you've learned one of them, learn Lisp or Haskell. The terrific paradigm shift between the two families will aid you no matter what your courses entail.

0
votes

Personally I would recommend it. This won't apply to all schools, but I went to what is considered a very good engineering school and the introductory programming classes were awful. Knowing the basics will help you avoid many of the bad practices/incorrect knowledge that might be taught to you. And as another answer mentioned, you'll coast through those easy intro-to-programming classes while others struggle. And if you're like me, that gives you more opportunities to help your friends who are struggling with it themselves.

0
votes

I think you should. Besides the reasons given by others here, I would add that a lot of university professors are not very good at teaching and therefore you cannot rely on them to teach what you are learning very well. You'll understand what they are saying a lot better if you already have a grasp of the basics.

Plus, the ratio of course material to class time is often too high in universities, so even when the professor is a decent teacher, he cannot teach you effectively in the class time available. So any knowledge you gain in advance will help you keep up with the fast pace of the classroom.

IMO C++ is one of the worst languages for beginners. Go ahead and study C++ if you don't find it too difficult, but other languages such as C#, VB, Ruby, or Python are quite a bit easier.

0
votes

It would be a very smart move to know some language before entering college. College instruction in Computer Science is often of a dismal quality, given by TAs who are untrained or who don't speak English. Introductory courses are not a priority and poor instruction is the rule. Universities make money off of grant overhead; getting grants is the priority of most college faculty, not teaching undergraduates. This is a sad rule with few exceptions.

However, the quality of programs in high schools can be poor too. Many school administrations think training in using Micosoft Word is computer science. Ah, the nonsense that eminates from the ed schools!

I wish I could be more optimistic. If you have a good compsci program in your high school, latch onto it. Go beyond the bounds and be aggressive about learning. If you are fairly enterprising, it's not hard to teach yourself Python and to get some skill at it. Once you learn it, learning other languages is not to hard. Python's simple grammar makes learning it relatively easy.

0
votes

Yes.

Which one you should learn depends on what "Computer Engineering" means. It's a pretty non-standard term. Where I studied, it was a combination of electronics and computer science.

If you expect to be primarily working with computer hardware, I would suggest learning C and Forth. If you are primarily going to be doing what I would consider "computer science", I would suggest learning something like Python or Smalltalk in order to try out "real work", and a functional programming language of your choice (I would suggest some variant of lisp or scheme, but choose what's easiest and coolest).

0
votes

I'll share my own experience.

I started programming about 10-11 months ago. My first real exposure to it was with PHP, but afterwards, I found myself learning C# in an introductory course (CS 140) at my local community college. After I learned the basics, I pretty much flew with it and haven't stopped since. After C#, I decided to start learning the lower level mechanics of how computers worked. I'm working on an application which is supposed to be multi-platform, and is supposed to help video game engines to interact with each other (similar to SDL, but possibly more lower level than that, with a strict focus on GUI, mathematics, and other helper functions).

Basically, if it wasn't for that class, I wouldn't have found what I loved until much, much later. You don't really know that you enjoy programming until you really understand the concepts behind it. If you want to find out, I'd recommend picking up an intro to programming book and start with C/C++ since you need to understand what you're doing, rather than using a language which will hold your hand like Java or C# or just some scripting language - mind you, these have their place and are good tools to use, but it's also very imperative that you understand the lower-level concepts in the beginning. This was a mistake I made in the beginning.

After that, keep programming if you enjoy it. If not, learn something else. Whatever it is you decide to do, you should be spending as much time as you can on it before you attend some 2-4 year university to learn it, as it will REALLY keep you ahead of the game. It will also show motivation to any employer who potentially could hire you.

I can tell you that computer science/electrical engineering disciplines are by far the fastest in terms of their evolution rates (which keep increasing year-by-year), and you're going to have to keep learning new technologies to keep up with what's the latest and greatest (which you should find at least somewhat interesting, though it really depends on what area of expertise you're specializing in. For example, I hate web programming, and I'm not interested at all in the technologies that exist for it, but some people really enjoy it and ARE interested in it). Despite this, C/C++ are great languages to learn as, while many other languages (e.g. C#, Java), have their own prebuilt APIs to "make life easier", you're not going to learn a damn thing about what's really happening under the hood until you "roll with the hard knocks" (this may or may not include learning assembly at some point - it really depends on what you're going to be doing). In other words, the more you learn about operating systems and lower level architecture on your own ,the more valuable you are as a programmer. This includes learning concepts such as Linked Lists, or Binary Search Trees and various other algorithms.

Basically, I've been programming for 10-11 months and I haven't attended any university one bit. I've taken a C# class at a community college (my first programming class, which taught me the fundamentals), and at least 95% of the rest I've learned on my own. This is because, after taking that class, I knew I wanted to be a programmer. You'll know it once you come to understand it. Either path you choose, you should be studying it independently if you really want to be successful at it, because it increases your aptitude for motivation and commitment. A programmer has to be motivated to succeed. They deal with a lot, more than just simply "writing code". An application constantly has to be tested, debugged, and understood from the ground up. Typically, whether small or large, you're almost going to be learning something new for every project you undertake. This is a good thing, because you need to keep that brain active.

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