Questions to Ask University CS Departments?
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?"
Can I see a copy of your curriculum please?
Yours Sincerely, Michael.
"Are yuo an AWP camping ***?"
What percentage of your students are female?
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...
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.
do you guys have those things people do stuff with?
wah!
Which is more important:
a)Education or
b)Collecting tution money?
© 2004 The SCO Group, Inc. All Rights Reserved.
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?
I haven't lost my mind!
It is backed up on disk...somewhere...
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 ?
--=.=-- www.cyber2000.qc.ca
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.
Some of the things that make a computer unuseful:
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.
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.
rooooar
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
This post will enter the public domain 70 years after my death, unless Disney buys another extension.
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.
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.
I have been pwned because my
(and I ain't talkin' Java, C, etc.)
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.
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.
Open Source Identity Management: FreeIPA.org
Are your undergraduate CS courses taught by TAs (or worse other undergraduate students) or Professors?
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.
Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
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 - http://cs.hofstra.edu) 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.
/~mikeg
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...)
/~mikeg
Can I run Napster/Kazaa off a campus IP without getting sued?
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!
AnamanFan - Trying to find the Truth, one post at a time.
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!
Odd behavior (bugs?) in slashcode are keeping me from posting with my ID (one-egg). Sorry.
Ask them, "What percentage of the class of 6 years ago has received a degree from this school ?"
;)
." slowly, so that you have 5 seconds to get everyone looking at you. Look right at the professor and ask him, "How common is it for professors to steal students work and publish it under their own name ?"
Notice the explicitness of how the question is phrased. Some schools either outright lie in their recruitment literature, or else are massively incompetent in how they account for such things (a possibility that is not to be lightly dismissed -- even if they are lying they are still probably incompetent too), or possibly they give the percentage of all students that ever get a degree in their lifetime from any school anywhere. If they list a percentage in the high 90s, and have a small enough class size, like 900 to 1200 a year, it can be possible for an alumni to directly catch them in the lie by simply counting all the people he knows personally, who have not graduated. Not that I know anything about that personally
Understand your purpose in asking this question. The answer doesn't really matter; new students always believe they are future nobel prize winners or whatever, so forget that. The purpose here is to see how uncomfortable and/or willing to lie the administration is.
Don't go to a place that will lie to get you there.
Keep in mind that all schools are run like big bureaucratic businesses or agencies, and that lying and corruption is at least as common there as in similar non-academic institutions. (Read the book "The Shadow University" by Silverman and Kors if you want to read a bunch of right-ward leaning criticism of universities, but that book won't help you choose a university. It may be good for opening your eyes before you go, however.) In many ways academic institutions are a cross between Enron, a british old-boys club, and a military unit that hazes and exploits newcomers. It's nasty. On the other hand, so is the real world.
Here's another one. Wait until you are face-to-face with a professor, or a graduate student, preferably both in same room. Then sort of prep the scene by saying, "um, I have an interesting question . . .
Note that the point of this party-pooper isn't to discover an actual instance of professorial theft. Hell, the places that admit that it happens are probably the good places to go. The point is for you to carefully observe the social reaction to the question. When their is extreme nervousness about the topic being brought up, it might be the case that it never happens, but something is unhealthy about that environment.
You can ask a similar questions about student cheating (as opposed to professor cheating). If the place has an honor code system, that's probably better; but look out for places that have an honor code and an extreme cynicism and abuse of it, like the Naval Academy at it's worst (hopefully they are better these days).
In a big school, like University of Texas or Ohio State or the like, the school is so big that there are many fairly different societies and cultures within it, and it is easier to figure out where you belong and move in there. On the other hand, a big school can be so big that you never really fit in anywhere at all.
Fuck it. Roll die and pick your school at random.
be sure to check out the math and physics/astronomy departments too ... maybe even a geological sciences department (geophysics, seismology, planetary geology)
... my entire class was pretty much screwed, but most of us took a few 200-level courses during the summer and were up-enough to speed for the fall semester. so be sure to find out the sentiment in the dept about adopting new languages in mid-program.
... throw in a few heaping spoonfuls of perl, sed, and awk, and that's what they do. the dept has a few computer classes, but a lot of the language learning is self-taught. i've seen some high quality code coming from 2nd/3rd year ugrads that haven't even taken a CS 100-level course.
... don't spend your whole trip to a uni on just one dept. shop around at the uni ... you may get a pleasant surprise
the uni i was attending dropped C when i was about half-way through the program
anyways, the physical sciences are big on computers and programming (i'm a sa/code monkey for a geophysics group). my group uses mostly fortran and c, but are starting to use java for some things
so
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.
"If I don't use EMACS or vi, will I be taken seriously?" This is not a troll. There is a real bias in many Uni CS departments towards unix based tools. When I was doing my PhD, I came in, set up my SourceSafe (which is a thousand times easier to use than CVS) and did my programming work for Unix systems with the MS-Windows programming IDEs that I'm used to and prefer. the thing is, I took shit the whole time I was there for being 'the windows guy.' No, I was writing unix stuff--I was just doing it (this was about 7-3 years ago) on systems with better IDEs so that I could get to the meat of my research faster. This wasnt a question of interoperability--I was working alone on a thesis. It was just a question of departmental bias. Operating system bias in any flavor is bad. When it permeates a large section of an ivy league CS department, it's silly and counterproductive. Perhaps I am not making a strong enough case for myself. The bias that I experienced was basically that "anything other than Unix is crap. Unix _is_ the one true way of doing things and you'd be a fool to do anything but man for cmd line flags all day." I certainly understand and appreciate personal preferences, but if CS departments are supposed to be where the next generation of software ideas are coming from, a little open mindedness would be a good thing.
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).
I am a Karma Library.
(if you already have a decent amount of experience)
FOR CHRISSAKES CAN I SKIP THE INTRO COURSES?
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.
It's 10 PM. Do you know if you're un-American?
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.
Joe
Joe Batt Solid Design
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.
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!
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'
my sig's at the bottom of the page.
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,
jh
jh
Do they teach you to program at least one machine at its native level? It doesn't matter if it's one you don't like, it doesn't matter if it's an antique. Learn what happens deep inside the system. Write an interrupt handler.
High level languages hide too much with the abstractions, so you lose touch with what that hardware really is doing (and how it's done).
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.
~ kjrose
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)
-Mike_L
Reinforcing the notion Java isn't everything:
http://www.theregister.co.uk/content/4/25380.html
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.
Legalize the constitution. Think for yourself question authority.
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.
If I could get Lightwave for Linux, I'd give my Windows PC to the lowest bidder.
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.
First and foremost make sure the CS program is actually accredited. Don't take for granted that is. (Well maybe at MIT).
I go to the Illinois Institute of Technology which is a decent school for engineering, but the CS program is unaccredited and has been for ten years.
I am a computer engineering major and my experience with the CS classes has been awful. CS classes are often taught by part-time instructors who just read someone elses power point slides and complain about their bosses. I could go on and on but I won't.
Let me get my word in before this disappears from the front page into the archives.
:)]). It's also nice to get some good liberal arts courses too.
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
int func(int a);
func((b += 3, b));
I just completed my first year in a CS program. I found two big differences between professors.
Some are there because they took CS in college, and may love it, but couldn't cut it in the industry. In some cases, they are not even "good" programmers, and can't answer any questions beyond the basics.
The other kind of prof is the one that could cut it in the industry (and perhaps did), but wanted a quieter life or just enjoys teaching a lot.
I don't mean this in an arrogant sense, but I have spent more time working for companies as a programmer than some of the profs I know. If you want a CS program that can go the extra mile for a more advanced student, make sure the profs are good programmers themselves. Make sure they learned their lessons from somewhere other than just a textbook. It isn't everything, but it does matter. And not all profs fit into one of those two categories...
Talk to undergraduate students about their teachers. A teacher may be a great researcher, but he may also be a very lousy teacher (something common in my department), with no teaching skills whatsoever.
as soon as possible (freshman year) look at research groups that need computer science/software engineering people. This means looking within and outside of the department.
after finding a research group you like, work at joining them and expect to spend at least a year with them.
This give the following:
1) work experience
2) access to computers/software you otherwise didn't have.
3) more rounded experience.
4) spending (BEER) money