LinuxQuestions.org
Download your favorite Linux distribution at LQ ISO.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 06-23-2008, 06:39 PM   #1
finest
LQ Newbie
 
Registered: Aug 2005
Location: Canada
Distribution: Knoppix
Posts: 14

Rep: Reputation: 0
Computer Science


If I wanted to pursue Computer Science, which are the top schools in North America(Canada & United States)?

Really learn something, not waste my time with high level languages.

C, C++, etc..
 
Old 06-23-2008, 07:14 PM   #2
keysorsoze
Member
 
Registered: Apr 2004
Location: Queens, NY
Distribution: Red Hat, Solaris
Posts: 295

Rep: Reputation: 30
What are your thoughts on MIT? One of the finest schools in the US

Last edited by keysorsoze; 06-23-2008 at 07:18 PM.
 
Old 06-23-2008, 07:24 PM   #3
jailbait
Guru
 
Registered: Feb 2003
Location: Blue Ridge Mountain
Distribution: Debian Wheezy, Debian Jessie
Posts: 7,508

Rep: Reputation: 176Reputation: 176
The best in Canada is probably the University of Waterloo.

Why do you think learning high level languages is a waste of time?

------------------
Steve Stites
 
Old 06-23-2008, 09:12 PM   #4
LinuxManMikeC
Member
 
Registered: Nov 2007
Location: Provo, Utah
Distribution: Debian and Ubuntu
Posts: 74

Rep: Reputation: 15
C and C++ are about the lowest high-level languages out there. Its probably safe to say that the majority of operating systems these days are written in one of these two languages (plus a sprinkling of assembler). I refer you to exhibits A and B: the Linux and Unix kernels. :-) Any good computer science program is going to teach you a wide variety of concepts and will likely use much higher-level languages than C and C++ so you can focus on those concepts rather than the gritty details of implementation. I wouldn't be surprised if you ended up using languages like Java and Python in the course of the degree. There will of course be plenty of low-level concepts taught as well. Don't be a language snob. All the currently popular languages have their appropriate uses, otherwise they wouldn't be popular.
 
Old 06-23-2008, 09:47 PM   #5
finest
LQ Newbie
 
Registered: Aug 2005
Location: Canada
Distribution: Knoppix
Posts: 14

Original Poster
Rep: Reputation: 0
I really want to get deep into it, master it, like a chess game, human vs pc type of programming. If "A" happens do this but if "B" happens do this, but if "C" happens do this, and so on; every possible outcome.

A language like python can be easily learned, I've done minimal programming, and from reading code, python is by far the easiest to understand.

University of Waterloo looks very interesting. From living in Canada, moving to the United States would be a big move, might be better. Still going to look around.

From personal experience, can someone say something, instead of saying MIT, yea the guys that count cards. A school they have gone to and really learned something.
 
Old 06-24-2008, 01:56 AM   #6
salasi
Senior Member
 
Registered: Jul 2007
Location: Directly above centre of the earth, UK
Distribution: SuSE, plus some hopping
Posts: 3,896

Rep: Reputation: 774Reputation: 774Reputation: 774Reputation: 774Reputation: 774Reputation: 774Reputation: 774
IMHO, if you choose a good Computer Science course, it will be a course that includes some coverage of all of computer science from top to bottom. The implication is that it will be a course which includes lots of stuff which, as far as I can see, you consider a 'waste of time'.

Are you ready for that?
 
Old 06-24-2008, 02:42 AM   #7
pinniped
Senior Member
 
Registered: May 2008
Location: planet earth
Distribution: Debian
Posts: 1,732

