Yale Computer Science Dept overworked, understaffed
yaledailynews.com
yaledailynews.com
Back in 2008-2010 I was one of two sitting students on the Computer Science curriculum committee at Rensselaer Polytechnic University (RPI).
Three topics were always present:
1. What do we do about kids who come in knowing inadequate math and how does this keep happening?
2. Should we consider switching out C/C++ as the default for Java as the default. (The answer to this was almost always no, but many professors at RPI accepted assignments in multiple languages, usually whatever the TAs were familiar with. I used a lot of python later in the year instead of C/C++/Java)
3. God damn it we are understaffed.
I hate to say it but #3 was always brought up near the end of every meeting and was visibly discouraging to all the teachers involved. RPI at the time was on the war-path of cutting professors in every single field who did not participate in research (so called "clinical faculty") which included letting one of the best CS professors go.
That teacher for you RPI alum was Dave Hollinger. They let him go(?) at the end of '08 but he taught a single class in '09 before leaving for good. Everyone loved him. http://www.ratemyprofessors.com/ShowRatings.jsp?tid=100535
Of course, these tools need to be researched and developed as well, but more importantly do we need very capable teachers in order for people to build their foundation. IMO every Master of Science should have a good overview of which tools in math and "CS" there are available, and they should be proficient in at least two of each.
I grew up in Rochester and only recently began to appreciate it; curious to hear what your opinion is.
We do something [that I consider] interesting here to staff TAs for courses, which is hire undergraduate teaching assistants. Generally, a course will have one head TA who is a grad student, and multiple undergraduate TAs. I've TA'd for a while as an undergraduate, and it's been a really great experience for my career.
Especially in the intro courses and lower level courses, I don't think that it's necessary to hire computer science gurus -- it's actually easier to find undergraduates who are capable and passionate for teaching than it is to find graduate students (partly because there are more undergraduates).
Some documents produced by one of the lecturers who I work for as a TA.
http://www.cs.washington.edu/public_files/publications/msb/h...
ftp://ftp.awl.com/cseng/authors/roberts/cs1-c/documents/ugradtas.txt
I've been a TA for three years now, and I've probably gotten more from it than from my actual classes. And because we see what the class needs to teach, as well as what the class has taught in the past, we're actually a lot better (IMHO) than grad students (and even many professors) at figuring out how to change the course to push students further.
As our professor last year put it: "I am the Pope of CS17. The head TAs are the Roman Curia, the TAs are the dedicated priests, and the students are the Faithful."
http://teachingintrotocs.blogspot.com/2011/09/teaching-with-...
However, even that hasn't completely met the needs of the current enrollment deluge: I'm glad I got my requirements out of the way early on, because there are an absurd number of CS enrollments. They recently capped one of the major tracks (the BA) because there were simply too many students.
Edit: Undergraduate at UVA. Also, I think undergrads are possibly a better option than grad students: since we have actually taken the course, unlike most grad students.
In my opinion, this whole issue has arisen because there is confusion about what "computer science" should be at a university. Theoretical computer science that professors do is a world away from the casual HTML/CSS development that many non-CS-majors want to dabble in after watching The Social Network. I think an excellent university should have instruction in both, and enough professors to strongly support the latter.
The Yale CS department, with good reason, does not want Yale to become a "Java school". (good background on the topic: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool...). They want to focus on CS fundamentals, algorithms, and UNIX skills, which are timeless skills that can serve as a foundation for a career in computer science. This especially makes sense given the strength of the theoretical component of Yale's CS department, both now and historically. (http://en.wikipedia.org/wiki/Alan_Perlis) (http://www.macfound.org/fellows/877/)
But the university also needs to realize that having a more casual computer science class for non-majors, like Harvard's CS50, is an essential part of offering a liberal arts education in the modern world. There's a lot of student spirit and initiative here, such as awesome student-taught web dev courses (http://hackyale.com/) and student-organized talks and hackathons, but the university itself seems to be playing catch-up.
My point is that Yale needs to recognize the general interest in CS, and do many complementary things to satisfy it, including both 1) creating more light CS classes, and 2) better funding the department. Taken together, these steps would go a long way towards catching up with Harvard and other institutions.
I'm finishing my CS degree at Georgia State (after a 6 year hiatus) and all of the lower level classes the last 2 semesters have been filled to the brim with people who had no idea what they were getting into.
When you select CS as your major, there should be a popup box that asks if you're aware CS involves math.
I disagree that this is good advice to give someone considering a CS major.
Math is not fundamental to CS. CS is fundamental to CS.
Most of a high school/college math curriculum is not that closely related to most of what happens in CS.
In general, there is some "mathiness" to CS, but it is of such a different flavor to "the math you learn in school" that I don't think making a comparison is useful (it certainly would not have been in my case).
I have bachelor's and master's degrees in CS and am pursuing a PhD in CS.
Maybe you didn't learn that stuff in "math class" but that doesn't mean it's not math.
Formal languages, turing machines, and computability are computing science, which we call computer science. Computing science may be part of math, but math is not fundamental to it. In other words, you need logic as a basis for those examples, but otherwise, they are not dependent on other mathematical knowledge.
I don't think sets are all that important in cs (but I disagree with mathematicians who try to base everything on set theory).
However, they way computer science is taught does assume prior math knowledge. Thinking back to the very first example algorithms in my intro class--we had to impliment addition, multiplication, then heron's square root method.
Very basic math, but that was around the time many students dropped the class.
It was the basic arithmetic/algebra that gave them pause, not logic.
Additionally you need to take at least 4 classes that are actually in the math department to finish the degree.
Edit:
It occurs to me that I've caused downvotable confusion because law degrees in the USA are quite different from law degrees in Australia (where I studied law).
In the USA law is a postgraduate degree.
Here it is an undergraduate degree. Australian citizens receive very generous loans and until recently, places for each degree at any given university were fixed by Commonwealth quotas. Students with high year 12 scores and no idea of what to do next studied law or medicine because, in a quota placement scheme, those courses had the highest entry scores. Basically a status thing.
You're "smart"? Do law! (Which is how I wound up doing it).
Hence my remark that it's replaced the Arts degree as something that can be used to step into a higher entry rung in a large company or government department.
~4-6% every 3 years according to http://oir.yale.edu/node/108/attachment
Apparently that gets spent on all kinds of things, just not the actual education the students need. At >30k a year you could really expect that they would hire enough real teachers.
But what they don't realized is that Computer Science is more than developing a website or programming. CS deals with math, algorithms, and such words that they haven't heard before. Automata, discrete math, pumping lemma. Computer Science is much harder than they thought. With this, many students in my university shift to another course because they can't handle CS. Too many students are enrolling CS becase they think it is the trend. They think it is the right course to learn how to develop website, how to create something like Facebook, how to develop an app, how to develop something like Instagram, or even how to create a game (http://blog.jpbalb.in/post/16048908922/game-programming-anyo...)! Yes they can learn them through CS, but if that's just what they want, they can just go to the internet and do a Google search. Because again, CS is more than just that.
Finally, I think it's not the lack of staff, but the lot of students. Give those students few years in Computer Science, and I'm pretty sure those "lot" will be "few".
EDIT (reply to below): You said "my parents are forcing me to develop a website," which makes me think your parents are still forcing you to make a website, right now. That was what was confusing to me...
We have a good number of lecturers in addition to tenure-track faculty members (at Princeton CS). They are extremely good and greatly decrease our load, so we haven't faced burnout so far. That said, enrollment was up so sharply this semester that we had to hire lecturers on a month's notice, which is kind of insane. Also, we have a new industrial Master's program which lets us increase our number of TAs.
In spite of having adapted in all these ways and money not being a problem, we know that this won't continue to scale because enrollment growth shows no signs of slowing down. We're not sure what the long-term solution is going to be. Online education is part of it (and we're on Coursera), but so far we're not using it in a way that decreases our teaching staff requirements.
Strange times.
http://www.stanforddaily.com/2012/10/04/cs106a-enrollment-re...
The data isn't in for this term yet, but pre-term planning data suggests that enrollment in CS 51 (our second-term CS course) will go up by about 40% (it experienced similar growth last year), and CS 181, a machine learning class, might nearly triple in size since it was last offered [4].
For smaller departments like Harvard's (and Yale's, which is even smaller still), there just aren't enough professors to go around, and with the enormous influx of students, I think the quality and variety of the courses offered has suffered. Many courses are only offered sporadically--especially systems courses--since there simply aren't enough professors to teach them all.
And that's to say nothing of the (undergraduate) teaching assistants, which bear much of the brunt of this trend. I TFed Harvard's algorithms course (which doubled in size over the two years I taught it), and am TFing our operating systems class this term (which if today's turnout was any guide looks like it might nearly triple in size). The workload was considerable, and I'm sorry to say that the feedback and individual attention I was able to provide students has gotten worse and more tardy because of this.
I don't think Harvard (and Yale, etc.) can cope with this sort of explosive growth for too much longer.
[1]: https://www.cs50.net
[2]: http://www.thecrimson.com/article/2012/4/13/cs-greatest-grow...
[3]: https://www.cs50.net/staff/
[4]: http://www.thecrimson.com/article/2012/12/17/ptp-data-obtain...
The idea that Scaz is working with 25 students on projects is a bit concerning. How can you give the necessary attention to any student, your own work, and any classes you teach when spreading yourself that thin?