Cracker, Hacker, Genius or No?

I have kid who just turned 16. I think he’s really talented with computer programming but since I know nothing, I have no basis on which to judge except a mommy’s bias. So anyone out there who knows something about programming who can give me some feedback would be a most appreciated help. And also, maybe some info on whether I should start collecting bail money now or is his interest legal and ethical and unlikely to result in cracking.

He is mostly self-taught so far. He started with Real Basic when he was 12 or so. Then moved to Visual Basic. He buys books on programming and just works his way through them, one page after another. He is passionate about open source and installed the Debian distribution of Linux when he was in middle school. By himself. He made a dual boot computer and now he’s familiar with Windows as well. (Also OS X) He has done a lot of Perl programming and was working his way through a C++ text book recently but is now taking an online university course on Java. He is interested in reverse engineering (that’s the part that worries me) but I know that it can be a legitimate programming strategy. He’s been told by his professor that he writes elegant, precise code but doesn’t everyone who programs? We have had serious discussions about the ethics of hacking vs. cracking and I have never had any reason to think he’s behaving improperly. He has lots of other outlets—ultimate frisbee, rock climbing, his girlfriend—so computers are not his life. Should they be?

Anyway. Does this kid sound like a good programmer, a possible cracker, a genius or just your average suburban teenage code writer? And where should he start looking for colleges?

Thanks for your opinions. I love this board.

3rd year CS Major reporting in

His story sounds like many very intelligent computer geeks. We all begin with what is available, the opening of the Internet puts nearly infinite knowledge at the fingertips and Linux is a natural addition to the normal way of life for a computer programmer. There is no doubt he is bright and motivated to learn what he wants to learn.

As for your concern whether he is heading for the darkside. To be honest, and I mean frankly honest, it is a product of boredom. The worst enemy for a computer geek is boredom. When all the video games stop being challenging, when the programming ideas run dry. Computer geeks want a challenge and it eventually might lead them to reverse engineering. As you said, this isn’t necessarily bad stuff, but what better way to test your wits then try to outfox the companies which spend hundreds of thousands of dollars trying to prevent what you’re doing? The smartest dabble in it but then usually find something else which interests them, something else which is quite challenging - women. And yes I’m serious.

CS Majors are cliche as reclusive hermits, but the truth is there is a good percentage which care about their looks and their appearance and they do try to find some companionship. The cliche rises from the level of work which is sometimes necessary to put into projects. An item for me to rant on another time.

I can’t make any promises or guarantees when it comes to where he’ll end up. I admit I toyed with the darker skills of a computer geek, even hung out with a group of true crackers online - though I was far from one. I like to think that all above average computer geeks get drawn to it, but the brightest turn away, but that might just be wishful thinking.

I could go into psycho-babble and theory but I’m not going to. To be perfectly honest you need to educate yourself, a geek is skilled at hiding what he’s doing, whether it be dirty pictures or cracking. Alt+tab is an old friend. Obviously respect his privacy, knock first, don’t go digging through the hard drive.

Here is my main warning sign for you to watch out for. He already spends a lot of time online and on the computer, but when he begins passing off going out with friends or playing frisbee or passing off anything away from the computer - then the time to begin getting curious has arrived.

As for colleges, from your description it sounds like CS is where he’s headed but I also want to caution you. I’ve seen way too many people find out that being a CS major is not the same as what they were doing before college. Now they were not, for the most part, like your boy but I want to make sure you encourage him to check out other opportunities. Lots of people say, “Oh, I love playing on the computer, I should be a CS major.” Only to find out the computer stops being an item of pleasure and begins being a gasp tool of work. This is not to scare people off, but to make them aware that if after the first year of classes, they’re not finding the challenges even somewhat enjoyable - they should consider switching majors.

Also, to avoid confusion in the future. Computer Science and Computer Engineering are NOT the same thing. Computer Science relates to software development and Computer Engineering is for the designing and building of the hardware for computers. The lines between them can grow fuzzy, just as the line between a Computer Engineer and Electrical Engineer can. But it was something my parents were confused over when we were looking at schools so I wanted to pass that on.

