// you’re reading...

Education

On entering the Computer Science field with no programming background

A question was asked:

I’m about to enter into a computer science degree in college. I know absolutely no programming. Is this bad?

It’s a fair question – one can be interested in computers, or technology, or making video games, or simply solving problems. Though not everybody might have an opportunity to pick up on a solid computer programming foundation prior to entering a University. It could be for a number of reasons, but a common theme is that high schools are cutting back on the computer science classes. Though that shouldn’t be a problem.

a computer lab

Lets be honest, a student with no programming background is at a disadvantage and must play catchup. Though this is actually a common enough situation that many Universities will assist. The first year classes will often be available in regular and no-or-little experience flavours, designed to get all the students to the same level by the second year. It’s a good idea to check with the individual Universities to see what kind of CS101 classes they offer, before sending in your applications.

Now for a 5 point strategy plan:

  1. Don’t be discouraged: high schools cover the absolute basics, if at all. The advanced students are those who practise on their own; an average student is often not that far off from not taking those classes at all!
  2. Pick the right program: there are many types of computer science degrees. Take a look at what’s available, and choose something that best matches your interests and strengths. It is much easier to catch up in a subject that is more enjoyable.
  3. Make sure this is it: there could be some misconceptions about certain programs, especially around “video game” degrees. Do some more research to know exactly what the program offers.
  4. Practise, practise, practise! If you have time before the University begins, pick up a decent introductory programming language and join some student programming community. Try to follow the tutorials, ask questions, write something. Anything.
  5. Keep yourself motivated: it’s easy to loose focus, but those that stay interested are the ones that succeed at the end.

There isn’t much to it. Staying on top of lectures and doing some extra coding after labs can easily propel one to the top of the class. All it takes is some interest and effort.

  • Bonus points: If you haven’t done so already, subscribe to this blog via email or a RSS feed to stay up to date with more Computer Science awesomeness.

Read more

