Advertisement

Computer Science at University

Started by February 24, 2011 02:08 AM
17 comments, last by Prefect 13 years, 6 months ago
In a few months I will be leaving for university to study Computer Science (provided I get the grades). I am really looking forward to it but I have a few concerns.

All the courses I have looked at only teach Java. I would like to eventually end up in system programming and I'm under the impression that Java isn't the optimal language for this and thus I'd need to be proficient in other languages (please no Java vs. C/C++ wars). When I went to visit the universities and had a chance to speak to the lecturers they all said that the universities don't include other languages on their course but I will still be able to access system programming via a Computer Science degree. So I'm just curious; if university isn't providing me with the skills required to enter my chosen field, where will I pick them up?

My understanding is that they focus on the skills of programming and problem solving instead of trying to teach us as many different languages as possible and they use Java simply as the tool to do that. I've always seen universities as these mystical outlets of knowledge and thought that's where people become gurus in their chosen topics but now I'm curious as to how people become gurus in other topics such as C/C++ , Assembly or the ins and outs of a compiler when these said outlets do not direct you that. Do you pick them up at university through other means? (Optional lectures? Clubs? Peers?) When you start working? or do people just read a lot of books on the topics and other resources?

I guess I'm still young and n[font="sans-serif"]aïve looking to the more experienced people who have already been through the process for some answers. :)[/font]

So I'm just curious; if university isn't providing me with the skills required to enter my chosen field, where will I pick them up?
No one comes out of university having been given the skills the required in their field. You've got to go out of your way to teach yourself extracurricular knowledge if that's what you want.

University is a place where you learn how to learn things. Most of your university learning won't come from taking notes while listening to a knowledgable professor - most of your learning will have to be self-directed (if you want to come out with the skills you require).

You don't come out of university as a guru - guru status comes through extensive practical experience, not theorycrafting.


So to address your particular concern - get yourself a "Systems programming in C" book ;)
Advertisement
When I went to visit the universities and had a chance to speak to the lecturers they all said that the universities don't include other languages on their course but I will still be able to access system programming via a Computer Science degree.


Which universities are we talking about here? That isn't the case where I'm at (UBC). Sure, the first programming courses were in Java for me, but CS majors at my university were introduced to C and C++ in second year, and there are courses that teach Prolog and Haskell. The CS department is also starting to replace Java with Racket as a first-year teaching language. As far as I can tell, though, Java is the preferred default language.
Java is used for the first year classes at my university, and a few second year classes are mostly done in Java. After that it tends to be up to the student to use whatever tools are suitable to the project.

Of course, many students tend to stick with Java when given the choice, simply because it is what they are the most familiar with, but other students put in the effort to build their skills in other areas.

Remember, the goal of your professors is, for the most part, to expose you to the theories and ideas of their field. It is up to you to learn them, and learn how to apply them, and your professors are then there to help guide you in the right direction.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.

So I'm just curious; if university isn't providing me with the skills required to enter my chosen field, where will I pick them up?

You have to teach yourself. Even after you graduate, you still have to keep constantly improving your skills. Learning new languages and APIs, depending on market demand.


My understanding is that they focus on the skills of programming and problem solving instead of trying to teach us as many different languages as possible and they use Java simply as the tool to do that.
[/quote]
True, but I think they are doing the right thing. Programming languages should be used as tools to solve problems and accomplish tasks. Programming languages can evolve overtime, new languages born, old languages become obsolete or updated. Teaching as many of them as possible won't get you far in your career. Jobs require depth not breadth, and people want to see what you can do with your tools, rather than the tool itself. You could self-proclaim yourself as the C++ expert, and know all about it, but if you haven't made anything useful with it, what good is your knowledge?


I've always seen universities as these mystical outlets of knowledge and thought that's where people become gurus in their chosen topics but now I'm curious as to how people become gurus in other topics such as C/C++ , Assembly or the ins and outs of a compiler when these said outlets do not direct you that. Do you pick them up at university through other means? (Optional lectures? Clubs? Peers?) When you start working? or do people just read a lot of books on the topics and other resources?[/quote]
I do not know which University you are going to. My university required an electrical engineering course as part of the graduation requirement, in which I learned asm and vhdl. There are also these things they call elective classes as part of the requirement. You get to choose what classes you want to take. I chose AI and graphics, and there were students who chose Perl and Web design.


