Slashdot Mirror


College: Are They Training Engineers Or Coders?

Durrik asks: "Recently I've had to go to the local university and interview a lot of students for job openings for next term. I've also had to go through a lot of resumes for more senior positions. I must say I wasn't too happy with the results of the recent graduates, or the current students. Most of the resumes that have crossed my desk are from people who would make good coders and implementers. In my opinion that's not what engineering is about. Engineering is about problem solving, and coming up with solutions, but most universities are now graduating people who know C, C++ and a whole mess of languages, but don't teach how to solve a problem. They can code an application but can they really come up with something new? One of the problems I've noticed is they teach a problem, and a solution but not how one works from the problem to the solution, and most of the problems are 15 to 20 years old! So are the universities turning out people who'd be better off with a diploma or certificate instead of a degree?"

4 of 51 comments (clear)

  1. I graduated in '96 with a BSECE ... my perspective by BitMan · · Score: 3

    I don't know about your local university, but my 5-year computer engineer degree was of the traditional engineering type. Math, mechanics, traditional EE core, only 4 courses different that specialized in software, computer architecture and algorithms. I know people complained that we weren't learning much that was applicable, that we shouldn't have to take materials, dynamics, analysis, etc..., especially combined all the intros we took into other engineering disciplines (like environmental, etc...), but I felt it really taught us to problem solve, even if we were in unfamiliar territory (like another discipline).

    In all my engineering courses, especially in my EE/ECE discipline, we were pretty much given a problem and told to figure out how to solve it. They didn't baby us by teaching programming languages, they didn't tell us what language you had to use. In fact, when I reached my EE/ECE courses and I had to code -- they expected you to have already learned a programming language somewhere (or take a 3 hour survey course if you didn't, and it didn't count as a valid option towards your graduation requirements either). Whether it was some piece of software, required an embedded circuit design, etc... You had to look at it, try something, get frustrated, try something else, at one point you always hit the professors office hours to ask a question or two, then finally solve it. I remember spending a lot of time in the labs looking at spec sheets, playing with analog/digital ICs and drawing on the knowledge of others, especially technicians who worked in the industry (or our large research park, #2 in size in the nation), to come up with solutions.

    I also received a computer science minor from the same university. It was less math, less physics, and numerous, what could be considered, "remedial" programming courses -- requiring you to use a specific language (Modula-2). If CS was my major, the other courses would go on to 8-bit microcontrollers, 32-bit microprocessors, several surveys of programming languages and the standard survey and choice of other topics. In the end, a 120 semmester hour CS degree comprised to about 3/4ths (~90 hours) of just software implementation and IC technology.

    Again, in comparison, the engineering discipline at my univeristy shouved a total of 135 semmester hours of largely traditional engineering down my throat (~80 hours), then only a year (~24-30 hours) of one of the "big-three" disciplines (civil/electrical/mechanical, electrical in my case) and only half a year (~15 hours) of the further specialty (computer in my case). A lot of people complained about the lack of specialty, but I personally like it -- felt like it taught me to think.

    I felt CS (among other 4-year degrees like engineering technology and 2-year tech degrees) are more "practical" whereas traditional engineering doesn't teach you anything "useable" except for the ability to think and problem solve. It'd rather have the intuition in the later than the knowledge in the former, because I can always compile the former with experience -- and I worked 30+ hours while in college in IS/IT departments at various engineering firms, which gave me the former at the same time. I guess the type of graduate produced at institutions depends on the institution one attends. The EE department at the institution where I attended ranks in the top 25 on the College Board rankings for EE departments. [ I personally think my institution sux, big time, from the administration to most of the departments. But the engineering college is a complete 180 from the rest of the college. I wouldn't have gone anywhere else. ]

    -- Bryan "TheBS" Smith

    --
    -- Bryan "TheBS" Smith
    Independent Author, Consultant and Trainer
  2. Sad but true by dpletche · · Score: 3

    I'm dismayed by this situation too. Even bright CS-oriented people frequently have no understanding of algorithms, systems, applied mathematics and the like. Do they teach math classes in computer science programs today? I've noticed that qualified physicists and engineers are aggressively courted for many positions where these skills are needed.

    Furthermore, the decreasing price of hardware and proliferation of squishy languages has enabled a depressing decline in the analysis of problems and elegance of solutions. For example, the java generation seems to use hash tables for everything, even when simple arrays would be ideal. These are not the same software engineers who launched Voyager into interstellar space.

    "Some of the most awesome Real Programmers of all work at the Jet Propulsion Laboratory in California. Many of them know the entire operating system of the Pioneer and Voyager spacecraft by heart. With a combination of large ground-based FORTRAN programs and small spacecraft-based assembly language programs, they are able to do incredible feats of navigation and improvisation -- hitting ten-kilometer wide windows at Saturn after six years in space, repairing or bypassing damaged sensor platforms, radios, and batteries. Allegedly, one Real Programmer managed to tuck a pattern-matching program into a few hundred bytes of unused memory in a Voyager spacecraft that searched for, located, and photographed a new moon of Jupiter."
    From "Real Programmers Don't Use PASCAL" by Ed Post

  3. My Perspective by Janthkin · · Score: 4

    As I've gone through school (I get my BS in CSE in May), and chatted w/others at different universities, I've noticed two very different mindsets at different schools. Some, as you say, focus on turning out coders: they take language courses by the dozens (some hyperbole), and in general spend the majority of their degree-work coding. By contrast, programs such as those offered at my school, and the other major (research) universities teach exactly one language (we use C++), with the understanding that it could just as easily be C, Perl, or the Turing Machine model: as per Church's Theorem, any is sufficient for teaching the theory behind this stuff. Now, does this mean we are supposed to graduate knowing only the one language? Hell no! We are expected (unlike every other kind of degree that I know of...) to actually teach ourselves outside of the classroom. Scary, no?

    More specifically, as to your remarks: Yes, we are taught solutions to old problems. Why? Because they are FUNDAMENTAL problems, things that people struggled with mightily. It's no different than teaching Physics students about Newton and Einstein: they, too, are old news, but they are also the solid base for everything else. Now, you may have one of the universities of the first type near you, which could help explain your frustration. But at the same time, the resume is not everything. The principal purpose of a comp. sci. degree is to give a student some base to work from, to THINK from. They can't teach us to think, although they do try.

    Before placing the blame solely on the backs of the education system, you should remember stuff like the above. Maybe you should widen your search to include other schools?

  4. I know all the languages, even uninvented ones by bluGill · · Score: 3

    I know all comptuers programing languages. Every single one. I know perl 7.0, the next successer to c (not C++ or c#, but the one that will come next) I know all dialects of LISP.

    Church wrote a therom proving it. All turing compatable languages are equivelent, and non turing compatable lanugages are very limited.

    Ask me on an interview if I know smalltalk and I'll respond "Yes, but I'll need a week of review before you can quiz me on my knowlege." Then after the interview I head to the local book strore and buy some small talk books, or head to the net and look up smalltalk. No big deal, I've learned programing languages before, and will learn more in the future. Learning the first language is hard, but once you know a Lisp, a Procedural language, and a machine language (assembly counts), you know all the variations, and it is just a matter of syntax which is easy.

    Of course mastering a progrmaing language takes time, but to learn it is easy. One of my professors claimed to have learned basic in a morning, and I have no problem beliving him. Trivial to do, if I didn't know basic I could learn it in a few hours too. I could also spend several years learning the tricks to make basic work best, but to make it work good enough is a trivial task.