I never tire of pointing out that the only reason for the existence of public universities is mass quality—mass access to top-quality teaching and cutting-edge research—that puts regular folks on the level where they can genuinely match elites. It’s not too soon for faculty to join students in putting the quality back in mass quality, while creating new kinds of quality to reflect on current conditions. The success students had this year in holding off major politicians like Jerry Brown—and in getting cited in revenue arguments by governing boards—signaled to at least some faculty that it’s time to step up.

Chris Newfield, like me, teaches at the University of California (though he is on a different campus). I think we both see the University of California as having a combined mission: teaching and research at a very high level of quality and at a low price to the students. Unfortunately, high quality does not come at low cost, so the only way to achieve a low price is through subsidies. Because the public universities do not have the massive endowments and enormous philanthropic contributions that schools like Stanford get, the subsidies have to come from the state.

Unfortunately, our state politicians have been fooled into thinking that the University of California can be simultaneously controlled by the legislature and paid for by the students—thanks in large part to Regents who sincerely believe that unregulated markets are the best way to achieve everything. As a result, the University of California has become much more expensive for students while having a lot less money for instructional purposes. It’s been a slow process, played out over the past 20 years, but the UC educational experience has gradually been cheapened while becoming pricier.

The problem is not inefficiency on the part of the University or spiraling costs (see Cost of college remarkably stable), but simple cost shifting from public funding to student loans. The legislature and the governors have given up education as a public good and decided to slowly privatize higher education in California. This is not a popular position with the people of California, so they disguise the moves and find ways to make the University look like the bad guys in raising tuition.

The University administration has been aiding and abetting this political movement to privatize the University, by raising tuition every opportunity they get and by paying their top executives ridiculously large salaries, while simultaneously treating the faculty and unionized workers worse and worse (health benefits are much worse now than when I joined UC 28 years ago; salaries are about the same, after correcting for inflation; and workloads are higher). I think the UCOP (University of California Office of the President) made a particularly bad mis-step this year in the way that they raised tuition right after giving top executives pay raises—it made it look like they were just interested in lining their own pockets. It would have been better to come out with a plan for lowering tuition while raising state contributions—then the legislature would be properly seen as the ones causing the problem, rather than offering the legislature an opportunity to look virtuous while cutting funding for the University.

Quite frankly, I’m not convinced that the UCOP executives have any interest in the University as a university—they certainly seem to pay much more attention to ways that they can extract money from it (like using the retirement funds for speculation on UC venture capital projects) than on education or research. Neither UCOP nor the Regents listen to the faculty or the students, and I think that they have no idea what damage their self-centered decisions have already done to the University, much less what damage their most recent decisions will do.

We in the Broadening Participation in Computing (BPC) community are aiming to achieve a similar kind of social engineering that the Gamergate supporters are complaining about. I am part of a vast, international (though maybe not particularly well-organized) conspiracy to change computing culture and to invade computing with many women and members of under-represented groups. We are “actively plotting to influence” computing. The Gamergate supporters argue that the conspiracy is about “artistic aspirations.” In BPC, we say that we’re about social justice, equity, and diversity. From the perspective of the “engineered,” the difference in purpose may not make much difference. One of the pushbacks on the call I shared to eliminate nerd culture was, “Can’t we just shape/change nerd culture?” Do the nerds want to be changed?

What might a response to BPC look like? Might well-prepared, privileged male and white/asian CS students complain about efforts to give seats in classes to women or under-represented minorities whom they may perceive as less-prepared?

I have no objection to giving seats in classes to anyone capable of learning the material, but I believe that this needs to be done by increasing the number of seats, not taking them away from other students. I’m all in favor of expanding the pipeline, but not of holding back those who have already started on the path, so that others can “catch up”.

There’s a general awareness that there’s a problem, but there’s less conviction that it’s an important problem or that there’s an obvious way forward to fixing it.

I agree that the problem of gender imbalance and racial imbalance in CS is an important one, but I’m less convinced than Mark that there is an obvious, equitable way to fix the problem. He seems to think that lotteries are the way to go:

I understand why caps are going into place. We can’t support all these students, and there are no additional resources coming. What else can CS departments do? We might think about a lottery or using something beyond CS GPA to get those seats, something that’s more equitable.

I disagree with him strongly on this. I responded on Mark’s post with the following comment:

I’m not sure that I agree with “We can’t support all these students, and there are no additional resources coming. What else can CS departments do? We might think about a lottery or using something beyond CS GPA to get those seats, something that’s more equitable.”

Granting access to a limited resource to those whose prior achievement is highest seems to me to be highly equitable. Denying higher achievers because they are of the wrong race or gender does not.

Increasing the resources available for teaching, so that we don’t have to restrict who majors in a field seems like a good strategy, as does providing slower on-ramps for those who did not have good early training. But denying entrance to those who may have dedicated their lives to the field, just because others did not have (or did not take) the opportunity to reach that level of achievement—that does not seem “equitable” to me.

Note: I may be biased here, because my son is a white male majoring in computer science who has been doing recreational programming as a major activity since he was 10 years old. I would be very offended if he had to win a slot in the major by a lottery—college admissions alone is enough of a lottery these days.

Are we then to tell students not to form any intellectual passions in middle school or high school, because doing so will get them labeled as “privileged” and denied further opportunity? Or should they only form passions for things that no one cares about, so that no one will try to take their passions away from them?

Although I’m not fond of sports analogies, it is common for people to point out the absurdity of the lottery position by suggesting that the same be applied to sports teams. The football teams at the Big 10 schools should not consist of those privileged athletes who started young, got the best training, and had the best performance in high schools, but should be assigned by lottery to anyone who is interested in playing, even if they have never picked up a football in their lives. Why should only those who had the good fortune to be large, fast, and strong be allowed to play?

Michael S. Kirkpatrick countered my comment with

It’s often so hard to be objective when it comes to perceptions of equity. As Anatole France observed, “In its majestic equality, the law forbids rich and poor alike to sleep under bridges, beg in the streets, and steal loaves of bread.” The open question is whether those students truly are higher achievers, or if they are just starting from an advantageous position. In that case, would it not be more equitable to give the opportunity for students who did not have prior opportunities?

His argument makes the assumption that primary goal of college education is a social justice function—to provide opportunity for those who have not previously had it. While a generous impulse, this philosophy taken to extremes results in eliminating grad schools and upper-division courses to create more freshman courses, and even replacing freshman courses with remedial courses, resulting in college as very expensive high school (or, in the case of some athletes in scandal-ridden schools, grade school). Increasing opportunity is a great thing, but it shouldn’t be allowed to kill off the other great things about universities: like the opportunity for people to stretch their minds to the limit, to share ideas with other intelligent and passionate people, and to advance the state of the art. While universities do serve an important role in aiding social mobility, it is not, in fact, their primary function in society.

A variant of Kirkpatrick’s argument has often been used to kill off gifted education in public schools (because of a correlation between socio-economic status and identification for gifted programs)—forcing the parents of gifted students to take on educating their children themselves, which only the wealthy (or upper middle class) can easily afford to do. This approach increases the disparity between the wealthy and the poor, as the gifted students with less wealthy parents get much more limited educations—defeating the original goals of “equity” that killed off the public programs for gifted students.

There are good reasons why many parents of gifted kids started referring to “No Child Left Behind” as “No Child Allowed Ahead”, as it was much easier for schools to reduce their achievement gaps by slowing down the students who were learning fastest than by speeding up those learning slowest. Guzdial’s approach to rationing CS education seems to be following the same model.

Bonnie responded to Guzdial’s post with comments about what her college is doing to broaden participation, speaking both of successes and failures, and ending with

I just don’t know how we can make up for the poor education they received in K12. And that, I think, is where the true inequity lies.

Here I agree with Bonnie—if the problem is that some students get support early and others get support late, the solution is not to slam the door in the faces of those who got early support, but try to extend early support to more people. For that matter, I’m not in favor of slamming the door shut on anyone. I don’t buy Guzdial’s assumption that this is a zero-sum game and that the only way we can have more women and URMs in CS is to have fewer white or Asian males. I think that there is plenty of room in the tent still for everyone who is interested and willing to work at learning the material. We should not be rationing education, but providing enough education that everyone can get as much as they want.

In response to a different commenter, Guzdial wrote

We’re not talking about employees, Ian. We’re talking about seats at the table for students. If you get more women and under-represented minorities enthused about CS, there are still not enough seats at the table. If we’re going to allocate seats based on current ability, we have to get women and URM students to be better than privileged white boys. That’s a really high bar.

You may be under the misconception that computing is a meritocracy. It’s not. It’s not those with the most merit. It’s those with the most privilege.