To summarize, don't rely on an institution like a university to feed you skills necessary for your growth. You have to take the initiative to learn what you want, and make what you want. Consider universities as your side order, your main dish should be your own dream.

When I went to visit the universities and had a chance to speak to the lecturers they all said that the universities don't include other languages on their course but I will still be able to access system programming via a Computer Science degree. So I'm just curious; if university isn't providing me with the skills required to enter my chosen field, where will I pick them up?

Learn on your own time. Most computer languages are very similar. The syntax changes, but they all expose the same underlying logic. Some are more abstracted than others, and each has a domain where it is most useful. But having to learn one for school doesn't mean you shouldn't learn others on your own time.

My understanding is that they focus on the skills of programming and problem solving instead of trying to teach us as many different languages as possible and they use Java simply as the tool to do that.
[/quote]
Sounds like a good approach.

I've always seen universities as these mystical outlets of knowledge and thought that's where people become gurus in their chosen topics but now I'm curious as to how people become gurus in other topics such as C/C++ , Assembly or the ins and outs of a compiler when these said outlets do not direct you that. Do you pick them up at university through other means? (Optional lectures? Clubs? Peers?) When you start working? or do people just read a lot of books on the topics and other resources?[/quote]
School isn't there to spoon feed you. It is there to give you the social connections you need to get at the information you want on your own time. That said, a well rounded CS course should have your building a computer from scratch (we used FPGAs to make an 8-bit computer), build a compiler from scratch (optimizing compiler for the Tiger language onto a Mips processor), and build an OS from scratch (We used Harvard's OS/161). There are always electives to take on topics like Cryptography, Parallel Processing, Graphics and Data Visualization, and databases.
Advertisement
Also, three bits of advice.

1. Try to take at least one non-science class a term, be it arts or business. Don't be scared to fill up your free electives with with non computer science classes, especially early on. (You never know, you might find you really have a passion for 18 century romance novels,... or at least the cute girls who take those classes.) It is better to explore a wide range of options early on to be sure there isn't something you actually like to do more, rather than waiting till you've spent several years going down the wrong track for your life.

2. University is NOT a race or just about the grades. If all you do at university is work your ass off to get the highest grades you can and get the hell out of there after 4 years, then you've cost yourself a lot. If your finances allow it, do not be scared to stretch your first degree over five or six years if you are using the time a more relaxed work load offers to better explore the material, or to explore extra material/work. Taking time off to work, whether on your own, with a company, or as part of a co-op work term, can be worth far more than a full four years at university. (I actually ended up becoming a writer because of 1 and 2. And yes, before anyone points out my often horrible grammar, I do work closely with other people to correct such errors before anything gets published.)

3. Do not take bird courses! If you are only taking the class because you figure it will be an easy grade, then you are wasting your time and money. Taking easy classes isn't a bad thing, but make sure they are of interest to you, and allow you to explore something you might not otherwise have done.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.
I graduated a few months ago, and as mentioned Java might be the first introductory language, but it's not the last. My university uses C# and a mix of application and game programming for the first two classes to make learning fun. After the first two classes they said to use whatever language you want. Often there were restrictions like "if you do the project your language must have access to low level OS file APIs". The OS course was C.

I recommend learning as much as you can. Investigate languages and technologies. For instance, HTML 5 and WebSockets are interesting and NodeJS and all the databases coming out and source control systems. There's so much to research and try out that you'll never see in the classroom.
Yeah, I git the same problem , next year i want to apply to CS course and most of these use Java as language, but my preferred language is C++, because I want to be game programmer, so should I take CS degree or game- specific degree like game development?

Deltron Zero and Automator.

I guess from what the last poster just asked it's not obvious so I'll point it out. Most of what you learn in a CS degree is language agnostic. The professors often don't tell you what language to use. The assignment might say "make a heap sort" or "make a hash table" and pretty much any language can do that give or take. Languages, as has been mentioned hundreds of times on these forums, are tools to be used when they fit the requirements. For instance, you might later on be told to make a GUI application for other employees to insert and retrieve records. Are you going to use C++? Of course not. You're going to use... <_< php. B) But yeah that's the basic idea. Also learning C++ by yourself and doing it on your side projects is a good idea. When applicable use it in your classes. I did all of my file structure assignments in C++ just so I didn't forget it.

This topic is closed to new replies.

Advertisement