About a week ago, I wrote an article on keeping students interested in computer science. After that article was published, there was a record breaking amount of feedback concerning it. The general consensus was that there is indeed a huge problem with students losing interest in computer science. Today, I’d like to talk about how students can instill that interest into themselves.
Computer Science is a difficult subject. There’s no two ways about it. This means that it’s not for everyone, but that’s no different than anything else. The best part about computer science is that there’s always more than one way to solve a problem, and for a lot of people I’ve met/talked to, this is a huge reason of why they love programming. This brings about one of the great facts of computer science: there’re literally millions of pages out there with information related to teaching yourself.
If you ever find yourself bored with what you’re doing in class (if that’s the case), go ahead, jump into a new topic (or another language even). Really, if you find yourself bored all the time in class, and don’t do anything about it, you may find yourself thinking that you don’t want to do anything computer science related due to dull experiences.
That being said, if you really want to enjoy Computer Science, Challenge Yourself. Really, it’s the best possible favour you could do for yourself. Sitting back and playing video games in a programming class is going to make it really hard for you to excel. In fact, most people you ask will tell you that they have learned far more material in their own initiative, than not.
The best way to challenge yourself in Computer Science is to enter some coding competitions. There are several floating out there in cyberspace. The first ones that come to mind are TopCoder, Project Euler, and the upcoming school competition DWITE hosted by our very own CompSci.ca.
So go ahead, jump into a new language, concept or contest and challenge yourself, enjoy computer science, and keep yourself interested!
even better than a coding comp is creating applications that you find useful to yourself.
my blog is put together entirely of:
- perl scripts parsing HTML, wordpress XML or Excel spreadsheets
- Yahoo Pipes and Dapper webpage scraper
- web API mash-ups (I use del.icio.us for all kinds of things)
- Greasemonkey javascripts
Reply to comment
I agree, you are really limiting yourself if you stick to what is taught at your school. The programming course at my school teaches either Java or Visual Basic (an obsolete, pre .net version), and I’m pretty sure it doesn’t go beyond basic syntax. My understanding is that Ontario schools are a bit better, but it never hurts to learn more independently.
I started coding in Elementary school, so needless to say I was totally motivated by my own interest and this forced me to learn on my own. The ability to look things up and teach myself is very valuable.
Reply to comment
@engtech – absolutely! For me, it’s a blast to put together little scripts that I use in everyday activities. Just analyzing stats, or even random data. It keeps things interesting, and gives a perspective on applicable, real world applications!
@Paul – Ontario high schools are pretty big on the use of Turing (very similar to Pascal). Though yes, it seems that often enough they just switch languages every year, and go over the same basics in different syntax. Programming should be about concepts, and knowing what a for loop does, not how to write the same for loop in 3 different languages.
Reply to comment
@Tony – “Programming should be about concepts, and knowing what a for loop does, not how to write the same for loop in 3 different languages.” – exactly. Knowing the concepts of programming is more important than knowing any particular language.
Reply to comment
Are the authors of the blog CS students? Just curious.
I feel that learning a new language should not be any challenge to a CS student. I just finished a concurrency final, and in the class we learned the theory behind all concurrency, not for any specific language. At the end we spent 10 minutes going through all the languages and how much concurrency support they had. For example we learned all types of monitors possible in any language, from now on when we use monitors all we need to know is what type it is and we know how to properly use it. The idea is that CS students learn the theory/ideas behind programming and computations rather than programming itself, so that our education will never be obsolete, and that we can learn specifics by ourselves and fully understand it.
I feel that a good way for CS students to keep interested is to go ahead and check out the ideas behind later topics, algorithms, computation theory, distributed systems, networks, human-computer interaction, there’s tons to learn. I think that that approach is more appropriate of a challenge to computer science students than learning a new language.
Let me know if you agree/disagree. If you guys are in CS @UW, what term are you guys in?
Reply to comment
@Andrew – I’m in the process of changing my major from Mechatronics to CS at UW. Lets say that I’m somewhere in the 2nd year. Clayton (this article’s author) is still in high school, and will most likely start attending UW next year.
You are absolutely right that concepts should be taught language independent. What I loved about my Data Structures class is that while the language was picked to be C, all the lectures were taught syntax independent – the actual implementation was left up to the students to figure out.
Unfortunately, I don’t think that high school students would have such level of attention span available, to sit through pure theory. A lot seem to have problems with simply typing out the example code as it is.
Reply to comment
Thanks for the reply Tony.
I’m glad you chose CS. We need more people in the program who love both the math and programming aspects, which it sounds like you do. The great thing about CS is that it’s usually not just pure theory, they teach you the theory and you get to apply it during the assignments, many times by programming as well. Although, there are a few classes that do teach specific language stuff, but they’re necessary and important for jobs .
Each term of the program I find more and more stuff I like. Hope you have a great time in the program as well.
Great job with this blog, best of luck with finals.
Reply to comment
You’re being fairly broad there Tony
But in general, I would have to agree that yes, very few high school CS students want to sit through a full lecture of theory. Many of my classmates can’t stand being at a desk for 5 minutes to review stacks and queues before they can jump on the computer.
Reply to comment
Sorry for being off topic, but Tony, what’s with the link to “Cement Industry Environment Consortium”?
Reply to comment
thx Andrew, I’m sure that I’ll find myself much better off in CS. One thing I didn’t like in Engineering is that it was all theory, and I wasn’t getting to do anything practical until the 4th year that allowed for technical electives.
@Clayton – yeah, I’m fairly broad in there. There are always exceptions. I already told you to skip grade 12 and go straight to UW
@Paul – you could address such off topic questions through my contact form, but since you’ve asked anyways, I’ll let you know – it’s a sponsored link, it helps to pay for the expenses around here.
Reply to comment
I started writing a comment and about 45 minutes later I realized that it had turned into a post on it’s own. And it was off-topic. You can read it here:
http://wolfbyte-net.blogspot.com/2007/04/broaden-your-horizons.html
It’s basically a call to action. I agree that people studying CS should do whatever they can to broaden their horizons, but I also think that people who work in the industry need to do that as well. I’ve seen too many Java “Lifers”
I’m not picking on Java I just didn’t want to start a holy war bewteen C# and VB.NET. I’ve seen and heard too much of that crud this week.
Reply to comment
That actually turned into a good post Mike, well done!
Reply to comment
You are pointing here to a very important point Tony. I’m not a student anymore, but when I was. My first year was a declining GPA until my parents lost all faith in my graduation. 2nd year I had my first programming course, C Language. From that moment, I was inspired and loved the subject. I started becoming a nerd, and what they call curve breaker. I didn’t care about the grades as much as I cared about challenging my self to the limit, and challenging other more brilliant students, see how I can learn from them. I ended up the only one from my department graduating in 4 years.
A friend of mine told me later, Bashar we used to laugh at you how you go after learning the topics you like (computer) and we were concerned about our GPAs. Good luck for us now, you did the right thing. At work these days, I’ve lost interest because of the work environment, and sadly, this is killing all innovation. I’m trying to find some where else for a fresh start.
Reply to comment
@Bashar – I should point out that this particular article was written by Clayton. Perhaps I should update the layout to make his posts more obvious..
Though absolutely, you’ve got to do what you love.
That’s too bad about the lack of innovation in your work environment. Good luck with finding a new place where you can enjoy yourself and what you do!
Reply to comment
Well apology Clayton. It’s with my eyes not your interface
I jumped to the conclusion it’s Tony’s posts.
Reply to comment
That’s quite alright Bashar, just don’t let it happen again
Reply to comment