What are they teaching kids these days??
I'm so tired of hearing "pass in a float for an int arg" and other ridiculous test cases in tech interviews for software testers. Are kids in colleges these days getting any exposure to assembly language or even C? I'm seeing fewer and fewer people who can actually describe for me a what a stack frame is and what happens when a function is called. Algorithms and data structures are very important to know too, but PLEASE - if you're teaching, teach some of the "basics" too.
I'm not sure about other colleges/universities, but over here, most people only learn the basics of MIPS assembly language programming and stuff like pipelining. Though there is an advanced module that covers (I think) x86.
"Are kids in colleges these days getting any exposure to assembly language or even C?"
What do CPU instruction sets and web apps have in common? And why would the former be a prerequisite for the latter?
If you don't have some basic knowledge of assembly, or at least the appreciation of its concepts, you'll start programming in C or C++, your program will crash with a stack overflow or memory overrun, and you won't have the faintest idea why.
Better Than Being Unemployed...
more important than having a knowledge of assembler is understanding the underlying hardware.
John C, I think ass-clown was being a little sarcastic to point out that, for 95% of developers these days, assembly simply doesn't matter. Yeah, it's good to know what's going on under the hood, but there are more important things to learn than the precise and gory details of this sort of thing. My 0.02c.
I know, I was being ironic. :)
Well, in college I had to write both an assembler and compiler. I also wrote a rather nice disassembler that I still use today.
Schools might respond that they were leaned on heavily from many sides to break their curricula and pop out CS grads for a very shortterm industry demand. UChicago was at the time embroiled in a debate because their school was so hardassed about their liberal arts education, that they lost even more applicants than usual to easier schools like the Ivy Leagues.
I think the complaint is that most kids coming out of undergrad CS programs don't understand Hardware basics. Most of the Undergrad Programs I know of teach in Java.
A Software Build Guy
My point was that kids are coming through understanding high-level languages... great, but not the basics. You can still write really bad/slow code in C#, Java, etc. if you don't understand what's going on behind the scenes. My app is more perf-intensive than most, granted, so we pretty much code in C. But when kids come through without the faintest clue of what a pointer is, I immediately think (probably unfairly, yes) that they're going to take too much ramp-up time and don't have the solid foundation it takes to succeed in this industry. Especially today when it's so tough to find a solid job... You understand the basics and you'll be much more flexible than "joe web app". It just makes sense.
Altough I know x86 ASM myself, for me, it is a good thing that people nowadays know a lot less about assembler language and the CPU.
Danny B. Developer
That's a scary thought. If less people are informed, more profits for you. Lock up all the information so only the rich people can have it!
"I guess our web app is going to have to wait."
It's apples and oranges. Would you hire a web app programmer to code a device driver, or vice versa?
Let's find constructive answers. Will your company help mirror the http://aduni.org/ courses? You can order an HD with all their courses for cheap, and just help distribute this course:
> That's a scary thought. If less people are
Danny B. Developer
I don't think skills required for cracking are same as those required for programming. You can become good with assembler and skilled at low-level debugging and such like, and use it a lot... and yet still be unable to crack programs successfully.
Hey! I am not afraid of the fact that Johnny B. Cracker will crack my program. He cracked my program - good for him - he can use it for free.
Danny B. Developer
My question is: Why are you focused on what colleges are teaching?
The Pedant, Brent P. Newhall
I have heard about many universities where you learn most basic courses in Java, and I don't like it. I think that when you are learning about data strutures and some other basic stuff, you must learn to control your resources "the hard way", even you don't use this in your job, understanding how to correcly manage memory, even in simple exercises, can help a lot to write better code.
frustrated interviewer, one of the problems with kids comming out of college today is that people like you teach the classes, show the kids all about assmebly and how to optimize they're C code, and then they get out and can't put a program together. I'd rather have some fresh grad understand OO concepts, design, good debuging, then some moron who can tell me what GCC is doing but can't figure out how to architect a simple web app.
Just to throw more beans into the pot (what???) I might add that I am doing a University course where VB.NET is the basic programming language taught. In a different stream, Java is the language taught.
I interview people for OS/kernel level development positions. A solid OO background is great - bring it on. The more skills the better. I also look for smart people who can prove to me they can learn on the job. So they don't know specific technologies I'd prefer... if they're smart, I can teach them.
>'It's disappointing to me that many schools are only teaching "the language of the week" rather than making sure their students have a solid understanding of the fundamentals.'
Teach the fundamentals to smart people, and the let them "teach themselves the language of the week in 21 days" on the job.
Maybe you should be interviewing more engineers and fewer computer science grads?
Fog Creek Home