This is a guest post by Lirael.
I’m a PhD student in computer science at a university where most of the undergrads come from pretty affluent, educationally privileged backgrounds (as I did myself, back in my undergrad days). I’m a teaching assistant and/or tutor for a couple of different programs that we have for students who are not from such backgrounds. One is for students who are motivated but have been educationally disadvantaged in some way (whether this was poverty, major illness in high school, an unstable housing situation, war in their home country, or any other life circumstance that would have left them at a disadvantage in their schooling), who take catch-up classes as a cohort and get extensive advising in order to prepare them for a full undergrad program. The other is for students who are first-generation college students or who come from families with incomes below 150% of the poverty line, and gives them free tutoring, extensive advising, career prep, and leadership development. Some students are in both programs. Neither program is exclusively for students of color or poor students, but in practice, most of my students are both.
Computer science has unusual status compared to most science, social science, and humanities programs, because so many people associate it so strongly with a quick and direct path to good jobs. There is some truth to this association – when I graduated from college at 22 and started my first industry job, I had a salary that put me in the top 20% of all US wage earners, plus excellent benefts and good working conditions. This gives computer science obvious appeal for my students (and for other marginalized groups — I have a friend, a trans woman, who teaches at a program to ecnomically empower other trans people by teaching them to code). It also makes it very popular at, for example, many community colleges.
My concern, though, is what sort of computer science marginalized and underrepresented groups are learning in the name of economic advantage.
Some community colleges have excellent offerings, of the sort that will prepare their students well for upper-level classes. In others, the curriculum seems to be dominated by courses that could be described as “How to use a currently-popular technological tool for immediate commercial applications.” Sometimes they are “Intro to a currently-popular computer language.” There’s generally a data structures class, but not much else on the more foundational side of CS. Some four-year departments like this approach too. The thing is that in the tech world most of these skills and languages are likely to be archaic in a few years – I don’t often see job listings asking for people who know Pascal or BASIC or who can hand-write websites in HTML or make an eye-catching GeoCities site, all of which were in the currently-popular category when I was in high school. The CS programs, much more than, say, the biology or history programs, stress the idea that this is vocational training. Again, I don’t want to imply that every community college or state non-flagship is doing this, but I have noticed that plenty do, especially community colleges.
At schools where the idea that learning specific current tools = employability doesn’t drive the curriculum quite so hard –- which includes affluent schools with affluent student bodies — students focus on subjects like AI, algorithms, operating systems, robotics, computational biology, distributed computing, software design. They learn specific currently-popular skills in class projects or paid industry internships where they apply, say, AI to creating Android apps, or software design to creating a new video game. They don’t seem to have a problem getting good tech jobs after they graduate. Meanwhile, if a student from a vocationally-focused school wants to transfer to a prestigious one, will they be prepared for the classes at the new school? Will their credits from the vocationally-focused classes transfer?
Are there tech jobs where hiring managers care mostly that applicants have a list of buzzword Skills O’ the Day, and will seriously consider candidates whose whole CS education is an associate’s degree? Yep. What kinds of tech jobs, in general, are those? The crappy tech jobs. The code monkey jobs. The ones that pay less. The ones with less prestige and less respect. The ones that get outsourced to developing countries.
I think it’s incredibly important that people be able to get jobs after they graduate from college. It’s often more important for students from poor or working-class backgrounds, who don’t have family money to fall back on if they don’t get a job right away, so I understand why schools with many such students would be very concerned about employability. But I worry that focus on vocational training will ironically lead to less employability, and less upward mobility, for the people who need it the most. I also worry that increased focus on college as preparation for the workforce, which has had consequences already for the humanities and social sciences, will push computer science in the direction of vocational training.
I am not saying that there should be no vocational focus at all in computer science (indeed, some affluent schools have been criticized for not having enough of one) only that there needs to be balance. The course that I TA is an intro to computer science course focused on game design. Students learn basic computing and engineering concepts along with skills like how to create their own webpage and how to use game-creation software. I make a point of talking about how they can use what they’re learning in other fields, like biology or public health or economics, as well, since after all not all of them want to go into computer science. My hope is that they’ll get something out of it no matter what field they go into, and that if they do want to continue in computer science, they’ll be well-prepared to do so.