Fog Creek Software
Discussion Board




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.

If I wanted to hire script kiddies, I'd recruit at the local middle school.

frustrated interviewer
Monday, July 28, 2003

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.

C is normally taught during the OS module...

Damit
Monday, July 28, 2003

"Are kids in colleges these days getting any exposure to assembly language or even C?"

I can't speak for kids in college, but I spend what little free time I have learning technologies and programming languages that I hope will keep me employable. I do mostly business application development and maintenance programming and haven't come across too many employers looking to hire someone who has extensive Assembly or C programming language experience.


Monday, July 28, 2003

What do CPU instruction sets and web apps have in common? And why would the former be a prerequisite for the latter?

Dare I say it sounds like you might be suffering from "this person needs to know exactly what I know to do the job" syndrome.

John C
Monday, July 28, 2003

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.

Having said that, there's more of a move towards languages that manage memory for you : C#, Java, Perl etc, and I think this takes more priority in college courses these days. Of course, if you don't know the basics you won't be able to "drop in" to a lower level language for, say, performance reasons, so you won't have the edge over others.

Better Than Being Unemployed...
Monday, July 28, 2003

more important than having a knowledge of assembler is understanding the underlying hardware.

Im in a very similar boat to yourself, Im interviewing to fill a job requiring advanced sql knowledge and sufficient experience with using the mysql c++ api to be able to move forward pretty quick

but not one candidate understands the IEEE standard for RTL, even if asked leading questions they are unable to define the subset of IEEE 1364 (TM) (Verilog HDL) suitable for RTL synthesis.

Id do the job myself but I have no idea what RTL stands for, or why IEE have developed a  standard for it....

<sigh>

FullNameRequired
Monday, July 28, 2003

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.

Christo Fogelberg
Monday, July 28, 2003

I know, I was being ironic. :)

John C
Monday, July 28, 2003

Well, in college I had to write both an assembler and compiler. I also wrote a rather nice disassembler that I still use today.

There are colleges that teach this stuff, but for the most part, you'll find those that know this stuff taught it to themselves.

SG
Monday, July 28, 2003

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.

There are obviously other reasons, some of which show universities in a bad light, but this is probably the biggest one.

I don't think we can expect unis to have their fingers on the industry's pulse.

sammy
Monday, July 28, 2003

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.
I once got in to a discussion with a Java programmer who was trying to tell me that the hardware was not at all important.  I disagreed, is the bottom layer of all abstractions.  You have to understand the limitations of the hardware to understand the limitations of software.  If you don't understand the limitations, you will run into unexplanable problems in implamenting.

A Software Build Guy
Monday, July 28, 2003

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.

So I sound pompous... but I'll hold out for the real coders with da skills and clown, good luck with your web app.

frustrated interviewer
Monday, July 28, 2003

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.

Why?

Because that means that cracks for our company's products get released a lot later.

Less people knowing ASM --> less software crackers --> more profits for software companies

Danny B. Developer
Monday, July 28, 2003

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!

purple
Monday, July 28, 2003

"I guess our web app is going to have to wait."

Hah! Brilliant!

Leonardo Herrera
Monday, July 28, 2003

It's apples and oranges.  Would you hire a web app programmer to code a device driver, or vice versa?

Jason
Monday, July 28, 2003

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:
http://aduni.org/courses/how_computers_work/

sammy
Monday, July 28, 2003

> 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!

Oh, yes, let's teach everybody how to be an amateur locksmith, break locks and hotwire cars!

Danny B. Developer
Monday, July 28, 2003

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.

But maybe that is just me. I think I have become quite used to having the symbols when debugging -- they help a lot!

And anyway, good programmers know the value of not reinventing the wheel. If I wanted to crack your program, I'd find the crack on kazaa or go googling for a serial number.

Tom
Monday, July 28, 2003

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.

What I am afraid of, is that he will distribute the crack to others, and that the crack will spread, and users who otherwise would have paid now just use the cracked version.

And don't give me that theory that "people are honest".

Practice shows that every time a working crack spreads, our sales go down.

Danny B. Developer
Monday, July 28, 2003

My question is:  Why are you focused on what colleges are teaching?

I worry a lot less about what a developer learned in college and more about what they actually know.  And even if their college *does* teach this thing, was this particular developer awake during that lecture?

Interview the person, not the degree.

The Pedant, Brent P. Newhall
Monday, July 28, 2003

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.

Also, I think that Java/C# and languages that make no strict (syntatic) difference between pointers/references/values aren't good for teaching. I think that being forced to discern at least between a pointer-to-something and a value-of-something is important to CS grads.

whatever
Monday, July 28, 2003

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.

Vince
Monday, July 28, 2003

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.

There is no C/C++/assembler available anywhere in course.

I think it also relevant that it is an IT (Graduate) Diploma and not a Computer Science diploma

LesC
Monday, July 28, 2003

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.

My point (that most of you seem to have missed while calling me "ass clown") was that I do not believe people are getting a well-rounded CS background in college.  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.

I'm enjoying this thread, but let's try to trim back the name calling, eh?

frustrated interviewer
Tuesday, July 29, 2003

frustrated interviewer,
I think I'm a pretty good developer with 2 years experience and 2-3 good projects behind me.Interested in interviewing me?

SR
Tuesday, July 29, 2003

>'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.'

But when the university focuses on fundamentals, the employers complain that the graduates don't know the language of the week and need to be "more practical."

T. Norman
Tuesday, July 29, 2003

Teach the fundamentals to smart people, and the let them "teach themselves the language of the week in 21 days" on the job.

frustrated interviewer
Wednesday, July 30, 2003

Maybe you should be interviewing more engineers and fewer computer science grads?

radius
Wednesday, July 30, 2003

*  Recent Topics

*  Fog Creek Home