One thing Oxy prides itself on – or at least, one that that Oxy mentions in its advertising – is that the college is located in urban Los Angeles. The standard narrative is that theater students can read about the history of a playwright one day, then watch professionals perform the opera the next day; that economics students can learn about globalization and immigrant one day, then interview people who have felt their effects the next day. Oxy has a Center for Community-Based Learning specifically to help faculty engage organizations in Eagle Rock and LA. Multiple faculty, in fields ranging from kinesiology to critical studies to philosophy, have worked with the CCBL to create courses where the community plays a crucial role.
I decided to join in the fun in the fall when, while drafting the new computer science minor curriculum, I added a Practicum course as one I would like to develop. The idea is that students in this course would work in groups on a single project (per group) for the entire semester. The actual problem they were solving would depend on which member of the community they were working with. (CCBL includes the faculty and offices of Oxy in their definition of community.) Pedagogically for computer science, this would essentially be a Software Engineering course, for students to learn about working in teams, agile development, user-centered design, and so on. The twist is that CCBL works with many non-profit organizations that tackle specific social justice issues in LA: gentrification, police abuse, intersectional public health, urban education, and many others. By working closely with these organizations and the population they serve, the goal is for students to also experience first-hand how technology intersects with other disciplines.
Due to my existing teaching responsibilities, I didn’t think I would have a chance to implement this course for several years. But then several students approached me about doing an independent study, and I realized that having one group of students and one community partner would be the perfect way to pilot what could be an unmanageable course. With help from the CCBL, I got in touch with the Southern California Library (SCL), which has a physical collection of documents from local non-profits but no funding to digitize them into a form easily usable by archivists. If everything goes to plan, my students will be dipping their toes into image manipulation and optical character recognition, while figuring out how to create something that can be used by both the library’s volunteers (who will provide the labor for scanning/photographing the documents, but who may be technologically illiterate) as well as the archivists (who may want documents to be organized and presented in specific ways).
A course like Practicum seemed so natural to me, that only after I have talked to SCL did I realized what my influences were. The name Practicum came from a computer science course I took as an undergrad. The course was a quarter-long project, but all the projects were about improving the performance of some kind of AI. Since the AI was part of the professors’ research, the course was basically group-based directed research (with some software engineering).
The other influence which I had forgotten about, however, were my undergraduate engineering design courses. My first design course was an engineering requirement, but I continued in the curriculum (ultimately getting a design certificate). All the courses were quarter-long projects (and one spanned two quarters), but crucially, we were working with organizations like the Rehabilitation Institute of Chicago and the Shedd Aquarium. It was in these courses that I learned about user-centered design, but it fits so seamlessly into computer science (especially human-computer interaction) that I had forgotten its separate disciplinary origin.
To be honest though, increasingly I have been thinking about teaching computer science as engineering design. While I doubt upper-level computer science courses can be taught this way, I see multiple parallels at the introductory level that may guide students into the right mindset. It’s not just in the process of iterating and testing, but also the consideration of goals and the breaking down of functional requirements and components. I suspect courses like Practicum are also great ways to tie computer science into all the other disciplines in the liberal arts, and I fully intend for the course to be required for computer science majors.