Since I don’t know your financial situation or how it will go about paying for school I’m just going to share some good schools for you to look over.

Georgia Tech - Consistently one of the best CS departments in the nation, has the best Artificial Intelligence department in the nation, perhaps the world.
MIT - Not much to say other than it’s MIT
Berkley - Again, not much to say, just a legendary school.
Univ. of Central Florida - A school not really known all too well but has become well known for a competitive CS department. (GT’s main competitor in the Southeast.)
Stanford
Carnegie Mellon - Ranked #1 and very respected.

Hope this was helpful. Let me know if you have any more questions.

As a grad student in computer science, I can answer that question with a definitive no.

At any rate, and not that this is much help, who can tell? Some of the best programmers I know write horribly kludgy code that is impossible to understand or maintain. On the other hand, they get results. Quickly.

I think it’s good if you’ve had “serious discussions” regarding ethics. IMO, truly understanding (and, of course, following) the open source philosophy can only lead to ethical behavior, as it’s totally based on respecting and acknowledging the work of others.

Besides the schools that ronincyberpunk listed (CMU, Berkeley, Stanford, and MIT being tops), Illinois/Champaign-Urbana and Purdue are also highly rated, as are Wisconsin and UTexas-Austin.

General Questions is for questions with factual answers. Since you are asking for opinions, I’ll move this to IMHO for you.

DrMatrix - GQ Moderator

There are a LOT of programmers out there who do not write elegant, precise code. Coming from a professor, that’s a good compliment. Tell him to make sure he comments his code too. Anyone who writes well written and well commented code is going to do well.

Whatever college you choose, make sure that he does internships and any side job he can find, even if it doesn’t pay squat. Tell him not to pass up any chance to put something on his resume that shows he knows how to program.

(I’m a lead engineer for a company that makes hardware and software for industrial control, by the way)

My apologies for the location of the post and my thanks for moving it.

Thanks for the info so far. From what I gather, I guess it’s a good thing that he doesn’t play computer games. He played for a while when he was younger but he doesn’t now. He does a lot of 3D modeling though; I don’t know how it works.

He had an afterschool work thing for two years for a small IT company here in town. They gave him programming chores and he did them. No money, just something to keep him busy. The company moved to RTP and since he can’t drive yet, he hasn’t been since October.

As per the CS vs. CE difference, I think you’re right that it’s not the engineering part that interests him although he can build and rebuild a machine if he wants to.

The colleges that you all mention: they’re tough to get into, right? Does he have any chance against all the other would-be Kevin Mitnicks out there? Is it a good thing for him to take programming courses on-line or is he learning bad programming practices that way? Do all programmers know about comments?

He’s a bright kid but I don’t really know how bright. He’s takes, loves and excels at Latin and his other courses are pretty rigerous at his high school but…who knows what that really means. There are so many, many super bright kids out there competing for limited spaces.

He is totally committed to open source. I am using Firebox now because he insisted and he also installed an open source IM program on my laptop as well as a few other programs. He is contemptuous of what they call ‘script kiddies’ so I think that’s a good thing.

You guys are great. Thanks so much!

As for getting into colleges, check the books. He can do it with good grades and good SAT scores, and a reference from his professsor will work well too. I went to MIT undergrad and U of I for grad school in CS, so it is possible. They are both good, but emphasize different things. In MIT these days everyone works with professors on research projects, something just beginning when I was there. U of I is big, and the CS department is big also. Undergrads can get involved with faculty, but it is a bit harder than at MIT. It is also a bit cheaper.

I know faculty in the CE department of UT Austin and CMU. Both are good places, as is Stanford. My daughter went to Berkley half time her senior year of high school and hated the place. She decided to go somewhere else to college even though she was officially admited there. The classes were good, but the atmosphere wasn’t. Because of our California budget problems, you only get to stay in a dorm for a year. Academically it is good, but in other ways eh.