Rep: Reputation: 50
Regardless of where you go, you're the one who has to put in all the work. Having said that, two schools I can think of which do treat the subject matter well (because they tend to talk a lot about the theory and the development of algorithms, not give you a 10-day crash course in C) would be Stanford and MIT. Of course to get into either of those, you're competing against the best. (And then you also need to get past the secretaries in administration - but that's a different story.) I'm sure there are many other universities in North America with excellent computer/math/electronics departments (ooh - University of Illinois at Urbana-Champagne, University of Indiana - the campus where Netscape developed) but I may not know them and probably have never even heard of some of them. For example, the State University of New York is a well-respected institution - but which SUNY campus is best for computing? You have a similar challenge with the University of California system - which campus do you go to - Berkeley? Tough question really; you need a place where lecturers do have a little time to talk to you, a place where people are always looking to do things differently rather than train you to be a robot for industry - and don't forget that no matter what the school's reputation, how well you do is largely up to you, not the school.
 
Old 06-24-2008, 10:39 AM   #8
LinuxManMikeC
Member
 
Registered: Nov 2007
Location: Provo, Utah
Distribution: Debian and Ubuntu
Posts: 74

Rep: Reputation: 15
Quote:
Originally Posted by finest View Post
I really want to get deep into it, master it, like a chess game, human vs pc type of programming. If "A" happens do this but if "B" happens do this, but if "C" happens do this, and so on; every possible outcome.
Goes to show how little you really know about the subject. If/then/else is a common logical construct in all languages, high and low level. Now, wanting to account for a massive number of outcomes could be more efficiently coded using, for example, a tree algorithm. It seems to me that what you really want to get into is AI. Now chess AI is traditionally a more brute force problem. Simply churn through the all the possible endgames for each turn. Well, I shouldn't say "simply". There are a number of software engineering problems to consider, primarily speed and efficiency of the algorithm. If you don't have the computing power you can instead look for the optimum moves for n turns ahead. Beyond such a basic style of AI, there are some pretty amazing developments including neural networks and genetic programming. That said, AI programming is usually done in high-level languages such as C, C++ and LISP.

Quote:
Originally Posted by finest View Post
A language like python can be easily learned, I've done minimal programming, and from reading code, python is by far the easiest to understand.
That's the point my friend. Take an easy to understand language so you don't have to think about all the repetitive minutia of the machine and focus on the concepts of algorithms and data structures. I can guarantee you Deep Blue wasn't programmed in pure machine code. If they did, Kasparov would probably die by the time it was developed enough to beat him. I think you are completely misunderstanding the meaning of high and low level languages. The lowest level is machine code, writing the actual binary sequences that the CPU understands. Slightly above that is Assembler, which gives you mnemonic codes that are easier to remember than binary numbers. High level languages simply refer to the more English or mathematic like languages that come more natural to humans. Higher level languages simply abstract you from the mundane "bean counting" going on inside the chips and allow you to focus on implementing algorithms and data structures. The main reason for moving toward lower level languages for a particular problem is due to the need to control the details in a more efficient or specific manner. For most programming problems C is where this optimization stops. It takes a great deal of time, effort and skill (often more than it's worth) to write better machine code than an well optimized compiler.

I don't mean to discourage you from learning about the low level details. Understanding what's going on inside the CPU is a great help to writing high level code. Also understanding how your compiler or interpreter works to change your high-level instructions to machine code is important to properly and fully leveraging the power of a programming language. Now, if you want something to master, I dare you to master C. It is sometimes even referred to as a "high-level" assembler due to its low level programming abilities. Just because it is "high-level" doesn't mean its easy or less involved. It could easily take a decade to master that language alone.

It was already stated that when choosing a university you should stay away from those that cater to the status quo of businesses. That is key, in my opinion, to choosing where to go. Programming is both an art and a science. When too tightly constrained to budgets and schedules quality will suffer, or even fail outright. To properly study this field you need to learn everything you can, not just what some code factory business would want you to know.
 
Old 06-24-2008, 10:47 AM   #9
JudyL
LQ Newbie
 
Registered: Aug 2007
Location: Florida, USA
Distribution: Ubuntu
Posts: 29

Rep: Reputation: 15
From your writings, you might be more interested in a Computer Engineering course of study instead of Computer Science.