It is almost certainly true the computer industry is not a meritocracy—but we should be trying to make it one, not rationing out education like butter in WW II. If there are not enough seats at the table, then buy a bigger table with more chairs! That will cost less in the long run than squabbling over who gets seated now.

2014 October 13

This summer I bought my son a book to prepare him for college: Say This, NOT That to Your Professor: 36 Talking Tips for College Success. He read most of it, and found it to be reasonably well-written, somewhat poorly copy edited, and worth reading once. Most of the advice in the book he felt was just common sense, but that only means that he has been raised in an academic culture. What the child of a professor sees as common sense in dealing with professors may seem arcane for someone coming from a different culture—perhaps the first in their family to go to college.

For the past 3 years, over half of our admitted students are first in their family to go to college. So what my son finds “common sense” may be the cultural knowledge of academia that many of the students at UCSC are missing.

After my son left for college, I decided to read the book for myself, to see if it was worth recommending to students at UCSC.

The author, Ellen Bremen, apparently teaches communication at a two-year college (Highline Community College in Des Moines, WA, about an hour and a half south of University of Washington by public transit), and some of the advice she gives seems to be more directed at two-year college students than research university students. For example, she provides no advice on how to ask a faculty member if you can join their research group, because most 2-year college faculty have no time to do research, but she provides a lot of information about what to do when you miss half a quarter’s classes.

Her example students also seem to be a bit more clueless than the students I see at the University of California. Perhaps this is because of the stricter admission criteria to UC, or perhaps she has selected the most extreme cases to use as illustrations. Or maybe I just haven’t dealt with enough freshmen—I generally see students in their sophomore through senior years, after they’ve had a chance to get acculturated to academia.

About 3/4 of Bremen’s book is dedicated to what students do wrong, and the last quarter to how students can deal with professors who screw up—about the right ratio for a book like this. Although the actual incidence of student mistakes and faculty mistakes is a larger ratio (more like 10:1 or 20:1), the student mistakes tend to fall into the same sorts of things over and over, with only the players changing names, so a 3:1 ratio is reasonable.

The advice she gives is generally good, though she recognizes only the teaching role for faculty, and assumes that all faculty have as much time and desire to meet one-on-one with students as she does. At UC, many of the professors see their research role as more important than their teaching role (and the promotion process, summer salary, and publicity about faculty activity clearly favor this belief), so faculty are a little less willing to dedicate 10 hours a week to office hours or meet with students at random times outside office hours. I’m doing a lot of additional appointments this quarter, and it really does break up the day so that I can’t carve out a chunk of time for writing papers or programming. In previous years I’ve kept one day a week free for working from home, free from student interruptions and meetings all over campus, but this quarter I’ve not been able to do that, so my research time and book-writing time has dropped to almost nothing. Just coping with the pile of email from students every few hours eats up my day. I find that a lot of student requests can be handled more efficiently by e-mail than by scheduling meetings—the extra non-verbal communication that Ellen Bremen is so fond of often gets in the way of the actual business that needs to be transacted.

Overall, I think that Bremen’s book is a good one, even if some of the advice is slightly different from I would give. I think that she would do well to work with a second author (from a research university) for a subsequent edition, to cover those situations that don’t come up much at 2-year colleges. Despite those holes, I still recommend the book for UC students, particularly first-in-family students.

2. While I support the effort to bring programming into schools I’d like to see us also emphasize the concept of each person taking charge of his or her own learning. Because programming languages change so rapidly anyone who intends to do serious coding will have to repeat the learning process over and over. Our introductory CS classes need to focus more on “learning how to learn” than on the specifics of any one coding language.

While it is certainly true that programing languages go in and out of fashion (where are the COBOL programmers of my youth now?), and it is also true that people need to keep learning if they want to remain in any technical field for long, that doesn’t mean that intro CS courses should give up on teaching specifics and instead tackle the nebulous goal of “learning how to learn”.

In fact, one of the things that distinguishes computer programming from many other courses of study is that you must learn the specifics of the programming language and tools you are using if you are to get anything done. “Big picture” thinking does not get programs written. It does you no good to “learn how to learn”, if you then don’t learn any of the details.

One of the major things that students new to computer programming (and to other engineering fields) need to learn is that details matter. The specifics of the computer programming language they are learning matter—not forever, since they might never use that particular programming language again—but while they are doing what they are doing right now, the details matter. That is an enduring, transferable lesson, but it depends on having a course in which the specifics of the coding language are viewed as important.

