views:

111

answers:

5

Hey everyone,

I've been trying to figure out what computer field I want to go into later on in life. College is just around the corner for me and I've considered looking into Computer Engineering, Software Engineering, etc.

Lately, I've been looking into computer security systems and exploitations of such (purely for educational purposes, on my own property). Unfortunately, it seems to me like 99% of the people out there have no idea what they're talking about. Oftentimes, it's just "run this" or "run that" or "you can find a program that will do all that for you" - no one knows how these programs work or what exactly they do.

I find no fun or interest in using something that someone else created simply to call myself a "hacker" as most people do. In fact, I'm not even interested in hacking systems as much as HOW they do it.

My question all comes down to this.

I want to learn the ins, outs, ups, and downs of computers - everything from abstract concepts such as the internet and data transferral, to hardware. I want to know how computers store data (how the bites are organized, etc.) and what processors, etc. actually do. What is WIFI, really? Do computers communicate with light (something I picked up from a magazine that I read on a plane).

I have multiple years of computer/programming experience, but so much of what I know about computers in general is very broad. Computers send packages of information back and forth between one another, each with a header and content. Computers are composed of multiple components, each with their own function (processor, video card, RAM, hard drive(s), etc.), which I have some basic understanding of already. etc. etc. etc.

There is just so much to a computer and I don't know where to start. I'm sure some of my college classes will clear things up for me, but I'm so curious that I want to start learning as much as I can now.

This question is probably all over the place, so please ask me to clarify when necessary. I'm a little jet lagged at the moment, but I tried to write my thoughts in the quickest, most coherent way possible (I could have completely failed in the process, though).

Thanks in advance for any advice!

Justian Meyer

Please, feel free to edit the tags for this question. The current ones are terrible.

EDIT:

All these comments are making me excited :). So much to learn, so much to explore :).

+2  A: 

Structured Computer Organization, Tanenbaum

It is a great book and explains everything from a transistor to a Java virtual machine.

Sjoerd
$100+ Wow, that's steep for a fun read, but if it really covers that much information, I suppose it's justified? The reviews on Amazon are promising, but other sites show that this is meant to supplement a course on Computer Architecture and can be very vague in some chapters (where class instruction is expected) and overly confusing and unorganized in others (where they expect you to already understand the concept - some complain about jargon).
Justian Meyer
Sjoerd
@Sjoerd: Now that's a lot more do-able. Will I really gain more from the 5th edition as the 4th? The 5th is, of course, more up-to-date.
Justian Meyer
+1  A: 

These two helped me understand how the OS and memory in general works. I believe a lot of things are derived out of these 'simple mechanics.

1.Anatomy of a program in memory

2.Pushing the limits on Windows memory

btrandom
@btrandom: Thanks for the links. Looks interesting, but (I hate to admit) it seems a little over my head at the moment. I'll look into it a little later when I'm a bit more alert.
Justian Meyer
A: 

Since you are deciding where to go exactly, to be in software development or to become expert in hardware and networking, I would like to point out that in my opinion it is two different occupations and they require two different mindsets. Good hardware experts are usually not good programmers and good programmers almost always not experts in hardware and networking. So I would say don't try to embrace both, stick to one direction which is most suitable to your mindset. To pursue two rabbits would result in catching no one.


@Justian I see, sorry I somewhat misunderstood you. Desire to understand intricacies of how code gets processed inside of hardware is a very natural one. When in college I was reading the book "How computer works" - it is fairly simple, even somewhat primitive book about general hardware functionality. But it can get you a broad look on the topic.

Another analogy came to mind. Say linguists research internal mechanics of language, but it is neuroscientists who research on how language signals get processed in brain. Two very different occupations. This is not to discourage you from learning hardware though, this is just to underline difference between two realms.

Anvar
@Anvar: I understand what you're saying completely. Let me clarify a little bit. I'm a stronger software person than hardware, but I feel it would be beneficial to me to learn some hardware concepts on the side. I don't like the feeling I get when I really sit down and think: "I made a program. What did I make exactly?". Abstraction leaves me with a kind of emptiness.
Justian Meyer
"Abstraction leaves me with a kind of emptiness" - I like that :) In time, I've come to enjoy and respect that feeling, though of course, like you, I always want to know what's happening behind the curtain. There will always be another curtain, but by all means, explore.
Dan Bryant
@Anvar (after edit): Understandable. It's likely that I will go into software, but I don't see any harm in doing Computer Engineering in my Undergrad., then moving to a strictly software-based major in my Grad.
Justian Meyer
+1  A: 

Steve Gibson of security now has been doing a series of podcasts on computer basics.

http://www.grc.com/securitynow.htm Episode 233 "Let's Design a Computer (part 1)" up to the most recent one "What We'll Do for Speed".

Every other episode he does listener feedback and those are good to listen to too.

a few times (like right now) they interrupted the series if a important security news item comes up (like when that big SSL thing broke a few months ago)

Its a really good show and I recommend starting on 233 and working your way up, then starting over on episode 1. Has also done very good series on how a computer network works and how cryptography works. (Ep 203 will blow your mind when he talks about the Boyer & Moore method of searching)

Scott Chamberlain
@Scott Chamberlain: This looks like a great idea! Question, though: are you recommending the audio-only or video podcast? Are they the same thing? Audio would be easier to listen to on-the-fly, but video would help me along a little faster, as I'm a visual -and- oral learner (also -slightly- kinetic).
Justian Meyer
@Justian Meyer I recommend the audio only. Steve does not use visual examples ever, he started as a audio podcast and has said many times that he knows that is his primary audience. The video is just because Leo Laport (his co-host) likes to do video stuff so he dragged Steve kicking and screaming in to video-casting.
Scott Chamberlain
@Justian "...as I'm a visual -and- oral learner..." Remember this. Play to you strengths...no one else will. nosce te ipsum, Grasshopper.
CRMay
+2  A: 

To help you choose which specialization to go into, I would very highly recommend computer engineering(Known as CMPE or CE in college course books). Your classes will take you to everything you just listed, and with electives you can delve deeper into whichever aspects you wish(such as security and networking).

In CMPE you will learn both software(C, C++, and some C#) and then hardware( maybe two electrical engineering classes). Once you get to assembly programming, you will start to learn how the two combine to make up everything else in any computer or embedded system. It will take you down to the bit level of memory, CPU, data buses, I/O, and so many other things. I am just starting to do Digital Design, and its **ing glorious. From what you described, you will enjoy being a CMPE major greatly.

There's computer science majors and software engineers; there's electrical engineers; but there is no cell phone, GPS, or computer designed without computer engineers!

Dinoo
@Dinoo CMPE looks exactly like what I want to do :). It looks like I can pursue that in my Undergrad. and decide where I want to go from there for my Grad. It'll peak my interest and keep my options open :).
Justian Meyer
I know from personal experience MSOE has a very good Computer engineering undergrad program. http://www.msoe.edu/academics/academic_departments/eecs/bsce/
Scott Chamberlain
Right before I was going into college a few years ago, I had the same sorts of questions. I'm majoring in computer engineering, and I find that it's a great mix of hardware and software.
mouche