Judy (yes, I'm a CompE not a CompSci)
 
Old 06-24-2008, 09:08 PM   #10
95se
Member
 
Registered: Apr 2002
Location: Windsor, ON, CA
Distribution: Ubuntu
Posts: 740

Rep: Reputation: 32
I went to the University of Windsor and learned a lot, but that doesn't say much. I know people who didn't learn anything. No matter what school you choose, you'll get back exactly how much you put in. If you have the grades, you can try to get into Waterloo. But don't worry too much about the school for your undergrad; you'll learn the most outside your classes (with other students and profs).

My suggestions/what I know now (just graduated w/ a B.Sc., going to grad school in sept).
- Learn to love learning for the sake of learning, not just so you can make some uber-cool program.
- The first few semesters can seem boring if you are already very geeky, but things can get hard fast so don't get lazy.
- Try hard and get good grades starting in the first semester. Its an order of magnitude easier to maintain an A average than to raise a B+ to an A-.
- Your professors are awesome people who love find bright, determined students who show an interest in CS. You'll learn tons of stuff you never could in class from them. If you are interested in grad school, find a prof who does research in an area that interests you, talk to them. They'll be able to give you more work (research) than you can shake a fist at (should be able to get credit for it too).

Last edited by 95se; 06-24-2008 at 09:11 PM.
 
Old 06-24-2008, 09:54 PM   #11
finest
LQ Newbie
 
Registered: Aug 2005
Location: Canada
Distribution: Knoppix
Posts: 14

Original Poster
Rep: Reputation: 0
95se, that's exactly what I wanted to hear. I love to learn, shame there aren't as many people. Your right about people that go just to get a piece of paper and not learn anything. My biggest problem is English marks, being dyslexic sucks for English, but for thinking like nobody else, I love it. Its really hard for people to understand what I see in my brain towards mechanical engineering, computer science, sports and anything 3D dimensional.
 
Old 06-25-2008, 01:23 PM   #12
schneidz
Senior Member
 
Registered: May 2005
Location: boston, usa
Distribution: fc-15/ fc-20-live-usb/ aix
Posts: 3,927

Rep: Reputation: 602Reputation: 602Reputation: 602Reputation: 602Reputation: 602Reputation: 602
i think computer science usually relates to making software (it'll be pretty hard to dodge 3gl's -c,c++,java- or 4gl's -sql- in that feild).

i think you want to concentrate on computer/ hardware engineering. i went thru a electrical and computer engineering program at temple university (competitive but not elite). the subjects were
interfacing and/ or/ not gates (motorola 7400 series) into integrated circuits.
translating machine language (first generation language) and assembly language (2nd generation language) for wdc6502 and m68k processors.
...

you can learn a lot from any competitive school. the elite schools are like mit, cal-tech, cal-berekley, carnigie mellon institute, worcester polytechnic institute, ...

Last edited by schneidz; 06-25-2008 at 01:41 PM.
 
Old 06-25-2008, 05:53 PM   #13
chrism01
Guru
 
Registered: Aug 2004
Location: Sydney
Distribution: Centos 6.5, Centos 5.10
Posts: 16,261

Rep: Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028
If I understand the OP correctly, he's more interested in Comp Sci at the fundamental level, rather than the application of Comp Sci theory. See http://en.wikipedia.org/wiki/Computer_science , and particularly this section: 'Computer science education'
 
Old 06-25-2008, 07:02 PM   #14
pinniped
Senior Member
 
Registered: May 2008
Location: planet earth
Distribution: Debian
Posts: 1,732

Rep: Reputation: 50
"Computer science" vs "Computer engineering"

Names and more names! Some universities have the computer classes in the math department, others in the electrical/electronics engineering department, some have a "computer science" department and some a "computer engineering" department. In just one country, "comp. eng." in 1 school = "comp. sci." in another, and in some schools "comp. sci." = some BS degree in the pseudo-history of computing. I always laugh at those schools that ONLY teach "computer programming" (oh no, here come the VB graduates!) Any decent course in computing introduces you to the hardware at least at a basic level, because that's what you have to deal with. You don't necessarily have to go into the details of how modern pipelines, branch prediction, etc work - so long as you at least know where to look for more information if it interests you. But the important thing is you know the basics - what the machine is, how it works, the theory of programming, and of course a little real programming. If you know all that, then all other programming concepts are absolutely trivial. This is why I laugh at the scools that only teach "programming" - as far as I can tell, they teach nothing but the most trivial concepts with no understanding at all of how things work and why they work.
 
Old 06-25-2008, 07:33 PM   #15
schneidz
Senior Member
 
Registered: May 2005
Location: boston, usa
Distribution: fc-15/ fc-20-live-usb/ aix
Posts: 3,927

Rep: Reputation: 602Reputation: 602Reputation: 602Reputation: 602Reputation: 602Reputation: 602
Quote:
Originally Posted by pinniped View Post
"Computer science" vs "Computer engineering"

Names and more names! Some universities have the computer classes in the math department, others in the electrical/electronics engineering department, some have a "computer science" department and some a "computer engineering" department. In just one country, "comp. eng." in 1 school = "comp. sci." in another, and in some schools "comp. sci." = some BS degree in the pseudo-history of computing...
at my universtiy the computer science and information technology program was in the college of science and technology and electrical and computer engineering was at the college of engineering. those partitions were arbitrary because some of my electives were in the cst building.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Computer Science Book ftenario Programming 4 03-20-2006 12:38 AM
Computer Science Project? i.of.the.storm Programming 2 02-08-2006 11:12 AM
computer science iamstinke Linux - General 3 04-26-2005 11:21 PM
AP Computer Science MBS ssba Programming 1 04-02-2004 03:49 PM
Computer Science Colleges mondaypickle General 5 09-25-2003 03:35 PM


All times are GMT -5. The time now is 04:46 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration