Questions to ask computer science department?

<p>I’m touring a college’s computer science department tomorrow and I don’t know what questions to ask them. Any help?</p>

<p>If your goal is to go on to a PhD program, ask about where graduates have gone on to for PhD study.</p>

<p>If your goal is to work in CS, see if there is recruiting list and post-graduation survey available specific to CS (probably in the career center).</p>

<p>Presumably, you have reviewed the courses and curriculum from the web site and have come up with questions about them that you may want to ask the CS department, right?</p>

<p>“Do you use BlueJ for teaching intro to Java or do you use Eclipse?” if they use BlueJ, run for your life and do not stop until you cross state lines :)</p>

<p>More serious questions:</p>

<ul>
<li>is there a capstone project?</li>
<li>what about research / work in lab / etc opportunities?</li>
<li>are there any electives related to technologies that may not be so hot in a CS department but are useful for the real world?</li>
</ul>

<p>Yeah, but only a few like:</p>

<p>1) I see that this program is not ABET accredited. Is the comp sci program still rigorous?
2) Where have undergrads interned?
3) Where have graduates worked after graduation? What is the job placement rate?</p>

<p>Don’t worry too much about placement and internships - there are more questions like:</p>

<ul>
<li>how many actual CS classes where you bang keys on a laptop do you get to take? Don’t count math or other courses, just CS. In my days 30 years ago ours was 18, I have seen a downward trend… </li>
<li>summer courses offered? (some schools offer some really interesting electives during summer on occasion, or you can take a class in summer and open a spot for another in a full semester)</li>
<li>taught by faculty vs taught by grad students?</li>
<li>grading policy in general, i.e. how much do assignments and projects count? (in my days 40%+, nowdays less)</li>
<li>group projects where there is more focus on design, teamwork, etc, (useful for real world) or bang-away solo projects like in my days? </li>
<li>when can you take independent study or seminar courses? (some allow juniors, others seniors)</li>
</ul>

<p>Yeah, but ABET accreditation is less relevant for CS. Many of the best programs are NOT ABET accredited, I think Stanford is an example.</p>

<p>class sizes, opportunities for research, what companies recruit here, ask about the career center (better yet, go visit while you are there), the college’s retention rate and graduation rate.</p>

<p>

</p>

<p>True, but there are some very poor “CS” major degree programs that are not worthy of the name. If not sure, you may want to compare the required and optional CS courses with those in ABET accredited CS majors, and good non-ABET-accredited CS majors (e.g. Stanford, Berkeley L&S CS, CMU).</p>

<p>If you are interested in patent law, ABET accreditation is more relevant; in a non-ABET accredited CS major, you need to fulfill certain course requirements listed in the <a href=“http://www.uspto.gov/ip/boards/oed/GRB_March_2012.pdf[/url]”>http://www.uspto.gov/ip/boards/oed/GRB_March_2012.pdf&lt;/a&gt;&lt;/p&gt;

<p>Do they cover C, C++, and assembly? Can you learn about combinatorics, graph theory, algorithm analysis, numerical methods, OSes, databases, computer architecture, networking, parallel processing, component-based design, software engineering/project management, and undergraduate research opportunities.</p>

<p>You could always ask whether they have an active ACM (association for computing machinery) student chapter; whether they have local UPE (upsilon pi epsilon) membership; opportunities within the department for undergraduate research; number of students participating in REUs (research experience for undergraduates); approximate number of students enrolled at each level (freshman, sophomore, junior, senior, various degrees of superseniors); how often classes of interest are offered; what sort of capstone experiences are possible (praticum, project, thesis, etc.); etc.</p>

<p>Don’t shrug off the ABET thing; there should be a good reason why they don’t have it.</p>

<p>When in doubt about what should be in a normal CS program, just take a nice sample of 20 programs (this is where the USNR rankings help) and/or the ABET site and just compare. A good 'ole Excel worksheet helps. I always tell any non-CS major wants to compete with CS majors that you need to take at least the “core” that CS majors take. Still, I can rattle it out to you…</p>

<p>Introductory Programming (2 courses)

  • A 2-semester course in Object-Oriented Programming in C++ or Java</p>

<p>Introductory Discrete Mathematical Structures (1 course)

  • Depending on school, this course may be offered by Math dept or CS dept or both</p>

<p>Introductory Computer Organization & Architecture (1 course)

  • Usually called Computer Organization…usually will cover Assembly Language</p>

<p>Core CS topics (3 to 5 courses…depending on school)

  • Data Structures…may or may not be separate from Algorithms course
  • Algorithms…may or may not be separate from Data Structures course
  • Organization (or Theory) of Programming Languages
  • Operating Systems
  • Computer Architecture (required by some schools. Not needed by non-CS majors going into software engineering)</p>

<p>Elective CS Topics

  • A.I.
  • Machine Learning
  • Cryptology
  • Database Theory (personally, I recommend no CS major should leave without this)
  • Computer Networks (personally, I recommend no CS major should leave without this)
  • …and a bunch of others</p>

<p>Bottom line, if that “core” is not there, that is a flag.</p>

<p>Turbo’s curriculum at an awesome Directional state school 30 years ago included:</p>

<p>3 intro programming classes (PL/1, stop laughing in the back)
1 Assembly (PDP-11)
1 Data Structures
1 Business Computing (COBOL LOL LOL)
1 Numerical Analysis (Fortran Baby!)
1 Programming Languages
1 Architecture (if I see another question about the ILLIAC…)
2 Database Management
1 Operating Systems
1 Software Engineering
1 Seminar
4 Electives (graphics, compilers, performance optimization, etc)</p>

<p>In addition, one statistics, two discrete math, and one operations research class…</p>

<p>Did you take intro dinosaur riding too?</p>

<p>Hey, respect for the elderly :slight_smile: Next thing you know none of you young-lings will give me your seat in the subway :)</p>

<p>We actually had some serious kick-tail hardware back then (University of Louisiana at Lafayette). A serious multiprocessor Multics system with gdb style software debugger, etc; PDP-11’s and VAX’es in the mini-lab, then went into a Unix phase and switched to some serious Unix superminis and even parallel processor systems (Celerity or something, not sure), and a really nice IBM 3090 mainframe (‘because nobody in the real world wanted Multics’). </p>

<p>Real professors showed up in 3rd year (TA’s did the rest as we had a fairly big department). I can tell you that we compared the assignments we were given with many prestigious schools and ours were comparable to much higher ranked schools. Needless to say, whoever graduated in my days from there was an awesome coder… Semester long projects in OS’s were easily 10k lines of code or more…</p>

<p>In the mid 80’s we switched to Pascal for teaching CS - lasted a year - then Ada for another year (with a G*d awful compiler), and C after I left. </p>

<p>Dinosaur era indeed…</p>

<p>LOL…</p>

<p>Well, I was in that late 80’s group during college. Since Michigan State had this corny 3.5 GPA entrance requirement for the last 2 years of CS, I had to do the 'ole round-about way of taking CS by way of the Computational Math major. After Linear Algebra, the math courses were (in quarters, not semesters):</p>

<p>Discrete Math 1: Combinatorics
Discrete Math 2: Combinatorics with generating functions, recursion, pigeionhole, etc
Discrete Math 3: Graph Theory
Optimization (Linear Programming)
Numerical Analysis 1: Solutions to Diff Eqs…Used ‘C’ since professor only knew FORTRAN but allowed us to use ‘C’. It helped because all he could do was check for the right result, hehehe.</p>

<p>Numerical Analysis 2: Solutions to Linear Algebra
Advanced Calculus: The “Analysis” requirement for Comp Math…avoids dreaded Rudin book
Computational Complexity: Extremely hard, boring and waste of time
Error-Correcting Codes: Misleading course title…textbook was called Cryptology</p>

<p>As for the CS courses…</p>

<p>Programming 1: Pascal
Programming 2: Pascal
FORTRAN Lab: 1-credit course to learn Waterloo FORTRAN for Pascal Programmers
Assembler Language & Machine Programming: C code converted to Assembly code
Information Structures: MSU’s version of a data structures course (C)
Systems Programming: Misleading title…basically Information Structures II
Organization of Programming Languages: Surveyed Ada, Prolog, Lisp, Smalltalk
Operating Systems: all Unix
Database Systems: Used that pure theory/anti-practical C.J. Date book. No SQL at all.
Computer Networks
Computer Graphics: That is when the linear algebra and vectors clicked in</p>

<p>Of course as with most software engineers, the “skills to pay the bills” are learned via 3rd-party vendors and on the job…which is probably another thread.</p>

<p>You know when you’re old when you actually took ALGOL68 in the survey of programming languages :). </p>

<p>Just to cast some light on my fellow poster’s last paragraph above. Here’s what I’m doing those days at work:</p>

<p>C++ middleware for connected media player internet radio (command and control)
HMI design work using some fairly expensive proprietary tools (say, Altia) for a high end display screen -
Python for my pet projects
NVIDIA UI Composer and Lua (the language of Angry Birds) and Google Sketchup designing 3D graphical interfaces.
HTML5 / Java cloud based apps </p>

<p>So, you can teach an old dog new tricks…</p>

<p>I still can’t believe anybody ever used punch cards or made entire programs in assembly. The computing industry must have had a high suicide rate until the mid-90s or so.</p>

<p>You would be surprised as to what was available for CS education in the early to mid 80’s… Our Multics system had Emacs, symbolic debugging, and was powerful enough for 200+ concurrent users. Things got even better on PDP-11’s and VAX-11’s, DEC-20’s and the like. Lots of other minis too.</p>

<p>Assembly Language on decent CISC or microprocessors was actually fun. One could not comprehend what a compiler does without generating real code…</p>

<p>Assembly on modern RISC processors is a lost cause…</p>

<p>Of course, emacs then was not the emacs of today… although a joke back then was that it was Eight Megabytes And Constantly Swapping.</p>

<p>[GNU</a> Emacs acronym expansions](<a href=“http://www.gnu.org/fun/jokes/gnuemacs.acro.exp.html]GNU”>GNU Emacs acronym expansions - GNU Project - Free Software Foundation)</p>

<p>(Note also the format of some of the email addresses.)</p>

<p>This runs back to our friend the OP’s question on what to ask CS departments; back in the dark ages, computing facilities were the most important thing to ask for, and schools had arms race style competition to get the most expensive, most chic hardware for their students. Then there was a big divergence between what the industry wanted (IBM and DEC mostly) with what schools taught (Unix for example).</p>

<p>By the late 80’s and early 90’s you could count on what you learned in school to be useful in the business world, plus there was no major issue with versionitis, one simply ‘knew relational databases’ meant one could use Ingres, Informix, and so on. In the early 90’s when PC’s became powerful and affordable and compilers decent, the business world started changing more into PC-based apps (early Visual Basic, yea). while academia stuck with Unix. Fast forward to the mid 90’s and beyond and there was a more noticeable chasm between the two… By Y2K time the business world was deep into N-tier, early web, and so on while colleges were teaching stuff the business world never used (Scheme, Java - at the time, and so on).</p>

<p>I’m showing my age…</p>

<p>The business world is stupid and boring.</p>