What do you mean by reverse engineering? If it means downloading Linux or other open source programs and looking through them, there is nothing wrong with that at all. It is great training on programming in the large. I wish there were such opportunities when I was in high school. I learned to program from a teacher who was a few weeks ahead of the class and by reading IBM 1620 manuals.

It sounds like he could be good. The only way I’d know is if he’d work for me.

I wouldn’t stress the school too much. For one thing, rankings don’t really mean that much, for another, he can get a good education at any number of schools. I can’t imagine any of the Big 10 schools are bad at programming, even if they can’t count. If the school graduates enough students in a given major, the relevant business will interview there. Have him look at schools that are a reach, schools that are within his grasp, and one or two gimmees. He doesn’t want to not get in anywhere, but if he doesn’t apply to the schools that are very hard to get in, he won’t get in.

I’d pick a school that is large, so if he changes his mind and decides to be an art history major, he can do that. (He is more likely to discover that he prefers an engineering field, or a field like physics, so stick to good technical schools.) I’d pick a school that is near where he’d like to live, because companies are much less likely to cover relocation expenses than in the 80’s and, if you don’t live where you want in school, why are you there?. I work for a very large corporation, but our group never interviews out of state, because there are only about 50 of us. Of course, he might decide he wants to live somewhere else eventually, and picking a school close enough to home to go home frequently and far enough that mom doesn’t find out about his every move is nice. Most importantly, he should pick a school with sufficient numbers of like minded people. There’s a reason some kids prefer Berkley, and some Stanford.

In order: Yes, absolutely, probably a good thing, and yes.

The more experience he has, the better off he’ll be. Also, math. From mathematical proofs to linear algebra to calculus, it’s all important for CS. Perhaps not to the same degree for just coding; most anyone can write a for loop, but proving that calculating a visibility graph can be done in O(nlogn) time or writing a probabilistic learning module requires some mathematical depth. I wish I had taken more math, but - hey, I was a philosophy major to begin with.

Okay, got it…more math. The rest of it…not so much. I don’t have any math background at all so the rest of what you said about math sailed right over my head. Will he understand it if I tell him? He’s taking the regular math course of study at his high school—geometry, algebra 2, followed by pre-calculus and then calculus in 12th grade. Is that an okay trajectory? They are the honors versions of the classes if that means anything.

Probably not, although he might have picked some of it up along the way. It’s the theory that makes computer science a science, as opposed to just programming. He’ll get even more math once he’s enrolled in college, but it’s so much easier with early exposure. (I say that in retrospect; boy, do I wish I had taken more math.)

No worries, sounds like he’s doing the right thing.

Well, he is a 16-year-old boy… play it safe and save anyway. :smiley:

I’m sure everyone who writes code believes that about themselves, at least… :rolleyes:

I’ve contemplated this myself, and I haven’t come up with a good answer. He could go the dedicated route and really dedicate himself to becoming an awesome programmer… but in many respects, he’ll have college and the workplace for that.

Speaking of college, he’ll need to be comfortable with math - not so much the techniques and formulae, but thinking quantitatively. If he’s up to it, tell him to look into discrete mathematics. If he’s comfortable with algebra, he’s got the tools he needs to get started. The problems are incredibly difficult given their simple-looking nature, but they form the basis for a lot of the theory in computer science.

As was suggested before, encourage him to keep gaining practical experience for a real brick-and-mortar place. Employers are typically skeptical of self-taught programmers, but they eat up experience. It helps especially if he can take his side projects, finish them up, and put a little polish on them; again, because employers like programmers who have follow-through… anyone can write a piece of code, but being able to see a project through is a valuable trait.

As a side note, I got a job programming in Java when I was 16 - subcontracting for Charles Schwab - and employers damn near mess themselves when they hear it. I hope he can get those kinds of reactions as well!

IMHO, he sounds talented but not extraordinarily so. This is not a disparagment of his intelligence so much as an observation as to the sheer quantity of genius that seems to flow into CS.

In any degree that he chooses to enroll himself in, he should find the coursework to be a breeze but might still do rather poorly if he finds the subject boring.