Discussion

  1. Posted by Alex | September 6, 2007, 8:19 am

    Conceptually you’re right, but that’s not the reality of the situation.

    At least in the states, the majority of people going in to a computer science field don’t have any background in it. The ones that do know programming or engineering at the start of the program are in a vast minority. I know, I was one of them. I ended up leaving school to work because it was all review. There was not a course I could take related to my major that I wasn’t already overqualified for. I’m talking up to the 300 and 400 level courses here.

    I can’t speak for all the universities, but I have personal experience with three that were very similar. Maybe we’re really lacking in the states and a good CS program is hard to find, that wouldn’t surprise me. None of the truly excellent programmers or computer engineers I know got their skills and knowledge from their university time. It almost seems like the schools are giving lip service to the industry, while catering the lowest common denominators.

    Reply to comment

  2. Posted by Montoya | September 6, 2007, 11:33 am

    I just want to say that I chose not to study computer science and opted for electrical engineering instead because I had no programming experience when I entered college. Worst idea ever. If you want to learn computer science you can do it, regardless of how much “catch up” you have to play. 4 years of college is more than enough time to learn it and you’ll only regret it if you don’t. My recommendation: dive right in and learn as much as you can in that first year. Don’t let a supposed “disadvantage” stop you from doing what you want!

    Reply to comment

  3. Posted by Tony | September 6, 2007, 3:14 pm

    @Alex – if the majority lacks in programming background, then it should just be easier for an average student to enter the computer science field.

    Now, starting out overqualified for 300/400 level courses should not at all by typical, and you are right – remarkable programmers and engineers have achieved their levels outside of school time. Still though, for those just starting out with little background, a University could be a great motivational tool and a source of a learning structure to follow.

    @Montoya – fantastic advice!

    I similarly started out in engineering (mechatronics). I was bored with high school computer science and thought I’d get to do something much more challenging. There were all those buzz words – Engineering!, Robotics!, etc. Though no, there was none of that. Engineering programming is way too simplified, so I’ve changed majors.

    Reply to comment

  4. Posted by Adam McKerlie | September 6, 2007, 5:08 pm

    Here are my thoughts on the matter.

    You don’t need any knowledge in programming to do well in a Computer Science degree. All you need is a will to program. Now I went into my degree with a little background in programming languages (QBasic, VB). So when I had to learn C it wasn’t that huge of a step. If you had no knowledge you would just have to put in a lot of work.

    My advice for people that don’t know any programming languages, and are taking a CompSci degree would be to go to the prof and tell them you don’t have any knowledge. The prof will be very understanding and will help you with any questions.

    Also if you want to go into Video Game Programming go to college. A university degree would be way to much overkill (you learn all the aspects of computer science, from hardware to languages to algorithms). College would be best.

    Reply to comment

  5. Posted by Tony | September 7, 2007, 12:59 am

    Adam – thank you for your input!

    It’s a good point – it’s much easier to pick up a new programming language once you already know one. I’d like to add that for those with absolutely no programming background, math should be the starting point. Computer code is just an expression of math, logic, and problem solving.

    Reply to comment

  6. Posted by Okapi | September 7, 2007, 1:00 am

    Hi,

    this was actually my question the the CompSci.ca forums so thank you very much for answering.

    I live in Ireland and here we don’t have any computer science classes in our “high school” period. I know that the UK does have computer science classes and I’m not sure about the States or Canada. I assume so.

    This means I got no formal chance at learning any programming through my education system. This seems unfortunate but thanks to you I am more confident about entering my course. I picked computer science for many reasons. I have read your previous blog topics and they really helped my decision.

    As a person going into college with no experience of the subject, I will let you know how I get on!

    Thanks again!

    Reply to comment

  7. Posted by Tony | September 7, 2007, 1:18 am

    Okapi – thank you for posting the question. I would have linked to the original post, but it’s not in a publicly accessible area of the forums.

    It looks like you’re already taking a lot of the right steps – you’re getting involved with the community and asking questions! Though definitely stay in touch and let us know about your experiences – it’s an interesting perspective to hear about, and I’m sure that there are other students who would like to hear about this.

    Reply to comment

  8. Posted by wtd | September 7, 2007, 11:01 am

    One of the most important things to remember is to keep ego in check. The road to success is, for better or worse, paved with failure. If you’re smart, you’ll write lots of code, and post it frequently for review.

    The more experienced members of compsci.ca will likely tell you it’s wrong. We might be gentle, or we might exaggerate and tell you it’s simply horrifying. Rest assured, we mean to help, and will offer constructive advice along with our potentially scathing criticism. I got my start by paying attention to those who obviously have programming skills, even when they lacked social graces.

    In summary: write lots of code, and don’t be afraid to be wrong. As long as you recognize that one approach is bad, you’re that much closer to finding a good approach.

    Reply to comment

  9. Posted by Bashar | September 7, 2007, 11:14 am

    Very nice topic. I fall into the category of people who knew nothing about programming, but wanted nothing else than programming and was motivated to learn. Sadly, I hardly started on my own before my first programming course. After my second, I started going open and free my self. Never regret my choice.

    It is also a very common mistake, people make their future career based on their high school GPA.

    A: What are you going to study?
    B: I got 4.0 GPA so I think I will go with Medicine college!

    Also, in my first programming course, I remember I looked around me. Specially staring at girls, and I really mean no offense. I asked my self: “Are these girls really the kind of geeks who like to spend hours on PC, want to program and develop computer skills?”

    Turns out the answer was NO for most of them. Even the most brilliant of students wanted a job that has no interaction with the PC eventually! I wasn’t A type of student, but in computer courses hardly any girl could match with boys. It’s really sad I felt. and I am grateful I got into something I like.

    About high school brief introduction. We have none of those things. Another problem that makes people completely make blind decisions about their college choice. See how lucky I was? Thanks to video games.

    Reply to comment

  10. Posted by Tony | September 7, 2007, 1:19 pm

    wtd is absolutely right – submit your code for peer review. It could appear harsh at the beginning, but it’s an excellent way to see what you are doing wrong, right, different, and learn for the better.

    On a similar note – read other people’s code as well. Try to figure it all out. This is another great learning tool.

    @Bashar – I don’t know if it’s a fair comparison. Between best girl students and best guy students, there are simply more guys in the computer science class to begin with. Still though, I’m sure that there are some girls who can code better than some boys.

    Andreas Zwinkau has been recently blogging about distinguished females in computer science

    Reply to comment

  11. Posted by wtd | September 7, 2007, 1:25 pm

    Just keep this in mind: when you become a seasoned veteran computer science guru, you’ll get to obnoxiously tell enthusiastic new students that their code is garbage. ;)

    Reply to comment

  12. Posted by Bashar | September 8, 2007, 3:14 am

    Tony: In western country, yeah I was surprised to see geeks. But again, I only studied in Kuwait. Female are equal or more, and male are mostly better. At least in programming :)

    Reply to comment

  13. Posted by Clement | September 10, 2007, 7:40 am

    I agree that a student with no programming background joining a computer scinece program is at a disadvantage and must play catchup. But let me also point out that if the student is intelligent and that he is highly motivated, there is no problem, he will make it easily. In Africa, students enter the computer science program without any experience at all but some of them end up passing their BSc degrees with cum laude.To prove that these qualifications are not a fluke, they proceed from there to enrol for MSc and PhD degree at top American or British Universities where they successfully complete their studies with a huge list of top notch publications. So to cut the long story short, the student just needs to be intelligent and highly motivated.

    Reply to comment

  14. Posted by Chino yray | September 11, 2007, 9:50 am

    I entered my University already with computer programming knowledge, however, schools nowadays teach you from scratch (well, here in the Philippines)

    Reply to comment

  15. Posted by Oli | September 26, 2007, 12:24 pm

    Hi i have a big problem in my life, i’v been offered to diffrent routes in my life.

    1. I can go do a computer science degree for the next 3 years
    Or
    2. I’v been offered an internhip in india for a c computer based company, but the pay starts off really low.

    I also wanted to know what kinda jobs do you get with a computer science degree?

    Please help somebody i have 3days to decide! :(

    Reply to comment

  16. Posted by Tony | September 26, 2007, 1:32 pm

    Oli, it’s quite a big, and personal decision – you have to make it on your own. Though there are a few questions that you can ask yourself

    • How important is it to get a job right now?
    • How important is it to get proper education?
    • What opportunities will the internship give you? In terms of promotions, pay increase, etc.
    • What opportunities will a Computer Science degree open up?

    It’s a balance between what you can do right now, and what you can do in 3, 5, 10 years from now.

    Reply to comment

  17. Posted by wtd | September 27, 2007, 4:00 am

    Please keep in mind that there’s nothing stopping you from getting a “real” job now, then later going to school for a degree. Many find that when going back to school later in life, they are more focused and get more out of the experience than their just-out-of-high-school peers.

    Reply to comment

  18. Posted by Mark | October 16, 2007, 4:26 pm

    Hi.
    I know I just posted this on another forum, but this one seems more appropriate.

    I’m 14 and have no programming knowledge. My preferable gaming company is Square, but I probably won’t get that so soon in my life.

    If there is anywhere i can start programming with downloads, etc, then any help would be appreciated.

    Reply to comment

  19. Posted by Tony | October 16, 2007, 5:32 pm

    Mark – if you are interested, it might be a good idea to pick up a decent book, join a community of peers, and follow along.

    Reply to comment

  20. Posted by Mark | October 16, 2007, 5:43 pm

    Any book you could recommend?

    Reply to comment

  21. Posted by Tony | October 16, 2007, 5:47 pm

    That would obviously depend on what you’re looking for. If you want to start out with Ruby, then Why’s (Poignant) Guide to Ruby is a very good start. It’s online and free too!

    Reply to comment

  22. Posted by Mark | October 16, 2007, 6:00 pm

    Thanks! I’ll try that out now.

    Reply to comment

  23. Posted by Okapi | November 29, 2007, 8:08 pm

    Well, I have come back to update my progress. I am now 2 months into college and we are learning Java. (Do I see some people shuddering?). I like it although it can be confusing. We haven’t covered some theory in detail yet such as strings and arrays but the class seems good. It is going at a slow pace but the work enables us to work ahead if we wish to.

    Reply to comment

  24. Posted by Tony | December 3, 2007, 3:24 am

    Okapi,
    thx for checking in with an update! It’s great to know that there are classes that are slow enough to allow new students to the subject to keep up, yet be structured in such a way to allow one to work ahead. I’m glad it’s working out for you so far, keep it up!

    Reply to comment

  25. Posted by Dave | January 21, 2008, 6:34 pm

    Of course, I’m far too late to answer Oli’s question but in case anyone else is in a similar situation, here’s what I did:

    I started Comp Sci and did a year and a half, then I left and got a job doing Tech Support and System Administration at a small company. That progressed to a job doing some contract PHP work at a smaller company with a much larger web presence and then a full time Sysadmin job at an enormous company that owns it’s own data network. I have come a long way without a degree and it doesn’t appear to have held me back at all. About half of my colleagues have degrees.

    I learned a great deal from the classes I did at University and I fully intend on going back to finish my degree however the lessons I have learned while working in the field have prepared me for the second half of my degree better than the first half of it ever could.

    While at University, I witnessed a fellow student starting a degree after twenty years in the business (the business and degree were both Graphic Design) and he sailed through it. He scored 100% on nearly every assignment. I’m sure he would have learned something from the work involved and I’m sure the degree will be useful to him but a degree is onnly challenging to those who don’t already know how to do the work. Learning how to do Comp Sci while being paid to learn is much better in my opinion than having to pay to learn. You could even work part-time and do your degree part-time.

    Reply to comment

  26. Posted by Helga | April 4, 2008, 8:46 am

    I am mainly a senior software developer/Architect/Manager but I have occasionally lectured at the university level and sat on various boards for a few universities.

    My experience (of employees and students) is that too much programming experience before you enter the Computer Science study can actually be bad. It seems that if you have spent your teenage years hacking along you tend to know 1-3 programming languages very well but you have little knowledge of other parts of computer science (system theory, algorithms, compilers, software engineering and so on). However you *think* you know it all and spend little effort on the studies. These students also tended to only finish the “fun” bits and never actually spent the time needed on the details/hard to find bugs/trivialities.

    This is usually exaggerated by the (mostly unfounded) respect from other students who may have limited experience, but tend to put some effort into their study.

    I have similar experience of these guys (because they are almost always guys) in the workforce. The tend to overestimate their (programming) skills but have weak theoretical background.

    That may be fine for a lot of jobs out there – but it is not the same as being a computer scientist.

    Maybe universities should lessen focus on “common” programming languages and instead offer supplementary courses in the programming languages du jour for those that don’t have any programming experience. Instead they should increase the focus on core Computer Science topics (such as algorithms and system theory for pure computer science) or the core topic in their genre for more specialized programs.

    Reply to comment

  27. Posted by Chris | July 31, 2008, 1:08 am

    Ok, I’ve decided I want to live my days in the field of computer science. With my 3.1 GPA I’m just good enough not to get a scholorship, so after college I’m going to be 40-50K in debt! There are so many ways I can teach myself. Should I get into debt and take advantage of a formal edu.? Or can I just drop a few dollars at barnes and noble and teach myself?

    Reply to comment

  28. Posted by Andrew | October 15, 2008, 5:21 pm

    It’s bad. I can’t imagine that you spent your high school time without doing any computer programming. Unbelievable.

    Reply to comment

  29. Posted by Brad Freeman | April 19, 2009, 8:13 pm

    I’m learning to program from basically ground zero. I may pursue a degree, but probably not. Thank God, for the open source community providing so many resources to learn for nothing. Why not take some online tutorials and get you feet wet reading and writing code?

    Reply to comment

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>