Catch up on stories from the past week (and beyond) at the Slashdot story archive


Forgot your password?

Questions to Ask University CS Departments? 114

egarrido16 asks: "I will be visiting numerous undergraduate colleges over the next several months and meeting with the chairpeople of the computer science departments. I need to come up with some questions to ask them so that I can evaluate their methods of teaching CS (i.e. 'Does this college believe programming is a fundamental or is it more of a tool?'). Reflecting upon your experience, what questions do you think would be necessary to ask to decide what the educators feel is important in a CS curriculum?"
This discussion has been archived. No new comments can be posted.

Questions to Ask University CS Departments?

Comments Filter:
  • Simple question (Score:5, Insightful)

    by sydb ( 176695 ) <> on Monday May 20, 2002 @06:31PM (#3554365)
    Can I see a copy of your curriculum please?
    • You mean there was curriculum??? Doh!
    • Not that simple (Score:3, Insightful)

      by Bastian ( 66383 )
      Ask whether the course is theory or application oriented. In my experience, there are two approaches to teaching computer science out there.
      The first is what I call the "academic" method. You're going to learn lots of theory under this method, but are left up to your own means to figure out specific tools such as the Windows API.

      The second I like to call the Trade School approach - it's probably what's being taught at your local community college, and it's pretty much the opposite. You'll be an expert at VB by the time you get out, but (from what I can see) will probably also be left without any concept of things like functional programming or automata theory or what have you.

      A catalog can tell you without a doubt whether or not you're going to get the Trade School approach - there will be a separate class for every programming language the department ever uses, and most every class will look like it's trained towards giving you job skills. However, there are a lot of CS departments that look like they are academically oriented when they really aren't. You'll sign up for a course called Computer Graphics that claims in the catalog to go through the basics of how to really do graphics programming, but when you finish the course, you'll realize that everything you just learned over the past four months you could have just as easily picked up with a few days of free time and a copy of "Teach Yourself OpenGL Game Programming In [lessons | ]" and don't have a clue what the math behind perspective projection looks like. (My experience.)

      Decide whether you're looking to be a grunt coder, a software engineer, an academic or researcher, or a Web Developer/NTadmin/networking guy/etc. If you're looking for the latter, don't even waste your time with college unless you really honestly want a bachelor's degree or a liberal arts education or what have you, because with most of those a trade school and some certifications will give you every bit as good of a preparation for your carreer as a BS, and you'll probably still have to get the certificates after you have your BS anyway. For a software engineer or academic, go for the academic approach. If you want to be a grunt coder, you can probably get away with any of the above, so pick which one looks more fun.
      • Re:Not that simple (Score:3, Interesting)

        by David Price ( 1200 )
        A good undergraduate computer science program should leave you flexible enough to go be a grunt coder somewhere, or (if your grades and motivation are good enough) proceed on to grad school, or really anything along the technical spectrum.

        Prospective undergrads should look for programs with an emphasis on broad study - a few theory courses, a strong course of programming-oriented project classes to develop you as a programmer, and interesting forays into areas like math and electrical engineering. Especially look for programs that allow upperclassmen to begin choosing their own path - my own degree requires a four-course concentration group agreed on between me and my advisor.

        One thing to look for is a program with no slavish devotion to any one language. By the time you've gotten out of a good undergrad program, you should have been thoroughly exposed to functional programming (Lisp/Scheme/ML/Haskell), OOP (Java's pretty much it in academia - nothing wrong with that), and imperative/systems programming (C/C++/assembly). The idea is that learning the languages should be a side project that comes along with learning the actual material. You should learn all the major paradigms in place today, and know when to use them, and know when to apply lessons from one when programming in another.

        The most important thing, by far, though, isn't what you'll find in the classroom - it's what you'll find outside it. Does the university have student organizations or programs for the type of stuff that meets your interest? Is the undergraduate culture an engaging and interesting one, with opportunities for developing your social life?

        How's the dorm life? How's the food? (This is actually really important, or seems that way at times.) Go down the hall of a dorm after classes are over, or during an evening: a good sign is lots of propped-open doors - it indicates an open, friendly floor culture.

        How does the administration treat the students, faculty, and staff? Ask around: if there have been any major controversies within the past couple years, people will talk about them. Remember that a school administration doesn't directly impact your learning, but they do have a tremendous amount of influence over your life while you're at school.

        Is the curriculum broad beyond just computer science? (Remember, theoretically, the reason you're going to a university is to improve your mind and learn about the world and discover yourself - not just to code all the time.) Ask people there. Did they like it? If they think it's a hellhole after three years, chances are you will too. A tech-factory isn't where you want to be if you're really out for a real education.

        One thing *not* to worry about as much as many people do: Don't overconcern yourself with money. Higher-tier schools know that they need to attract students who can hack it, and so many give generous need- and merit-based scholarships. Take the supplied tuition figures with a grain of salt, apply anyway, and wait for the financial aid offers to come in before ruling out a more expensive university. You might be surprised.
        • One thing to look for is a program with no slavish devotion to any one language

          SO true. For example, I've been working in perl recently, and have discovered the falsity of the statement that just about the only difference between most languages is syntax. It's amazing how minor changes in how a programming language handles variable scopes can fuck you up if you aren't expecting it. . .
        • Don't just go down one hall, go through multiple dorms that arn't special or that the tour guide takes you through. At my school the different dorms have different types of students, with different personalities, I.E. in my dorm we entered a Homecoming float, along with kidnapping birthday boys, where others are known for their Half-Life population or their drunks.

    • > Can I see a copy of your curriculum please?

      Yes. Better yet, visit their Web sites first and find out what their curriculum is in advance. Also find out things like what their lab facilities are, what their graduation rates are, what campus crime rates are, etc. (Some states require their schools to publish those last two items, though the schools don't always make it easy to find.)

      You may also be able to find the results of course surveys, and surveys of graduating students that will tell what kind of jobs they're getting and even how much their starting pay is.

      But the main point is, use the Web to research the programs thoroughly before you go, and then you can as a customized question set based on what you have found out (or been unable to find out) about each specific university.

    • this is not as great as you think it would be.

      my school's(gvsu) professors openly admit that they do not follow the guidelines and that the classes names misleading.

      your best be would be gather up a handful of seniors and ask THEM specific questions. not the honor students either, the guys in the back of the room. ask them, what do you think of Professor so-and-so? is this class about artificial intelligence REALLY ABOUT artificial intelligence? is it the depth you were hoping for?

      NEVER EVER EVER EVER E V E R believe/listen to the school. I'd trust satan himself over a college recruiter.

      (one discontented student)
      • My favorite was 'Hmm, you need an elective. Here, take Fortran, it'll come in handy someday.'

        I have yet to be in a situation where only my one quarter of experience in Fortran would come in handy. Apparently, he envisioned me being stranded on a desert island with only a Cray to keep me company, and it's instrumental in saving the Earth. Sadly, I'd probably screw up a loop and it'd end up infinitely saving the Earth from the same threat until it crashed, taking the Earth with it.
  • "Are yuo an AWP camping ***?"
  • by Anonymous Coward
    What percentage of your students are female?
    • this is actually a good point. my school, had flaunted a 7:1 girl to guy ratio(one of the reasons I chose it:)....

      however it should be noted, while we have one of the best known nursing schools in the US, our CS PROGRAM SUCKS. 2 or 3 good professors, the rest are hacks(not in a good way).

      it should also be noted that the 7:1 ratio doesn't apply to CS.... here it's a 1:10 ratio the other way:(
      • (* however it should be noted, while we have one of the best known nursing schools in the US, our CS PROGRAM SUCKS. 2 or 3 good professors, the rest are hacks(not in a good way). *)

        Oh so what. Go for the babes alone. It will improve your social skills, and maybe other skills in the process. "Soft" skills are just as important, if not more, as skills in Reverse Integral Recursive Multi-Linked B-trees blah blah.

      • What school is this... sounds almost like mine with a reverse ratio, the school has about a 4-5:1 male female ratio and about a 100:1 cs ratio, yes it sucks majorly, its what happens when you attend an engineering based school.
  • First of all, let me know if you are coming here (Caltech) -- drop me an email.

    What I have noticed here is that there is much emphasis on theory, which makes sense since Caltech tends to be a more research oriented school. However, they have all but eliminated practical programming classes from the curriculum, and not to mention the fact that there is no official CS major yet (supposedly they are working on it..)
    When I was a freshman, there were intro courses in C, C++, and Java. Now, those courses have changed to more concept oriented using (this year) Scheme, Modula3, and Eiffel.
    The department's philosophy seems to be that if we teach you the "fundamental concepts" of programming, you can program in any language.

    Separate from the Computer Science Theory side of things, the CS department has a large graphics component, which you could say is a more practical representation of research than pure theory.

    So, for questions, I think you should ask ones along those lines. Whether they are taking a practical stance or a more theoretical one...
    • What I have noticed here is that there is much emphasis on theory,

      What is old is new again... We had this debate in '83 and '84 at UC Santa Cruz. The administration was theory oriented, the students wanted some more practical classes. I was one of the leaders of the student movement at the time.

      Of course, the department was correct.
  • by Dr. Bent ( 533421 ) <> on Monday May 20, 2002 @06:41PM (#3554451) Homepage
    The most important question you can ask is:

    "Does your school have different curriculum tracks for software engineering and computer science"

    Learning the basics of how to program will be the same for both tracks, but the 3rd and 4th year classes should be very different. Computer science, is a SCIENCE, while software system development is something else entirely. Schools that don't recognize the difference are so out of touch that the knowledge they teach you will not be applicable in the real world.

    Software is no longer just a tool for mathmaticians to solve complex equations. Unfortunatly, I think many CS professors are still locked into the scientific mindset when it comes to computers.
    • *Exactly*, it's sad that I was trying to explain to my friend -- a second year CS major at the Univerity of Iowa, that CS was a science. And he replied with "no, CS majors are programmers and the like".

      I wonder what CS/CE will be like in 20 years, with people like this entering the field for the past 10 years or so.

      I honestly don't think you could ask any high school student coming from the current high schools what CS was, and get a valid reply. It's almost pitiful how the field has been is equated with that 70k/year job working for `Excite' doing basic web work 3 years ago, and even a great deal of the CS majors don't understand the diffrence.

    • > Computer science, is a SCIENCE, while software system development is something else entirely. Schools that don't recognize the difference are so out of touch that the knowledge they teach you will not be applicable in the real world.

      You do well to raise the distinction between SE and CS, but IMO the point above is overstated.

      At my alma there is no SE program and many of the CS professors are interested in CS qua science, but IMO almost every required course in the curriculum contributes to making a better general-purpose ITer out of you. And that includes the rather lightweight "theory" classes usually required of undergraduates, such as discrete math, data structures, and algorithms.

      Granted, there were still people who whinged "I just want to be a programmer" when faced with a class on hardware organization or OS design. Frankly I have no sympathy for them unless what they really meant was "I just want to be a third-rate programmer".

      Also notice that the classes that provoke the most whinges are not generally the science classes.

      > Software is no longer just a tool for mathmaticians to solve complex equations. Unfortunatly, I think many CS professors are still locked into the scientific mindset when it comes to computers.

      That is not, by and large, what CS professors have in mind when they talk about the "science" in CS. For the most part they mean "theory", though in some sub-fields there is a very strong empiricism as well.

    • I could not agree with this more. As a recent entrant in the SW Engineering field, I would also say that one of the most important things the curriculum should stress is all of the parts PRIOR to actual coding

      I know this horse has been beat to death, but so many courses do not even focus on requirements analysis. For a Software Engineer, this is the foundation of all work you will do. You want to be sure they give you hands on experience in breaking requirements down to the atomic level. Don't forget, these requirements are a contract between you and your employer, so make sure they are sane.

      Next, you want them to teach current methods of design -- the part where you integrate your many, hopefully simple by now, requirements and turn them into a working concept.

      Be sure you get experience in creating all types of design artifacts: sequence diagrams, detailed design documents, and requirements to design mapping. This is the stuff you will be expected to do in your career. It's best to know as much as possible about it before you enter the workplace.

      The other phases (implementation, testing) are important too, but I've found that a little understanding in the early phases will count for a lot later on.
      • The other phases (implementation, testing) are important too, but I've found that a little understanding in the early phases will count for a lot later on.

        I heartily agree. I have recently decided to start a rather large programming project, and while I could sit and code for hours everyday, the hardest part of it is not the coding, it's the design!! Most "programmers" I have met have absolutely no idea what differentiates a good design from a bad one.

        This distinction becomes especially obvious when programming a game, where everything relies on everything else, and having one central class that controls everything becomes a nightmare.

        Of course, everything changes when you program an office app, but design rules still apply, and you can reap substantial benefits by reading a few *good* design books.

        • A question: Can you recommend any good design books?
          • Design Patterns : Elements of Reusable Object-Oriented Software
            Authors: Gamma, Helm, Johnson, and Vlissides
            Publisher: Addison-Wesley

            One of best design books on the planet, but it deals more with micro-design. With this book, and a good amount of coding you should be well on the way.

            Large-Scale C++ Software Design
            Author: John Lakos
            Publisher: Addison-Wesley
            ISBN: 0201633620

            Haven't read this one, but it comes highly recomended. You might also try []. If you look enough, you might be able to find something.

    • Perhaps SE versus CS is a little narrow, but I like the spirit of the thing.

      Ask them what they think the purpose of doing a degree in Computer Science is. Ask several different professors and students; academic departments are not homogeneous. See if the answers sound like something you would want to do.

      Ignore the promotional blurbs and "vision statements" put together by overworked, well-intentioned secretaries and administrators. At least in North America, these will have little influence on your experience.

  • Which is more important:
    a)Education or
    b)Collecting tution money?

    • You'll never get a truthful answer if you ask the question that way.

      Try, "Can you expound on the backgrounds of your professors?"

      Find out about the people who will be teaching you. Do they like programming? Do they have industry experience? Are they algorithm freaks? Are they fresh out of grad school? Why do they teach if they can make a ton more outside of school?

      Try to figure out what you want out of school and find the school whose professors are aligned with that thinking.
  • Future (Score:4, Insightful)

    by D.A. Zollinger ( 549301 ) on Monday May 20, 2002 @07:02PM (#3554599) Homepage Journal

    Make sure you ask some questions about your future, is it possible to get a sysadmin job on one of the comp. sci. computers to get real world experience? How good is their placement after graduation? How quickly do their graduates advance in their positions after finding employment? What projects is the department involved in that will bring prestiege to the university? What projects can I as a student get involved in that I could put on my resume? What is your stance on extra-curricular projects?

    I put that last one in because I started a MUD at my university, which was a great learning project programming wise. I never got very many people visiting my mud, but I did enlist a lot of developers to help put the project together. My school shut me down when the university administrator did a port scan of every IP under his control and found it. He considered it a security breach and dangerous, no matter how beneficial the experience was to me in learning C, C++, Linux, registering my own domain (this was before they had the nice web interface), and administering a Red Hat box.

    How can you get real world computer experience while spending 4 fine years at their institution? And how will they provide you a better chance at getting a well paying position after school?

  • Do you put an emphasis on ethics, or do you just give the tool without a warning ?
    Do you encourage students to share information ?
    Is your department mostly funded but large corps. ?
    What do you hope your students will learn when they gradute ?
    • I can figure out what the answers to 1, 2 and 4 should be, but what should the answer to 3 be? Is funding from large corporations good or bad as I can see how it'd be both.
      • Answer to 3). I know that in the case of my eduation. My uni is funded by: Bell, Nortel, intel .. and other companies that rythm with "poubelle". Found that my education was limited to what they wanted us to learn. I mean, most graduates only know the windows environement. Not enought emphasis is put on free software. Most ppl graduating don't know how to use emacs.
        I understand that funds are needed. But I also think that using Office (that is M$ and not 'open') or using visual studio or Windows (not Lin but M$) makes the problem of piracy bigger, because students cannot afford that software at home.
        Basicaly what I am saying is funding is needed and should only affect research, and not education especially at an undergrad level. Ppl should have the skills to fly on there own without needing to dish out big bucks for the software that they need.

        Sorry if most of that sounded like disconected ramblings.
        • When you say, "Most ppl graduating don't know how to use emacs," are you trying to say that the University should be a Unix training ground? Are you of the opinion that a CS curriculum should expose the student to a wide array of technologies?
        • Most ppl graduating don't know how to use emacs.

          well there's a refief.

          acme & wily == the future

        • Funny, 'cuz my University's computer science department is also commercially funded (CSU Chico; funded in particular by HP and Sun, among others), and we don't have the problems you discuss -- in very few cases do any classes require anything not included in the Linux systems CSLUG puts together.

          I don't think it's a problem with corporate funding, but rather with how your department is run.

          (For that matter, though, I disagree with your first point -- I don't go to class to be yammered at about ethics; rather, I go to class to learn about OO design, or whatever the course happens to be about. I think that having an "emphasis on ethics" is bullshit -- you can't train ethics into 30 people at a time; people are ethical or they aren't, and classes or tests will have no effect on it whatsoever other than wasting students' valuable time).
  • This is desperately needed in CS courses. Here at SFU [], they don't force you take a first year english course. The core computing science courses are great. That is the reputation of the school. Great technical expertise, weak communication skills. The reputation is well deserved.

    These kinds of skills would help tremendously in the work force and in graduate school. You always here complaining about coders not knowing how to comment code. Not being able to stick to schedules. Not being able to write good documentation. Not being able to attain correct specifications from the customer. Etc, etc, etc.

    • Woops, did I mention bad proof-reading skills. The correct link is: SFU []
    • ... they don't force you take a first year english course.

      ...they don't force you to take a first-year English course.
      You forgot the preposition on the infinitive; probably a typo.
      In English, all noun and adjective forms of the word English are always capitalized.

      The reputation is well deserved.

      The reputation is well-deserved.
      When you form a single, inseparable adjective out of more than one word, you must hyphenate the words; eg, well-deserved reputation, first-year course, thirty-year-old professor, etc.

      You always here complaining about coders not knowing how to comment code. Not being able to stick to schedules. Not being able to write good documentation. Not being able to attain correct specifications from the customer. Etc, etc, etc.

      You always hear complaints about coders not knowing how to comment code, not sticking to schedules, lacking communication skills, not attaining correct specifications from customers, etc.
      "Hear" and "here" are completely different words.
      Avoid the passive voice.
      Avoid sentence fragments.
      Etc, etc, etc is a cliché; it was funny in The King and I but shouldn't be over-used.

      Normally, I don't go off correcting other people's grammar (it's fast way to piss off people - watch my karma drop to 47 for a demonstration), but when you preach the importance of good English skills while at the same time displaying poor grammar, you are, as they say, "asking for it."

      If you are a non-native speaker, your English is excellent (much better than my foreign languages); I would recommend picking up The Chicago Manual of Style which speaks about some of the finer points of formal, idiomatic English. However, if you are a native speaker, please don't preach about the importance of good English as it only discourages those who had to learn it as a second language.

      • Normally, I don't go off correcting other people's grammar (it's fast way to piss off people - watch my karma drop to 47 for a demonstration)...

        Regarding your parenthetical: it's not good way to express your thought. Nine out of ten snobs love 'em.

        I would recommend picking up The Chicago Manual of Style which speaks about some of the finer points of formal, idiomatic English.

        Are you being sarcastic here? This flacid prose makes the passive sound like Hemingway. It speaks about?! 'Speak to' would be much more idiomatic here, in keeping with your naive, pedantic, i-believe-everything-i-learned-in-3rd-grade-gramma r-class attitude.

        Perhaps you are a grammar teacher. They always are the worst writers. If only slavish obedience to rule conduced to good writing...!

    • But I are the communication skills needed by software engineers the same as those required by computer scientists ?

      The communication infrastructure in most corporations still seems to be very hierarchical - diplomacy and a suitable amount of arse licking/covering are prerequisites for actually being able to influence what happens at any level, including the technical.

      I've heard that academic environments are just as political as business ones, but I still have the impression that *teamwork* ( and the attendant communication ) is not as important a skill in academia as in business.
  • by Sits ( 117492 ) on Monday May 20, 2002 @07:25PM (#3554762) Homepage Journal
    One things that I noticed when I was looking about for a place to study was that departments were keen to point out the sheer number of computers they had. If you are not planning on doing all your work on your home machine (and why should you?) it far more helpful to know the number of useful computers. Talk to the students in the room. Ok one of them might have an axe to grind or they may have all been specially selected but if the room is busy this is less likely. Whatever you do don't just stand there like a lemon when you can talk to real students - after all that's going to be you in a year. Many students are willing to talk but won't volunteer information. It leaves an impression of you too (someone willing to ask irritating questions or someone who genuinely interested in the department)...

    Some of the things that make a computer unuseful:
    1. It's broken. This happens an awful lot and can happen in non obvious ways. Ranges from it doesn't power on to it doesn't see the printer.
    2. The network is too slow. This one is a killer at busy times of the year and doesn't just apply to logging in. If your uni/college's connection is unreliable and you are trying to fetch something from home it doesn't matter that it's fast...
    3. The computer doesn't have the software you need on it. It's all very well having a library of hundreds of computers but if the software you need is only in the Compsci lab your options are limited.

    Most important of all computer counts really mean very little in terms of your education. Theory doesn't always need you to be sat a keyboard to understand it.
    • this remided me of another good point; most schools give a student:computer ratio..

      my school's ratio was 1:10(one of the top 10 more wired campus' according to yahoo.)

      it should be noted that the people who did the study were hired by the school and complete scum. they counted ever gvsu OWNED computer, including professors office computers, secretaries, the scrap heap in IT.... if it could 'turn on,' it counted. Check and see how easy it is to get a computer in the main lab around lunchtime during midterms. THAT'LL be a good way to find out.

      this should make your choice up, but it should give you an Idea how full of shit the schools salesmen are.
      • Don't forget that some colleges give students computers. At Wake Forest [], everyone gets a new IBM think pad every two years. (Perfect for formatting and installing Linux, I might add).

        Also, you should ask to see the CS student lab areas. We have many (Windows/Mac) computer labs for undergrads, but only 2 for CS students (various unix machines).

        The most important thing is to meet current CS students. Go to a class or two with them, ask about good and bad professors and classes, etc. Talking with the students at a college is the best way to see what a school is like without being fed all the BS by the admissions people.
  • One thing I ran up against at my college (Dartmouth College) was that you get no credit at all for summer internships. This might be something to take into consideration, as with CS, or really any field, you get lots of valuable experience from actually doing some of the stuff. If the school doesn't give you credit for summer internships it may be a sign that they don't value the same kinds of things you do. I know in my case I was extremely pissed to find out that an internship at Computer Associates, one of the world's largest software companies (which I didn't even get, btw) is worthless in their eyes.

    Also, you may want to ask basic stuff like what language the various classes use. During orientation (in 1997) I asked the CS department if they taught any classes in Java. The answer was a forceful "NO", they "don't just pick every new language that comes along." 2 years later, all intro classes are apparently taught in Java, and I was left not knowing Java, only lame ANSI C. I got turned down for several internships for simply not knowing Java.

    Questions like that should be common sense anyhow.
    • You sound like you would be much happier with a trade school, or perhaps a copy of "Teach Yourself Java in 2 Days and Seven Minutes!!!!!!!!!!!!!".

      Your excitement over how "large" a software company is, and the "worth" that being associated with said company should project, is reminiscent of those who associate Microsoft Windows, or any other common application, with high quality, simply because it is nearly omnipresent.

      And your complaint about "not knowing Java" is simply ridiculous. If you supposedly had a CS degree, what on Earth would be so complicated about learning Java, or any other language/environment that you felt like? Sheesh, I quit high school a year early, haven't gone to college, and I picked up every language I know on my own, well enough to get hired by Sun Microsystems and then a startup (and get laid off when the startup ran out of funds, but that's a separate story). I don't see what excuse you have.

      Sure, you may claim that I'm "missing the deeper aspects of CS", but that's exactly my point. Basic programming should be a prerequisite to a good CS curriculum. And once you have the basics down, you should be able to pick up any language you have a mind to. Computer science focuses on algorithms and theory, not tools and the mundane details of platform-specific implementation.

      And to those who would claim that I'm an inferior programmer simply because I don't have a college education, I will dispute that most strongly. Sure, I can learn more, but everyone can always learn more. And quite frankly, and without any desire to be arrogant, I am more concerned about theory and correctness than most people I have met.

      That's why I have been and am still reluctant to "just go to school", as people suggest to me. I've been in high school, and everything was about the mundane, the platform-specific, and the largely irrelevant: don't learn how calculators work or how to translate a problem into a machine-solvable form, learn the sequence of buttons to press on a TI-83; don't learn basic elements of typesetting and page layout; learn how to set margins in Microsoft Word. From what I've seen, college isn't any different. I hear all the time about schools blocking ports, teaching only Java APIs on Win32, or refusing to accept papers in anything but Microsoft Word format (even in math-heavy subjects!). That doesn't interest me. I'd rather spend the time going through the textbooks I've picked up, slogging my way through Knuth, and actually trying to learn the theory. The fact that this should be what an educational institution would give me is, I think, a very sad statement about our society and what we expect of current and future generations.

      • Your rant makes you sound like you have a chemical imbalance and you may need to see a psychiatrist.

        I was responding to someone who asked "what questions should I ask of a prospective college's CS department?" I responded that you might want to check whether or not they give credit for internships. This, to me, allows you to see the mindset of the school itself, how much they value real-world experience as compared to classroom experience. Any school that values only one and not the other is dysfunctional, in my opinion.

        And quite frankly, knowing the language du jour is incredibly valuable, and picking up Java, or any other language, in your "spare time" in college is so preposterous that it only serves to make you look foolish for even suggesting it.

        Also, I find it somewhat amusing, and a bit said, that you follow this: Your excitement over how "large" a software company is, and the "worth" that being associated with said company should project, is reminiscent of those who associate Microsoft Windows, or any other common application, with high quality, simply because it is nearly omnipresent. with this: I quit high school a year early, haven't gone to college, and I picked up every language I know on my own, well enough to get hired by Sun Microsystems. So big-named companies don't mean anything -- except those for which you've worked?

        To make my point absolutely clear, I do not care how good a programmer you are. If you are taught to program in VBasic, you probably won't be able to pick up Java in 24.2 hours or whatever the book is entitled today; and that's irrelevant anyway. Someone asked how to find the CS program that best suits him. I offered him some advice. You seem to have taken this as an opportunity to extol the virtues of dropping out of high school and learning programming from books. I won't bother to address this argument itself, but the fact that you responded so vehemently and with such an off-topic rant indicates to me (definitely not a professional) that you really do need some psychiatric help in dealing with your anger.
        • You're just one of those idiots who doesn't understand CS. There's lots of 'em, even in the upper level CS classes I'm in, and it's obvious. When we have to use a special language to do an assignment, there are people that learn it (we have less than a week, usually) and write something that works properly, and there are people that still make basic syntax mistakes. I suspect you would be one of the latter, but I hope that you don't expect other people to take the path of the people who really don't get it. Everyone should try learning CS. Learning the language of the week is for people that can't cut it.
        • I quit high school a year early, haven't gone to college, and I picked up every language I know on my own, well enough to get hired by Sun Microsystems. So big-named companies don't mean anything -- except those for which you've worked?

          That's fair. However, there's a slight bit of relevancy, because my job at Sun was Java programming, and hopefully the creators and main promoters of Java have some relevancy in determining Java competency.

          To make my point absolutely clear, I do not care how good a programmer you are. If you are taught to program in VBasic, you probably won't be able to pick up Java in 24.2 hours or whatever the book is entitled today; and that's irrelevant anyway.

          You seem to be missing the forest for the trees here. Of course if you're only taught 1 language, be it VB, C, or MIPS assembly, you'll have difficulty moving to another. My entire point is that schools shouldn't teach only 1 language, but the entire pantheon, covering all styles (imperative, functional, etc). This makes the language du jour irrelevant, as it is merely another concrete implementation of the abstraction you have learned and have a solid understanding of in your own mind.

          In fact, a CS curriculum shouldn't even focus much on the programming language. Obviously, sample implementations of exercises and such should be provided, but years on end of learning the C language and its standard library, or the Java language and its standard library, are a pathetic excuse for a CS program. Computer Science is a different discipline than Computer Programming. There is a huge amount of overlap, but as I stated before, anyone attempting Computer Science as a formal area of study should already have a basic grasp of computers and their software.

        • And quite frankly, knowing the language du jour is incredibly valuable, and picking up Java, or any other language, in your "spare time" in college is so preposterous that it only serves to make you look foolish for even suggesting it.


          As I said, I haven't gone to college, but the fact that it seems as if it would prevent you from learning anything even the slightest bit outside the official curriculum is making me less enthusiastic about ever trying it.

          I'd just like to note that I learned Java in my spare time in high school (I'm guessing freshman year, when the world is a very strange and confusing place). I found one of Sun's very early basic Java training guides (one that refers to HotJava 0.9, etc) and just went for it. And I kept coding.

          You mention later in this thread that you were forced to get a job answering phones. I don't really have much sympathy, considering that I'm stuck in retail selling furniture right now. A coworker of mine was a Navy reactor operator, got a BS in CS, and is now a stockboy. Another coworker completed most of an aerospace engineering degree (and possibly completed an MIS degree) and is now a cashier.

          I'm still coding [] (although sadly I haven't gotten some of my more recent projects posted yet). In my current job, I implemented an (admittedly somewhat simple) application [] in Scheme, on my PDA, in the tiny little 15min breaks I get, over the course of a week and a half or so, just to make my job easier and for the fun of it. I've just about finished a second and more complex app, in the same circumstances. And I'd never used Scheme before, nor programmed for PalmOS.

    • Re:Some thoughts (Score:2, Insightful)

      by Zeio ( 325157 )
      Try telling Linus Torvalds ANSI C is lame.

      I second vsync's notion that those who use higher level languages can never use them properly because they do not know what these higher level languages *DO* for them

      I have run into it time and time again. Decades have gone by and still the most rigorous CS departments do some of the very same things. Like, write a language and a compiler for that language. People who know how to write their own language and then a compiler for that made up language often find it very easy to pick up new things.

      I can't believe for a moment that one learns "lame ANIS C," for real, then goes on to find Java difficult to master. I mean, by no means is it simple, and the strategy for using that is different, but Jesus - grab a few books and crank out some code if you want a Java job.

      If I had to assign aspiring students to do something it would be this: Write a patch for a Linux kernel (or any Open kernel), write a user land utility to interface with whatever you patched into the kernel, the write a daemon to interface with the kernel hack you just wrote and then manage that daemon remotely from the said user land utility. Man, if every "programmer" did that as an exercise, we would reduce sucktitude 90%.

      Then try to control the said daemon from a Java project - just for fun, to learn it.

      One thing about "LAME C" versus C++ or Java, at least C doesn't change forms every 5 minutes. Much less with C++ now, but Java has had a myriad of APIs since its birth and it really get annoying after a while.

      Good luck man, because if your C didn't teach you C well enough (as exemplified by referring to it as 'Lame,' you need to take it upon yourself to make sure you know systems, bottom to top, because when and if you do learn Java, chances are you wont be very good at using it. For all the rigors or my own education, most of your usefulness in corporate America will come from things you taught yourself or pickup from a mentor. School apparently doesn't do much for your starting salary, as freshly gradated students usually get paid less than everyone else. It's experience and aptitude that changes that - not "I TEWK A KEWL KLASS A THE UNIVEHRCITY AND TEHY TEECHED ME JAVA AND MI SI BETTAR!"
      • For god's sake, why is everybody harping on this one line!

        I can't believe for a moment that one learns "lame ANIS C," for real, then goes on to find Java difficult to master. I mean, by no means is it simple, and the strategy for using that is different, but Jesus - grab a few books and crank out some code if you want a Java job.

        It was the summer after my sophomore year in high school. I applied to several internships and was turned down for most of them because I didn't know Java. This is not to say that I couldn't learn java, it means that I didn't know Java at the time I applied for the internships. If a school is only teaching students programming in MIPS assembler, does that also mean they instinctively know Java as well?

        In 1999, after I ended up getting a job answering phones at a real estate office because I couldn't get an internship, I browsed through the want-ads and surprise! Very few people looking for C programmers, and Surprise! tons of people looking for Java programmers. And please, don't tell me Java and C are identical. You might be able to make a case for Java and C++, but the only real relation between Java and C is that they're both procedural languages, and they have constructs like for(), while() etc.

        In any case, if your idea of a freshman CS course would be to have them write a kernel patch, then please let me know where you teach so I'll know to never allow anyone I know to come within 10 miles of the place. I mean really, that's a completely ridiculous idea. Maybe for a senior-level or grad-level class, but most freshmen barely learn linked lists and arrays. Within 2 courses of completing my CS major I still had not had a single class that even mentioned threading. Forking? Never heard of it. We didn't deal with networking or sockets until Junior year. You expect these people to write a kernel patch? Or even understand what a kernel is? Regardless, you didn't attend my school and so you really have no way to judge the CS program there or my assessment of it.

        In any case, while you may not agree, and I'm sure you can cite famous users of the language to me for hours on end, I will continue to assert that C is indeed lame, and most of the arguments why it should still be used would also apply equally well to why we should be writing everything in assembler.
        • Maybe for a senior-level or grad-level class, but most freshmen barely learn linked lists and arrays. Within 2 courses of completing my CS major I still had not had a single class that even mentioned threading. Forking? Never heard of it. We didn't deal with networking or sockets until Junior year. You expect these people to write a kernel patch? Or even understand what a kernel is? Regardless, you didn't attend my school and so you really have no way to judge the CS program there or my assessment of it.

          Not to be flippant, but from this passage it kind of sounds like it sucks.

          • Not to be flippant, but from this passage it kind of sounds like it sucks.

            Actually, this is quite true. I found the CS program to be pretty awful. The reason I picked the school was because going into it I was planning on majoring on mechanical engineering, but I at least had the sense to realize I'd probably change my major at some point, so I picked a school that had a wide variety of courses and majors. Unfortunately, as I said, I found the CS program to suck. I believe the full pricetag for my school was in the $32,000 / year range (I was only able to attend with a hefty financial aid package) and probably 1/3 to 1/2 of my CS classes were taught by "visiting professors" from schools like SUNY Albany, or University of Maryland. While I have nothing against either of these schools, if I wanted to be taught by a SUNY prof, I would have attended a SUNY school and as a resident of NY state gone basically for free. Actually, for a school that prides itself so much on its teachers, I probably only had 2 or 3 good profs in my CS classes. Looking back, Dartmouth was probably a big mistake, but hindsight is always 20/20. I had also been accepted to Columbia University's engineering school, and I can only wonder how things would have turned out if I had gone there.

            This whole passage was pretty off topic, I know, but this was one of the reasons I even responded to this guy's question at all. As someone who went through (IMHO) a pretty crappy CS program I thought I could offer some advice that would prevent someone else from doing the same.
    • I know in my case I was extremely pissed to find out that an internship at Computer Associates, one of the world's largest software companies (which I didn't even get, btw) is worthless in their eyes.

      There's a lot more to life than semester-hours of credit, dude. I hope you valued the time that you spent at your internships and that you got some personal satisfaction out of the work you did, because in the end that's what really matters.

      OK, you probably want your future employers to value your internships too. But IMHO that's secondary to you enjoying them. Because if you don't enjoy that kind of work, you gotta wonder why you took the internship or why you're even taking CS classes. The money?

    • Same thing happened to me. I go to WVU. When I started in 1999, all intro classes were taught in ADA. One C++ class was offered, and one other class touched on C for a few weeks. Now all intro classes are in C++. No java classes are offered to this day. We do get credit for internships however, even if it is empty credit.
    • Reinforcing the notion Java isn't everything: []
      C++, SQL, Unix and C are key skills - still
      By John Leyden
      Posted: 21/05/2002 at 18:35 GMT

      Fewer IT jobs were advertised last quarter than a year ago but programmers with key software skills are still very much in demand.

      That's the conclusion of a study of the UK IT recruitment market by CWJobs, The Register's recruitment partner.

      CWJobs compiled a very big list of all the software skills asked for in job ads, published online and in print IT rags, and the broadsheet nationals, in Q1.

      Experience in C++ (mentioned in almost 24,844 ads in Q1 2002), SQL (23,134), Unix (21,079) and C (20,532) were highly prized.

      Requirement for C skills is holding up but mentions of other once sought-after skills was down 50 per cent from Q1 2001. This reflects an overall slowdown in the IT sector, CWJobs reckons.

      Oracle, Win NT, Visual Basic and Java were each mentioned in more than 10,000 ads. However, demand for Java skills has slipped markedly from 40,681 mentions in Q1 2001 to 14,566, a decline of 64 per cent.

      The number of jobs advertised last quarter is lower than that advertised in Q4 2001, but this may be affected by seasonal factors in the job market.

      Online ads account for the vast majority of ads in Q1, reflecting a long-term trend in the UK IT jobs market. Which is nice. For CWJobs. For Computer Weekly, from whence it spawned, it's crap.
    • and I was left not knowing Java, only lame ANSI C. I got turned down for several internships for simply not knowing Java.

      If you have taken CS classes and learned C (enough to know it), you must be able to easily learn any procedural or object-oriented language. If you can't, you are stupid and this is your problem.

  • by gagravarr ( 148765 ) on Monday May 20, 2002 @07:34PM (#3554830) Homepage
    Sure, the course is important, but you'll likely find that half the places have virtually identical courses.

    So, start asking about related things. Are you going to want some work experience? If so, does the department have industry links, and with who? How about on campus work - do they have openings for students to do some tech support? My college [] has a couple of student computer reps [], who do some websites, maintain a few machines, help out the paid staff with admining etc. The experience I've got with doing this was looked upon very favourably by the company that are employing me this summer. No matter which area of IT you want to go into, experience is a big help, so does this place help you get it?

    Finally, ask about the facilities. How many computer rooms do they have, and what stuff do they have on them? What centralised 'Nix facilities do they offer? Ethernet to you room is very nice, so do they offer that, and if so what restrictions are placed on it (no webservers? low bandwidth limits?). What about their central web hosting, can you do much with that? If not, are there any other boxes you can use for any dynamic content you want to play with?

    Oh, and while you're on campus, go look round the other facilities too. Places to hang out are important, as are sports facilities, on campus shops etc. Also, speak to the students as well as the tutors, find out all you can

  • Here's what my cirriculum looked like.
    Basic Programmin Course: same as everyone in an engineering program took. Students can test out with AP.
    Advanced programming course: OO, threading, etc.
    Algorithms. Discrete Mathmatics. OS (two semesters). Comparitive programming languages. Networks. Software engineering. Computer Organization (Assembly). Digital Logic Design. Databases, Graphics and AI were electives. We also had a senior level seminar with discussions with local programming experts from IBM and Bell labs.

    This was at West Point back in 1989-1993. The big push was on ADA, so we kind of missed out on the C coding, which I felt was aweakness. They focused more on Pascal and Ada. The copmaritive languages class was vital in overcoming the language bias.

    Also, Our OS course focused on the Design of OS/2, which in Retrospect was a big waster of time, but back then was expected to be the next big thing.

    To graduate, we wre required to take 40+ courses of 3 credit or more. A baseline CS degree was 44 courses, slighly more than half were in the CS cirriculum. Core Math/Sci?eng courses were courses were: 2 Semesters of Physics, 2 Calculus, 1 Diff Equations, 1 Prob and Stats, 2 Chemistry.

    Hope this helps.
  • by nadador ( 3747 ) on Monday May 20, 2002 @10:12PM (#3555609)
    For whatever else I learned in college, I learned the most from the capstone courses I took my senior year. I was an ECE at CMU, but took a capstone in ECE and the equivalent in CS. Both were big project courses (Real Time Computer Controlled System Design in ECE and Operating Systems in CS) and both nearly killed me. But I can honestly say that I learned so much by being forced to work on a semester length project.

    If you go somewhere and ask about a capstone course, and they look at you funny, ask if there's a course that you take that your whole academic career has been preparing you for, or some sort of big final project where you have to creatively use your skills as a scientist and as an engineer. That's what people do out in industry, anyway, so it should be part of the curriculum.

    I'd also ask about what faculty research that the department head is particularly proud of. If its something that interests you, this place would probably be a good fit. If not, you might want to look elsewhere.
  • This is a bit more general than what you asked, it's essentially a list of the "Do I want to go here?" interview procedure I used.

    - What kind of computing facilities are available. Specifically what does the CS department have available exclusively to it (for example at my school (Hofstra University - there are two dedicated CS labs, one with Windows PCs and one with Sun workstations.

    - The background of the professors. It always helps to find a department with professors interested in the same things you are. Also don't forget to check out the ADJUNCT FACULTY (some are good, some suck).

    - Do professors teach classes? or are you stuck with TAs until you get to upper level courses?

    - How do people who graduated from the CS program do in the job market?

    - What are the other students like? Go during the semester (a little late now, but try the summer session students). TALK to the students, find out how they feel about the CS program, professors, etc.

    - What language is used in programming courses? (If there arent any programming courses, RUN AWAY!) My idea of "acceptable" answers are C, C++ and Java. VB, Ada, Pascal, Fortran, FORTH, COBOL and BASIC should send you running. Lisp should make you cower in fear (although you'll probably see some of these languages in a programming languages course later on...)

    - Theoretical or Practical view of CS? Theory loads you up with algorithms, practical teaches you how to implement them in one or two languages. My preference is the theoretical methodology. Anyone can learn a programming language, but algorithms are fundamental.

    - Anything else you want to know.

    • How come I never think of these things when I post my FIRST comment? D'OH: - Who teaches the Discrete Math (Discrete Structures) courses? At my school it is the CS department, but some schools pass this off to Math professors who have no CS background and don't teach the course geared toward CS students. - Do the professors speak English (or whatever language you do?) - DONT flame me, it's a real problem. Many of our professors have accents that take a few classes (or longer) to get used to. Try sitting in on a class or two if you can, and make sure the professor is CLEAR, LOUD and WILLING TO EXPLAIN things to students. (OK, I'm done now...)
    • My idea of "acceptable" answers are C, C++ and Java

      ...I agree, but I'm not sure this is an either/or situation. You should HAVE to program in C/C++, whether or not you use it in the job market, it's probably the most well known and powerful language out there at a professional level.

      VB, Ada, Pascal, Fortran, FORTH, COBOL and BASIC should send you running, all but Fortran. We used it in my freshman engineering courses. It's a good introduction to functional problem solving languages, great for math, and, while not used anymore, lots of people the generation above us ('us' being late teens, early 20's) used it and will respect your knowledge of it. If a college teaches VB, congratulations, you're now a Management Information Systems (MIS) major.

      Lisp should make you cower in fear

      ...completely disagree. Oh, you'll cower in fear, but you need to learn LISP at some point to realize how nice other languages are :) Not to mention if you ever take an AI course or study genetic algorithms, you will be exposed to LISP/Scheme. It's not that bad, and it actually DOES have some interesting uses, such as writing good,compact code (bad LISP code is...)

      Just my $.02

  • I'm not in a CS major, but this is one question that can be applied to any college search for any major.

    Is there a Graduate program with-in the same department?

    Now you're wondering how this applies to an undergraduate education. I have been told by many people and found evidence that a lot of programs with graduate programs will give the best tools, staff, and most importantly curriculum to the grad students while the undergrad students are left with less experience and education. How does the school focus on the educational development of undergrad students if they have a grad program as well? Also, if a program doesn't have a grad program, that's not a bad thing at all!
    • So, I would say the opposite, that having a graduate program is beneficial for undergraduates. Here are my reasons:
      • Opportunity to take graduate classes. Grad classes are going to be more advanced and more detailed that the UG ones. It is also likely that there will be more grad classes in a particular area (2 or 3 architecture classes, as opposed to just one UG class). Therefore, when you find a particular sub-area that you like (eg. graphics), you have the chance to take a few cool/advanced classes in that subject.
      • Research opportunities. Schools with graduate programs are usually research oriented (those that offer PhDs are by their very nature -those that just offer the MS aren't necessarily research oriented, it depends on the program). This means that there will be multiple opportunities for you to participate on a research project, either working in a professor's research group, or doing "sponsored" undergraduate research. If you might consider graduate school, doing UG research will give you good insight into the process. Additionally, the professors at a research school will be active researchers, they will know what projects are going on at other schools, what are current "hot topics" etc. At a non-research school, a professor is probably not really doing active research anymore.

      Given those arguments, I think some important questions to ask are a) Do you allow UGs to take grad classes? b)What are the opportunities to do research as an undergrad? c)(Especially if you might consider grad school)What percentage of your UGs go on to grad school, and where do they get accepted?

      Good luck.
  • on-line for everything you can find out about the school. These days you can find out a lot. Look at web pages for classes. Check out the syllabi, slides if they're on line, project descriptions, etc. Try to figure out how much of the class is really taught by a professor, and how much by a TA -- often the TAs will have their own class pages, or the syllabus might show the lecture/lab schedule.

    Look for personal web pages by students in the department. See what they say about the department. If you're clever about the search terms you use, you might turn up a few blogs by students in the department, and get some glimpses in to their daily grind if that's what they write about.

    Look for pages about research groups you'd like to get involved in. Look at professor's personal web pages, and their publication records. With a little practice you can get a pretty good feel for how much time professors are spending on publications, getting grant money, etc., and how much teaching.

    Find people, either in real life or on the web, who have the kind of job you want to have. (That assumes you have at least a rough idea of the kind of job you want to have of course.) Find out how they got there. Find a company you'd like to work for, and if you have any connections there at all, see if you can arrange a brief chat with an engineer or engineering manager. Ask what they look for in a new hire, what schools they particularly respect, etc. If you can't do that, at least look at the job listing sites, and search for on-line resumes, and get a feel for the kinds of backgrounds you'll need for the kinds of jobs you think you'll want.

    Do all of this before you go visit the schools. When you do go visit, try to go at least a couple of weeks before exam week. That way people will be more likely to have time to talk to you. Do the usual tour thing, etc., but keep in mind that for all the usual kinds of "good questions" there are pre-packaged "good answers", so take those answers with a grain of salt. Instead, if you're not shy about walking up to people, try to talk informally with some students in the department.

    Walk around the building(s) in mid-morning and early afternoon. Peek into classrooms. Do they say something like "most classes have 20 students or less"? Well, don't be surprised if you see a bunch of huge classes, and the way they came up with that statistic was to count every little seminar and lab section and even graduate classes, i.e., *your* average class size may be significantly higher. Try to sit in on a lower-level class, or if the doors are open, just stand outside and eavesdrop on several.

    Walk around the department in the early evening, after dinner, and see how full the labs are. (That of course will depend on where they are in the semester calendar. Visiting close to exam week, but not during exam week, will tell you the most.) Are there a lot of frazzled people competing for a smaller number of machines? Are some labs empty and other full -- the machine count alone doesn't tell the whole story, since some labs may have macs or older systems or may be locked up and reserved for certain groups.

    Bottom line, departments are partly in the business of selling themselves, and asking questions about their "values" and "goals" and so on is going to get you a lot of marketing hype. Universities that are essentially trade schools won't generally come right out and say so. They all put the students education as their highest priority, blah blah blah.

    On the other hand, if you ask around enough, you'll get a sense of who is "selling" the department, and who is really interesting in helping you figure out if it's a good match for your interests. And that's especially true if you do a lot of detective work before you go -- a professor is going to be much more inclined to chat with you if you went to him/her because their research is in an area that interests you, and they know you've gone to the trouble to read their web pages, than if you just wander into the nearest open door.

    Good luck!
  • From my experience looking at colleges, you should start close to home and get a feel for what visting colleges is like. You'll be able to practice and learn what you should ask yourself, without feeling pressured. You'll also have a much better idea of what the schools close to you are actualy like. Once you've gained some experience, you won't waste your time spending thousands to visit schools that you'd never go to.

    Try to talk with professors and students the most. Heads of departments may sound impressive, but they probably havn't taught a class in a while.

    Talk to students and get a feel for what they think of the department. Try and find someone who isn't getting paid by the school to say nice things. (Do you think tour guides volunteer?) Students will usualy tell you what they like and dislike.

    Professors are more interesting. My top choice (which I didn't get into) was mainly my top choice because durring a mid summer satuday afternoon visit, a professor pulled me into his office when he saw us wandering around and just had a chat with us. He was interested in students and wanted to be involved with the school. The 45 minutes he spent talking to us on his satuday afternoon showed the dedication of the faculty far more than any brochure. (oh what they hell, it's a compliment so I'll name names - that was Harvey Mudd, which still would be my top choice today)

    Decide what's important to you... Do you care if your class has 200 people in it? Do you mind fighting to get the classes you want? Do you want a really comptitive environment or a laid back one? Should you know a programming language before you get there? Do your APs(if you've taken APCS A/AB) count for anything?

    It's 4 years of your life. Only you know what you want and what's right for you. If you're gonna be happy graduating from a school who's sweatshirt you're proud of, then chose your school that way. If you want to be in a smaller environment, find a school that's right for you and don't feel ashamed that it's not the most presigious university out there.
  • What questions you want answered really depend on what you are looking for in your studies and as such, nobody can tell you what to ask.

    If you are not too sure what you are looking for (not always a bad thing) then I suggest you check the college's facilities. Some general examples include:

    - Access to machines.
    - Access to instructors.
    - Variety of subjects (very important if you are unsure of what you want).
    - General college facilities (Clubs, gym, entertainment, etc).
  • (if you already have a decent amount of experience)


    be ready to provide documentation of prior experience. If you make the appeal to the dean and it is not some asshole college just after your money, this might work.
  • by battjt ( 9342 ) on Tuesday May 21, 2002 @08:27AM (#3557406) Homepage
    If they answer with a list, run away.

    Don't go to a school that teaches languages, go to a school that teaches concepts. You can learn the languages from a book.

    I am very happy with the education I received at Rose-Hulman, and recommend that you check it out.

    • heh cool ... i know someone who graduated from st. mary of the woods, right next door to your alma-mater
    • I understand where you are coming from and fully agree with you that they should teach the concepts, not a language. I do disagree that you should automatically run just because they give you an answer. I think that it is kind of a loaded question. The majority of students that would ask this question are just asking to see if they are modern. I know I did when I entered my college. Up until 5 years ago, they were still teaching Ada as the intro language. My first semester was the first semester for Java.

      Most colleges are going to stick with a main language at least in the first couple semesters of college if for no other reason so that the student doesn't have to start over with a new language. They need to have something to apply the concepts that they learn. Once you get a grasp at one, the others can come quicker (via a book, labs, etc).

      At my university, if I were to ask the question, it would have been Java. Was all 5 years of my college career Java The first 3 semesters relied on it, but after that, it was generally up to the student to program in what ever they wanted to...within reason. I did projects in C++, Java, C, Lisp (Scheme), Cobol, Ada, VB, and Assembly and a few others that I probably forgot about. All of these could be considered languages that they taught, but it was mainly the concepts, construction, and design of these languages that were taught, not necessarly just the language.
      • [I think we agree, but you said "I do disagree...", so I'm obligated to defend.]

        Rose didn't offer any language courses. Languages were expected to be learned on the side.

        OK. Rose taught two languages, PASCAL to freshman in CS100 and a subset of Ada in datastructures. The rest of the classes were taught in a language that you were expected to pickup. AI was taught in a variety of lagages, lisp, scheme, SML-NJ. Programming Language Concepts was taught in lisp and scheme. Compilers was write a compiler in its own language. Many classes like numerical analysis only required that the language you used run on the prof's machine. Graphics had to link with a home grown graphics primatives library.

        As close as they got to language instruction was System Programming in C, but that really taught POSIX, not C. Knowlege of C was a prereq.

        CS is not an applied study; CS is a science.

  • Find out what 'school' the CS program is under. For example at the school I went to oh so long ago the CS program was in the School of Mathematics. At others schools it was in the School of Engineering. Still others may have a School of CS.

    This can often give you the general 'tone' of the CS program. For example a math prgram tends to be more theory, while an engineering program is more practical. Of course like most factors, other then actually attending the classes, this will not tell the whole story or even be a correct assumption. Some engineering programs are very theory oriented.

    I would also ask about how much publication is done by and/or required of professors. This can have a significant effect on how professors really spend their time. A prof that publishes two new books every year, really isn't spending time teaching.

    Also find out how much use is made of TA's(teaching assistants). At some schools these are the only people you as an undergrad ever get to talk to. At others they are just there to help out for things like labs. Still others have none.

    Finally ask about class size. THis mostly depends on the size of the school, but not always. Some places do the 200 student lecture thing and all questions go through TA's. Other schools will have classes no larger then 20-30. Makes a big difference in teaching methods. There is no real way to have a debate in a 200 person class.
  • You should ask about the educational and the work background of the professors. Find out when and how long each of them worked in the "real world". Also do any of them currently consult on the side. Having a PhD is nice, but current real world experience is the mark of a good teacher.

    Look and see the experience spread of the profs, i.e. do they have five profs that all recieved their PhD's in the 70's or are they constantly bringing in new blood every four or five years? Also look and see where their degrees are from. If more than two or three of the faculty in the department have their PhD/MS from the school you are applying to, this is bad news. It shows that they are not going to be very diverse in their thinking.

    You should also ask about adjunct factulty. These are profs that have full-time jobs but teach one or two classes a semester (they typically do not have a PhD). They had the best in real world experience. They typically teach the mid-level stuff. I think they are the best people to take your programming languages from (they are also good at getting internships and job leads).

    Finally if you want real brownie points with the department chair, ask about his/her doctoral thesis. I have yet to meet a PhD who does not love talking about that subject.

    Good luck!

  • by ameoba ( 173803 )
    What is the purpose of talking to these educators? Are you a prospective student or are you interested in finding the current state of CS education so you can draw up some best practices docs?

    As a potential student, I'd look and see what kinda output the students are producing, particularly in 300 tests are generally the closest to 'reality'

  • This guy's not after a uni with good beer. I'm guessing he's assessing them from the role of an educator. As such here's my opinions coming from someone who actually teaches this stuff, AND takes teaching methodolgies seriously:

    1. How many different languages do you expose the undergraduates to? Why? Why those languages?

    I want them to have a good understanding of why it's important for their graduates to be language neutral when they leave. I want them to have a good understanding of the advantages of teaching functional/procedural languages.

    2. If they're teaching a loosely OO language like C++ I want to know, "Are you teaching objects first?". One of the current trends in England is to teach objects first in C++, despite the fact that it causes information overload in the early stages of teaching.

    3. Do they integrate modules? One problem with many British universities is they've adopted a modular approach to courses to enable students to pick and choose what they would like to learn. The problem with this approach is that it does not make it possible to tie in modules, since the pre-requisites become too complicated. Their opinions on this problem would be of great interest.

    4. At our university, some high level academics are of the opinion that programming is a old-school skill that will be replaced by IDEs + CASE tools. Stupid concept, but I'd like to try and catch people that think it. Their opinions on the role of tools such as Rational Rose and UML would be informative.

    5. Whether or not they feel that psychology modules are important. Some try to wrap it up as Human Computer Interaction, but farming it out to the psych dept and getting thorough coverage of ethics in computing, and the psychology of colour etc makes for a very interesting and diverse syllabus.

    6. Importance of teaching hardware + real time systems.

    7. Teaching of proprietary APIs. Again to take my own dept as an example, we teach SQL Server specific SQL. Now what's the crack with that? Yet at the other end of the scale, we teach OpenGL/g2/pthreads/MPI.

    8. Use of different operating systems. We're now a bit lightweight on that front since retiring our ageing IRIX machines, but we expose students to at least Linux + Windows 2000. SunOS is possible, IRIX slightly less so.

    9. Teaching of parallel programming techniques, both theoretical (CCS + other formal logic) and practical MPI/threads. It's a great programming challenge that teaches skills that are relevant in traditional programming too.

    Anyhows, just my thoughts, hope they help,

  • How big is your [Internet connection] pipe?
  • Ask them: what type of structure they have in teaching CS?

    Do they teach proper programming techniques(ie. UML, functional programming, proper recursion, etc)?
    Do they centralize on the mathematics and theory of computing?
    How many languages do you teach? Which languages?
    What type of assignments do they give (ie. are they practical, analytical, theoretical?)
    How difficult are the assignments? How many hours per week should I expect in front of a computer?
    What types of computers do they have available for students on campus? How often are these computers available? How many computers do they have?
    What is the average mark for CS? (make sure you know if it is mean, mode, or median)
    How many non-CS courses are required for a CS degree? How many non-math courses? Which courses?
    How long does it take to complete a degree?
    What is your hiring rate for graduates?
    Is the degree a BMath degree, BSci degree, BCS degree or something else?
    Are there extra fees per term for CS majors? (UWaterloo majors pay 20%+ more then everyone else per term)

    That should give you a good starting point at least.
  • If the school's intro programming course teaches QBasic... run away! Far away!

    (This is why I refuse to take any CS courses at my school... fear and loathing)

  • I'd say some of the more important questions aren't about the CS Dept. at all, but of the Univeristy in general.
    My school got a taste of fame with all this computer mumbo-jumbo and quickly shifted funding and focus to it, leaving art, music, and drama suffering terribly.
    If you want to go to a Tech School, go to a Tech School. A University is supposed to be about a lot more than just your degree.
  • First, I want to state that I was a music major in college - a music theory geek, but a music person nonetheless. Thus, you can take my experience in the world of the CS minor with a grain of salt.

    We had one professor who gave out skeleton code that had, WITHOUT FAIL, at least 5 major errors per project. We had a couple of these things that wouldn't even COMPILE, much less run. I had two other classes where the professor prided himself on the fact that, because the texts were so poorly written, it was impossible to understand anything unless you went in for extra help for 2-3 hours a week. And I'm not just talking about the people who somehow get into upper level classes despite the fact that they're complete morons. EVERYONE in those classes was clueless, even the ones who came out of the womb spouting shortest path algorithms, and the professor thought it was a tremendous laugh. And my favorite part was the Networking class where we spent an inordinate amount of time learning about the ARPAnet, but didn't actually learn how to set up or maintain a network.

    Now, this school obviously wasn't a CS powerhouse. However, once I started actually taking courses, I found that the prevailing opinion of the CS majors in my classes was that the department was just plain awful. So, from all of this, a simple lesson: if you can get in touch with some of the current students, do it. Ask them about the professors, the classes, the department in general, whether or not you'll learn anything that will be applicable to real world situations, etc. The admissions department will lie, the professors are certainly not going to tell you, "Oh, yes, I teach entirely from overhead transparencies, which is boring, and discourages nasty things like class discussion as a bonus," but by and large, the students will tell it like it is. Just like Dr. Phil, only less grating and self-aggrandizing.

  • Let me get my word in before this disappears from the front page into the archives.

    If your looking to learn CS, then ask all the questions posed here. If you already know anything about CS (above programming with data structures), then no university is likely going to stimulate you academically.

    What you then want to look for are the connections that schools have with various Internship programs and/or research assistantships. There are some amazing undergrad internships (IBM's Extreme Blue, Microsoft's Internship, FBI Honors Intern, NSA Intern, etc.). This is what will take you to the next level.

    BTW: Lots of people will say partying is important, and well, that's only partially true. I would recommend staying away from overly technical places (unless it's something like MIT) so that you can meet a wider variety of people (especially women since CS women are, well, let's not go there [with the exception of any CS woman who may possibly reading this of course :)]). It's also nice to get some good liberal arts courses too.

Today is a good day for information-gathering. Read someone else's mail file.