Of course, this does not mean that the teacher has to spend a lot of time on the details—the compiler or interpreter will make it abundantly clear to the students that details matter. But the teacher can strengthen or weaken that lesson by their own example and by their grading. Teachers who only do sloppy pseudocode on the board, never filling in the missing details or correcting mistakes, will convey the impression that the details are unimportant. Teachers who don’t mark down sign errors, punctuation errors, and off-by-one errors in quiz or exam answers also give the impression that “close is good enough”, which is emphatically not the case in real programming. Teachers who never read their students’ programs, but only do crude I/O testing to grade programs, will give the impression that documentation doesn’t matter.

On the other hand, teachers who spend all their time fussing over semicolons and never talking about the bigger ideas of algorithms, data structures, problem decomposition, and program documentation will produce low-quality copy editors, not programmers. One reason I like Python as a pedagogic language is that the syntax is simpler than many other languages, so that I can get the details right without having to spend so much time explaining the details (and the students can spend more time on more interesting debugging than chasing down punctuation errors).

But I’m not trying to dump on lizaloop’s ideas entirely. Computer programming courses are a good place to teach students to “learn how to learn”, though not by ignoring the specifics and following some sort of touchy-feely metacognition curriculum. Indeed, it is because of the specific details that students must master to get anything done that programming is such a good subject for learning how to learn.

Those specifics are essential to the task at hand (not some nebulous future need that is all most math or science classes manage), but they are easily looked up in on-line documentation with generic Google searches. Try googling things like python reverse string,HTML color, or c++ function pointer to see how easy it is to get online tutorials and documentation on specific details.

It is completely reasonable for a teacher to give students concepts and keywords, but expect them to look up some of the details for themselves. For example, a teacher might explain RGB color space and how colors are often encoded as three one-byte numbers in hexadecimal format, but not give any specific color codes, expecting students to find the codes they need either by experimentation or by on-line search.

In the approach I’m suggesting, the students are still focused on the details of the coding language, but they are also learning how to learn (at least at the lowest level of learning how to look up specific facts).

Teaching students how to learn more complex concepts on their own (like how to choose which color space to work in) is probably a forlorn hope, but getting them to learn to look up specific facts (like how to transform from HSV color space to RGB color space) and low-level details (like HTML color codes or how to reverse a string in Python) is certainly a reasonable expectation for an intro CS course.

Like this:

2014 June 22

There has been a lot written in the past year about unpaid internships and how they are (mostly) illegal ways of skirting labor laws. Internships in engineering have not been that way as long as I can remember (which means the last 40 years in this context). More typically, internships in engineering fields pay entry-level wages and are treated like entry-level jobs, except without the expectation of long-term employment. Companies often hire from their pool of interns, though, so the internship is something like probationary hiring.

Here is an example of a (somewhat poorly written) ad for an internship opportunity at a local company that is part of the game-design industry. I’ve left off the company name and contact information, because I don’t know how widely they were circulating the internship offer. I also rearranged some lines that seemed to have been scrambled in the e-mail copy I got of the job announcement.

Internship Highlights:

3–6 month duration, full-time during summer, p/t an option in the fall

$20-$30/hr salary range, depending on experience

Seeking CS students with the following backgrounds and interests:

Data friendly—most of what they do centers around data of various types

Statistics friendly—same as above

Don’t require lots of pre-existing knowledge

* Do require the ability and desire to learn

Ongoing development in three areas:

Web App—they have a python (django) based web-app; HTML & Javascript

Client work—they have client libraries that run on phones and tablets. This is actually more about client libraries like Unity or Corona than it is about core device programming

Server work—they’re a java shop on the server side.

In all areas, students with prior experience are preferred (i.e. client engineers who’ve used a game development framework before; server engineers who’ve written Java code, etc.)

Note that this internship favors experience, but it not calling out “must-have” specific platforms or languages. The (fairly small) company uses Python, Javascript, and Java all on the same project, with multiple different libraries—it remains useful for students to have learned several different programming languages and frameworks.

Also interesting is the specific request for students who know statistics—something that CS departments have historically not bothered teaching. Even with the recent emphasis on “big data”, the CS degree at UCSC requires no statistics, only a course on probability. If I were advising CS students, I’d suggest that they take the statistics course which is the followup to the probability course they are required to take. Currently, their list of approved electives doesn’t even include the statistics course!