Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Education

College: Are They Training Engineers Or Coders? 51

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?"
This discussion has been archived. No new comments can be posted.

College-Are they Training Engineers or Coders?

Comments Filter:
  • When I was 17, I enrolled into a charter high school because I dropped out of the public highshool. For those of you not aware, charter schools are for those who don't fit into the regular public school system and it gives the student a chance to learn at their own pace. Either way, as a student there I asked if I could get credit for helping out setting up their network. (they were a new school with limited resources). They were extremely cooperative and allowed me to assist in figuring out a file sharing system using their NT 3.5 network. (at the time I was just learning about computers). They helped me teach myself a lot about problem solving and networking at the same time. I know that it isn't a college but there are still good schools out there, I guess I just got lucky.
  • by BitMan ( 15055 ) on Sunday November 05, 2000 @03:58AM (#648693)

    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

  • by dpletche ( 207193 ) on Sunday November 05, 2000 @04:11AM (#648694)
    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
  • That sucks. We learn Visual Studio - even have to take VSEDITOR-101 - and the entire program, including humanity electives, only lasts 3 years. Then its off to a $100,000/yr job. All of which is just as well because math is hard and study cuts into warez and mp3 ferreting sessions over the multiple OC3 university network. Your university really needs to examine its priorities. I'd ignore their alumni fund raisers if I were you.
  • I am a student at MIT, and I just thought I'd drop my 2 cents in and say that we certainly are not taught programming languages. In any class that requires a programming language, you are simply expected to learn it on your own.

    MIT does rigorously teach the alogorithms, mathematics and problem solving techniques. One of the larger CS requirements (6.170, or software engineering lab) is actually about managing large projects among groups, rather than coding. There are also a lot of classes that include graph theory, data structures and alogoritms (both using classic examples and designing your own), as well as many other techniques to understand how to approach problems. The MIT CS deptartment actually prides itself on the LACK of actual "practical" classes.
  • That is true. I am currently at the University of Arizona and was in the Computer Science program but are most likely going to drop as I have started to go insane coding 24/7. I enjoy the problem and solution hunt but that seems to be irrelivant any more. You have 1 project a semester that has to be solved in the first week it is assigned then the rest of the time is spent coding it. Personally I am going to try and find more problem solving related courses but that is going to be a task. They are teaching CS majors to be coding drones as that is what companies seem to want. Everything from analist to web page designer now seems to need a CS major? Is it me or is there a need for the splitting of the major into 2 parts? Coder and IT Specialist?
  • So you have one course that is really hard that teaches problem solving. That doesn't quite seem like enough to me? One learns problem solving by solving many problems and I don't think you can learn enought in jsut one class? We have a management Informations systems degree here but that is a joke. It is run by the business school which by definition means it is cake to get through. The hardest part is gettign the 3.83 in your first 2 years of GEN ED CRAP to get in. Personally I would never hire anyone from our business college (It ranks between 3-7 nationally [sorry can't remeber exactly]) they are taught to think like machienes as well.
  • by Janthkin ( 32289 ) on Sunday November 05, 2000 @07:31AM (#648699)
    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?
  • A university is not a technical college, if you parallel with any other technical discipline you'll see a break down like this: <p> University: Theory is emphasized over practical applications, the idea being that these will be the people to bring in new technologies or be most exposed to new technologies or be the first to require an understanding of new technologies. You're more likely to learn how a compiler and optimization work rather than how to program in C. You still learn C, but you may not learn all the languages du jour. <p> College: Practical expertise is emphasized over theoretical studies, how things work isn't as important as making use of them. Lot's of exposure to different languages but not as much as exposure to why things work. <p> There's nothing wrong with either course of study, but the distinction should be maintained. Most universities I've seen are little more than technical colleges when it comes to Computer Science or Computer Engineering. Science courses are supposed to be heavy on theory. It'd be like an electrical engineering program that teaches you how to put together a computer without teaching the theory behind it. <p>
  • At my university, one of the problems is that the General Education Requirements (literature, sociology, &c.) take up close to 90 credits, which leaves only ~30 credits remaining to explore the major. I'm all in favour of providing a well-rounded experience to students, but it's unrealistic to shoehorn this into 120 credits. I know that at the University of Washington one must accrue 180 credits to get a bachelor's. Maybe this is a solution? I just know that 30 credits wouldn't be nearly enough to explore CS or ECE in-depth.
  • This is definitely not true at my school. My school is a traditional engineering school. We don't even have a CS program, we have computer engineering and software engineering. This means that we have a traditional engineering background no matter what degree we get. I've compared my program to a CS at another local University and I think we get a much better problem solving foundation. The other local University doesn't even require a technical writing class for CS majors, I was completely floored when I found out. It would seem to me that schools that offer both liberal and technical degrees require the all students to take more liberal arts classes than those with a strictly technical offering. (I can't believe someone can take bowling in college and actually get credit for it!) Although I've also found that most employers don't realize this difference, especial when they see that our average starting salary is $48,000 and a typical CS degree is much, much less. Very few realize the true benefit that we bring to a company.
  • Seriously. Math majors are trained to solve problems, design algorithms, and generally do everything you would ever need except coding. Except that learning to code in C is easy, so you'll find that many math majors can do that as well.

    If I wanted to hire a coder, I'd get a CS grad. If I want to hire someone who can think about a problem and work out how to solve it, I'll get a math grad.
  • by Anonymous Coward
    Sad but true. Many of the technology employers are looking for fairly specific language skills even from college graduates. This filters down into the curriculum and the course selections that students make.

    I knew the CS department at my school was heading this way when they added a VB course, and it was required. Even worse I recall many other students complaining that it was about time that the school have a course that teaches VB.

    In the rush to generate graduates to fill all the tech jobs many students and schools are leaving the science out of a BSCS.

    Another AC

  • I'm gonna hold my tongue about engineers a little. But just a little. :)

    Around here, engineers are the implementers. A computer engineer is a person that can solve a problem, to be sure, but a computer engineer is a decidely practical person.

    Here, Computing Science is more along the lines of what you're talking about. We're supposed to take classes on theory, algorithmics and implementation. The goal is supposed to be to train a scientist that happens to work with computers to discover new things about computers, and to be proficient when working with them.

    I'm at the end of my BSc, and I see the problems that you're talking about all around me. I see students that take the theory classes, learn nothing, but manage to regurgitate enough of the book to get a good mark, and end up with a degree that is no indication of their actual talent with computers.

    The problem is that computers can make you a good living. A BSc is a good place to start. Most people are undecided coming into University as it is. The problem is that they have no love for computing science as a science. Heck, some of them have no love of computers.

    Here's some things that you should check for when hiring:

    1) What games do they play? I'm serious. Someone that loves computers and wants to be around them will be a gamer. There are some non-gaming scientists out there, but this is a good first gauge.

    2) Ask them algorithmic questions. If they can't at least come up with some sort of halfway reasonable answer, ditch them. Any computing scientist worth their salt should at least be able to tell you the difference between a P and an NP problem, even if they can't do anything with the NP problem.

    Oh, you could also start asking for only Master's degree or better applicants. That guarantees at least some level of desire to discover things.
  • At my Uni, University of Technology Sydney (UTS), we have two seperate degrees. A computer science degree run from the mathematical and computing sciences faculty, and a computer systems engineering degree (also currently on the works is a software engineering degree) running from the engineering faculty.

    The comp sci degree, as you expect, puts out coders, the engineering degree really does put out engineers. We were taught the fundamentals of all engineering degrees during the first 2 years (but were still given 1 or 2 specialty subjects along the way to wet our appetites). And then left up to the last two years to really specialise.

    I can still remember, having to back over my math (complex numbers) texts in order to be able to applly that kowledge to problems involving frequency domain analysis of an analogue signal which was being digtised on an embeded chip using C. Try and get a coder to figure that one out.

    We were taught to TEACH OUR SELVES the specifics of a particular language, so long as we knew how to approach the problem at hand. Whether it be programming in C, Java, assembler, VHDL (digtal design), or even html and XML (towards the latter part of the degree).

    We were taught to use the various computer languages as a tool (like you would a calculator) and not neccessarily as a skill.

    The engineering approach to problem solving and algorithmic analysis were the fundmental aspects of the degree to be learnt. The programming language was a secondary task to be learnt as required.

  • "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."

    Actually, they do still teach math to CS students in their first two years. But not too many of them will do advance math like Graph Theory or Algorithm Analysis. And not too many of them will take Set Theory which I found it's close related to computer science.

    Tell you the truth, a lot of people in computer science program don't like to code. A lot of them admitted that they study this because of money, not because of their interest. A lot of them don't like to hack codes. All they want is getting a good job at IT field, not as programmers. So if employers are looking for good coders and problem solvers, I would suggest you test their skills instead of hiring people depends on their resumes.

    ============
    i. There is no spoon.

  • >When I need to normalize a wave function I'm >lost without a calculating utility (TI-89) to do >the work for me. But when would you not have one of these to do that for you while on the Job?
  • Computer Science Professors at most collages/universities teach some fundamental problems. However, they don't teach (or don't know how to teach) the way to mix different methods together to solve problems. Most of them are just into their own researches and not really into teaching.

    Let me use something from the movie Matrix: There are difference between knowing the path and walking the path. - Comp Sci and Engineering students need to walk through the path to learn programming. But most professors at school don't even know how to show the door of the path. (At the same time, not all computer science or engineering students are the chosen ones who can code!)

    ============
    i. There is no spoon.

  • Around my old college, the familiar mantra is "I learned more from working at the Help Desk than I did in 4 years of CS/CIS."

    Sadly, I had to agree.

    And as I've seen recently, the recent crop of freshmen at my old place have the odd idea that they're doing coding and that's it. The department also had the bright idea to cut out a ton of the necessary math & physics from CS (1 term of Discrete Math instead of 2, 1 term of Physics instead of 2) and putting less emphasis on analysis.

    Don't even get me started on the CIS major -- programming + accounting + bizadmin + economics.
    Thus sprach DrQu+xum, SID=218745.
  • I've used this one on a few occasions:
    "Says here you know objected oriented programming?"
    'Yes, that's right, I know C++ and some Java.'
    "Do you know Smalltalk?"
    'No.'
    "Good, let's talk about solving this problem using Smalltalk."
    'No, I said I don't know Smalltalk.'
    "Yes, but you know OO, right? So the language shouldn't matter. If I tell you that Smalltalk is an OO language you should be able to dive right in."

    Gets them most of the time.

  • Being a student at a Uni with a co-op job has taught me a lot about what employers are looking for, and I have always been successful in finding jobs that I enjoyed. However, I think that the reason that most of your resumes might be disappointing is that students don't know what you are looking for. Most think that programming skills are what employers want, and aren't really sure what the difference between design and implementation is.

    As for problems taught we do things such as an OS course, a compiler course, an Algo's and DataStructures course, a SW Eng Course (where we design a PBX), and optional 4th year courses include Distributed and Network Centric Computing, Applied AI, and Database Systems. I agree that a lot of the things that we are taught are old, and I think it is only through experience that you learn some of the modern problems.

    That is what I appreciate the most about a co-op program. We spend five years in school, but 2 of it is spent in industry. (Check out Our Department Homepage [uwaterloo.ca].


    >~~~~~~~~~~~~~~~~
  • Dude, if you don't use Linux, don't comment about Linux. If you don't use BSD, don't comment about BSD. If you don't use Solaris, don't comment about Solaris. Etc ... That's all I meant!

    -- Bryan "TheBS" Smith

  • So you're in a technology program. There is nothing wrong with that. I was reponding to the original post on why there *IS* a lack of good problem solvers and designers out there. US colleges are only graduating less than 20,000 traditional engineering types a year. That's not good.

    BTW, read Asimov's Foundation Trilogy. Excellent theme in there -- if a portion of the population does not continue to "learn the basics" our whole technology infrastructure will die. Knowing how to use technology and knowing the concepts and designs behind them are two different things. You cannot have people doing the former if you do not have people doing the later.

    -- Bryan "TheBS" Smith

  • That's because companies like Novell and Microsoft don't make the proper distinction between engineers and [engineering] technologists. They get caught up in "we _are_ engineers, really." Hence, the lack of differentiation.

    Most people just lump the guy who can repair PCs and network computers and the guy who can design integrated circuits (i.e. computer chips) into the same group, engineers. It's one thing to have an informal title of "engineer", which is tolerable, but it is another to be representing yourself in a consulting capacity as an engineer. There is a whole slew of liability and licensing issues that goes along with that title which most people do not have (unless they are traditional engineers).

    And unlike the electrical/computer engineering fields, both corporations and regulatory bodies of other engineering disciplines (like civil) don't stand for this. The IS/IT professional or system administrator is to electrical/computer engineering field as the land surveyor or draftsman is to the civil/environmental field. In each case, the former is 10x more numerous and pratical than the later. But you cannot have the former if you don't have later, otherwise there would be no products to use, install or fix.

    [ Note: This is not an "anal" stance, but a stance of trying to "reduce confusion" so don't all you IS/IT professionals get all pissy on me. I already said you are more "practical" and _are_ in more demand than us traditional types. ]

    -- Bryan "TheBS" Smith

  • Yes, I agree, co-op programs are excellent! If your university does not off one, suggest it, and plan to work during college in a technical capacity on your own anyway.

    Traditional universities are NOT institutions for technology application. They are for research and new ideas. They cannot possibly keep up with the industry, nor should they -- technology changes so much. They are designed to teach you how to learn and how to keep yourself learning throughout your life, giving you the basic tools to be able to learn anything.

    Technology and engineering technology is where you learn practical knowledge. But since technology changes so much, technical degrees are really no better than real-world experience. Hence, I'm back to my original argument. The only thing that you can get from college that you cannot from real-world experience are those non-practical concepts that are applicable in some positions (like traditional engineering and design).

    Most people do not need any formal training for technical positions, although you can always tell who has them. Because either they are inexperienced and know nothing, or they are experienced and, combined with their intuition, seem to know or can tackle anything. It all comes down to the ability of the individual to take that formal education and use it in the real-world. Again, I always look for engineers who held a technical job for 20-30+ hours/week while in college.

    The former Soviet Union is the epitome of a _failed_ engineering programs. You could get a engineering degree in ball bearings at the Soviet Union. Such a specialization is useless except for in a narrow field. In contrast, I have done software development for ballisitic missiles at an aerospace firm and now I work in the IC design industry.

    -- Bryan "TheBS" Smith

  • When looking for graduates, you need to find how their program is classified. The American Accreditation Board of Engineering and Technology [abet.org] classifies various programs of various disciplines:

    • Engineering Programs
    • Technology Programs
    • Engineering-Related Programs

    Again, if you are looking for traditional engineering types, you want the first. If you are looking for formally trained technicians, then you want the later. Beyond that, you do not need formally educated personnel IMHO. Either that or the personnel you are looking for are part of the math/science disciplines (like CS).

    -- Bryan "TheBS" Smith

  • I think students do know what employers are looking for. What they are looking for are coders not "problem solvers".

    The reality is that most employees are hired to do a specific job, and most employers don't have the time/interviewing skill to sift through the applicants to find the really talented engineer. It is much easier for them to look for the right collection of TLAs (Three Letter Acronyms) that indicate experience applicable to the job at hand.

    Students and grads find this out quick once they start looking for real industry jobs. So naturally their resume's stress their coding abilities over the general abilities at finding solutions to problems.

  • My question is...

    Have you ever gotten a response written in Smalltalk (ie: they're lying), or has it usually been a C++/Java program "crapified" into pseudo code?

    Just curious... :-)
  • I am a Computer Science major, and just to get my degree, I will be forced to take all Java programming classes and many others would these look favorable for a resume?; 4 English (2 Composition and 2 literature); 2 Physics; 2 Chemistry (its that Geology(im not going to play with rocks) or biology(im not going to disect things again)); Calculus up to Calc 3, and i will take a Number theory class as an elective; 4 Foreign Languages (i will try to avoid these at all costs); 2 Social Science(Will not be history for me); Now the CS classes: Discrete Structures for CSC; Introduction to CSC; Data Structures and Programing Techniques Honors; Practical Professional Issues in CSC; Foundations of CSC; Design of Algorithms; Computer Logic and Sequences; Advanced Programming; Assembly Programming; Systems Program Lab; Software Analysis and Design; Operating Systems; Computer Architechture; Analysis of Algorithms; Software Engineering; Advanced System Development; Computer Synthesis; Those are all the classes on my list to take, anything i dont really need?
  • This is a big problem. Up here in Ontario, Canada the Professional Engineers of Ontario (our regulatory body) are in a big fight over companies using the term engineer in job titles, but not requiring their employees to have the P.Eng. certification.

    It is in fact illegal to do so, but many companies (led by microsoft) refuse to cooperate. And it's difficult to sue microsoft. Even if they are blatantly violating the law.

    So maybe an engineer (a P.Eng in Ontario) is what you're looking for.
  • I'm not sure that colleges are turning out "coders". Most computer-related degrees are either computer science or computer/electrical engineering. The difference between the two is like the difference between mathematics and traditional engineering. Engineers need a background in math, and mathematicians can find novel solutions to engineering problems, but an engineer is not a mathematician and vice versa.

    Neither discipline is intended to turn out "coders", which I assume means "people who can write programs to solve problems". The purpose of college/university is higher education, not job training. If you just need "coders", hire a few bright high school kids and give them copies of "Learn Visual Basic In Two Days" or whatever.

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

    You get that from a resume? Anyways, 95% of the seniors in my computer engineering program make me laugh, they're so inept at everything. Coding? Who are you kidding? They know just enough Java to change variable names to avoid being caught for cheating. Engineering? Problem solving? Most of them just barely cheated their way to a 'D' in Statics and Data Structures. Those same 95% will be hired for $50k+ a year by various consulting firms and made into MCSEs.

    What does this mean to me? Free ride, baby. I rarely go to class and I easily do better than those lamers without even trying. Why am I in college? Free ride. I am a professional slacker. I get enough much money from scholarships and my 2-hours-every-other-day job that I don't gotta do shit and I'm in the black. I'm looking forward to grad school. :)

    And it's funny cause it's true.
    ---

  • I'm a student at Dartmouth College, and have basically devoted my life to the CS department here. I can safely say that after CS 23 - Software Design and Implementation, which is largely the development of HUGE programs - I know relatively little code. Of the 800-page C++ reference manuals, I know how to implement maybe 75 pages of info. However, I'm receiving an A in the class I'm currently in because the department here doesn't focus on code specifically, but rather the efficient design of a program. You can write a huge, inefficient beast of a program, but you can also be prepared to have it shoved back at you with a not-so-great grade scribbled on top. The focus here is on efficiency and intelligence in programming, not whether you use a conditional vs.a try-catch or something like that.
    For example, CS 5, the intro course, is taught in Java. CS 18, the follow-up, is taught in Dylan, a horrible, horrible language that is really obscure and, in my opinion, worthless. All courses after are taught in C++, but that's only because Java's really darn SLOW. This combination of languages teaches students not to rely on one language, but on the program and its effective creation. I don't know how it is at other institutions, but I think they got it right here.

    XTAZ

  • Here at the University of Central Florida, they teach how to do something, but not how to figure out what's worth doing. It scares the hell out of me because they way they're teaching me, I'll become obsolete the instant the market changes. One mile down the road at Full Sail, it's even worse. Full Sail is basically boot camp for coders. Learn some skills 24/7/52, and hope that gets you money fast, because what they teach becomes obsolete as fast as they taught it. What I want is a balance between implementation skills and creative/critical skills. I also want skills beyond technology. Like artistic, athletic, literate/philosophical and social skills. And some science too. Maybe in ten years all the money will be in biotech-genetics, and all these software skills will just be dead-end jobs. Maybe the emphasis won't be science or technology at all, but something artistic or humanitarian. Remember how the 50s begat the 60s; they brought on huge changes few could predict, and maybe we're on the verge of such changes again. What I ultimately want is a balanced education. With at least 50 years ahead of me, the world's going to change a plenty, and I want to change with it. No sense turning off the will to learn with 20 or 30 years left to live. These are the concerns on my mind, but with failing grades in classes I don't believe in, UCF won't listen to me at all. So what do I do?
  • I have to concur with MIT. I graduated RPI '98. Our program expected that you would learn your programming languages on your own. They were merely a tool to allow us to explore algorithms and problem solving in general. Just as MIT has "6.170", RPI has "Software Design and Documentation", where we are required to find a problem, find the customer and develop the thing from ground zero. We too spend most of our time in algorithm and pure math courses. I personally took only ONE course about programming languages, it was called "Programming Languages" and was actually about how programming languages are designed, and how to choose the right PL for the problem.

    My time at good ol' RPI left me with enough credits for a computer systems engineering minor, but the school doesn't allow CS major with CSE minor because of, "too much overlap".

    The MIT CS deptartment actually prides itself on the LACK of actual "practical" classes.

    I can't claim any departmental pride in our lack of "practicality". I can claim, however, along with MIT, that we produce good scientists and engineers.

  • Out of my personal friends, I can't say any of them are into computer games anymore. Some of them used to spend lots of time with the likes Moria and rouge but that was decades ago. On the other hand very person we have considered for jr positions at work is a gamer. Maybe a better question is "What makes the games you play good?"

    I think the best answer would be that of one of the ID developers "The computer is the game." With such a deep understanding of the game, I still wonder why they were shocked when the wolf3d maps were hacked.

    I have found that asking for a MS is a great way to screen out good talent. If you can't get into a decent school (MIT, UCB, etc) a Masters program could simply be more useless crud on piled on top of the other junk.

    I can say that I did not learn one useful thing about coding in any programming class I ever took. I did learn a few lessions. Like the "impossable" assignment in Systems class it to teach you to work with others. I messed that up by building a tool to batch the Ada compiler so it would complete its task more than 10% of time, and by completeing the assignment which was to write an "windowing os" in Ada that would run 4 processes in different windows in vt100ish terminal. The first thing the class was tring to teach was cooperation on your team. The vax could deal with 2 compiles at once. The second one would die after about 10 minutes. If you fired up a 3rd, all three died but one would work fine. I wrote a program that watched the virutal memory and would allocate and deallocate a block of ram based on the runnign state. Simple solution and about 1/2 the class started using my batching program -- the other 1/2 complained I was cheating. A lession leaarend but it wasn't about coding. The other part of the class was that one person would write the "os" and one person would write the "windowing" and since 4 different programs had to be running, the other team members would work on thouse. That was fine except that the os loader (which is the hard part) has to be done before those people at do their jobs so you end up with all the pressure on the OS guy till they are done with their job and then the few days before the project is due, everyone else starts to do real coding.

    A masters from the wrong school is worthless. For example I took Dr Lan's (at the Univ Missouri's CS department) C and Unix class. While appealing the grade, I had answered the question with exactly what was in the K&R book. Dr Lan said he didn't recoginse the book. One test question was "what is the unix shell", His only correct answer was "c shell" (which wasn't on 1/2 the machines used in the class) and he didn't even know what the Borne shell was. After posting some of his test questions to Usenet, I was shocked that someone with the uid of dmr at some place called bell labs couldn't even answer the questions correctly.
  • If you look at the scope of what is taught in calc, you will find that it fits in a small scope of problems that are basicly interesting to the engineering department and solvable. While I do use calc from time to time (a few times a year), I would have be much better off taking 2 years of advanced automata theory. I see it as an entire segment of mathematics that is close to being ignored by most universities.
  • by bluGill ( 862 ) on Monday November 06, 2000 @05:47AM (#648729)

    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.

  • When I was still at Brown's Computer Science department [brown.edu], I spent a lot of time working on designing the early stages of the curriculum. The tension between teaching the students the science as opposed to the programming was a frequent and recurring topic of debate.

    Most members of the department were in favor of the science-oriented approach (algorithms, language doesn't matter, etc.). However, the founder of the department (and the "power behind the chair"), despite being in favor of the science, pointed out that the department survived on enrollments. More enrollments == more money from the university. So the students have to want to take the early courses. And the most frequently cited motivation?

    "I want to learn to program so I can get a k3wl summer job."

    So you have to teach coding, or your enrollments go down, and the department withers. Hopefully, you can throw in enough of the science to keep the people that want the science, and enough entertainment to keep any of the coders scared away by the science (the founder, Andy van Dam, always taught the first semester programming course, and the class ran pretty much like a circus - Halloween saw Andy dressed up as a witch).

    So it's a delicate balance.

  • ... only the fundementals of programming.

    You can't learn to program from a course. You can only learn to programming by solving practical problems using a computer and a programming language. Of course, you need to learn the fundementals of programming but that doesn't not make a programmer.

    At my university [or what corresponds to college in USA], CS student are taught programming fundementals in Pascal (for the imperical part) and Java (for the OO stuff), but all also confronted with real problems for which they have to make a program in order to solve. This is by taking out nearly half the time of a term using on a dedicated project in which the students themselves have to find the problem and the theory needed to implement the solution. (Example projects range from `administrative computer system' and `expert systems' to `database query optimization').

    Students that are not confronted with such practical implementation problem will have a hard task cathing up because they will need to use their spare time learning to program real and practical programs!
  • Damnit, you're not an Engineer unless you operate a train!
    _____________
  • I got a kick out of how you described the situation (very familiar - I'm usually the one on the other side of the desk during the interview).

    I go to a fairly well known computing school (U of Waterloo) and this is something that always rears it's head during interviews. Our CS program is considered top-notch in the country (Canada) and as such we have quite a co-operative program that draws employers from all over N.A.

    One of the things I find is that people in the CS program are generally taught the 'problem solving method' and these people are grabbed up by the handfulls. The department also has 'coding' classes for the general university public, and it is these people doing the CS minors that end up going into the interviews figuring if they can cram as many languages on their resume that they will get the job. One thing that I've found however is that while showing a knowledge of various languages helps in showing employers how flexible you are, they are much more likely to appreciate previous work and concrete examples of being able to apply problem solving to different tasks. I figure if you can get the person you are interviewing to give you a concrete example of how they used some sort of innovation to solve a problem then you might have someone worth persuing.

    As other people have mentioned, it might help to ask an algorithmic question - it doesn't have to be that hard, and just leave the language up to the person being interviewed. It's pretty surprising what kind of responses you'll get. For my current co-op job my employer simply asked each person to write down a quick 10 liner that would write out the fibonacci sequence. Of course I just wrote it out in good ol' fortran - no questions asked. I got the job and after talking with many of the other people that had the interview they said that that question really threw them off - not that they didn't think it was a monumental task, just that they were not expecting to have to actually think about something instead of regurgitating their qualifications.

    I guess in the end though it really depends on where you go to look for employees. As many other people have said the quality of the graduates is highly dependant on the program that they have been through - and I would have to agree.

  • Around my old college, the familiar mantra is "I learned more from working at the Help Desk than I did in 4 years of CS/CIS." Sadly, I had to agree.

    Remember, not all helpdesks are equal. There's a big range.

    I worked at an institution where in order to maintain your position at the HD you were expected to carry out projects for the benefit of the computer lab, which sometimes involved programming, but which always involved solving some problem or meeting some need of our customers^H^H^H^H^H^H^H^H students.

    You know, the kind of stuff that many of us do for a living now. Helpdesk people who failed to branch out from basic user-assistance mode didn't last very long around that place. Its still the most enoyable job I ever had.

    OTOH, I am aware of many other places where the student HD staff is basically expected to keep the printers unjammed and occasionally re-image a Windows box, and that's about it.

  • The only thing that you can get from college that you cannot from real-world experience are those non-practical concepts that are applicable in some positions (like traditional engineering and design).

    I agree whole-heartedly, but I think the truth is even more general than that.

    If I could go back to college (and I don't mean if I went back now... I mean if I was 18 again and had those years of my life to re-live) I would taken more of those "non-practical" courses like philosophy, psych, linguistics, literature, history, etc...

    Unless you plan to become a professor in one of those subjects, college is the only time in your life when you can be totally free to devote yourself to learning such things. And most certainly, it is the only time in your life when you will have true experts (which might even include your friends as well as your professors) in these fields at your disposal. No one should waste such an opportunity.

    Learn how to code? Of course! Learn something about current technologoy? Certainly! But that's not all there is to an education.

  • I think this post grossly overestimates your average CS undergrad. I'm a CS minor at the university I attend, and I'm quite certain I could outcode most of my fellows in my CS classes (majors and otherwise) in my sleep. Why? I do my coding labs, rather than copying them, which is, so far as I can tell, the rule. Most of the students in the CS program don't like coding, don't want to code, and don't really know how to code, let alone solve a programming problem. A few decent coders would be a hell of an accomplishment in this school. Why are these people in the CS department then? Simple, they want the money, and plan to be hired as Help Desk staff and NT administrators and other various positions where they never intend to code.
  • 4 Foreign Languages (i will try to avoid these at all costs); 2 Social Science(Will not be history for me);

    Well, that's enough for me, I wouldn't hire you. Fleeing before knowledge is never a good sign.

    Knowing foreign languages helps you look at things from new angles, think clearly and objectively about what you're dealing with, etc. Far more than any Comp Sci class I've ever taken. I'd say the uni is doing you a big favour with those four languages. Assuming you don't just do the minimum of work to get a pass, but if you do that, you're shooting yourself in the foot, there's nothing the uni can do about it.

  • Both engineers and coders are needed. Perole absolutely need both skills in today's market, and this is something many colleges forget.

    Designs are, of course, Good Things. They do help create better software. But they must be considered a tool, not a crutch. I know coders who are utterly paralyzed if they don't have a design in front of them, and panic if they have a design but it ever changes. This is as bad as (if not worse than) not having a design at all. You've got to be able to design, yes, but you've also got to be able to think on your feet, because no design will ever solve all problems, just as coding blindly will never solve them.

    Bottom line: shy away from programs that teach coding but no design, but also avoid places that overemphasize the engineering aspect. You'll get good coders from the former, and good designers from the latter, but you won't get good programmers from either of them, because true programming has aspects of both.
    ----------
  • Alright, I never thought of that side of it. I was mainly focusing on why should I learn a language I will never really use. Also I noticed your English background is Europeanan due to your favo'u'r, is this a correct assumption?
  • I agree with your philosophy completely. But damn, man, how about working on the English?

    ...comptuers..programing...successer...theorom.. .compatable...equivelent...lanuga ges... knowlege...strore...progrmaing...beliving...

    What's up with that?

  • It sounds like you just want to chase high-paying jobs. That's fine, but I'd suggest that it's pointless to guess where the best opportunities will be years or decades from now.

    Figure out what you want to do, and then figure out how to make money at it. Don't worry about whether your starting salary will be $40,000 or $50,000 (or $25,000); focus on choosing a career path that will keep you happy.

  • I'm Canadian, actually. Either spelling is accepted here. My father is English, my mother American, so I'm not sure what that says about the origin of my English.

    I suspect it has more to do with the books I read as a kid, which were largely European.

Saliva causes cancer, but only if swallowed in small amounts over a long period of time. -- George Carlin

Working...