Since returning to academia, I have found myself increasingly involved in what one might call academic administration. In particular, I have worked on a number of educational and curricular efforts at both the undergraduate and graduate levels. Along the way, I've developed some strong opinions about how to think about computing as an intellectual enterprise and tried to put that into practice.
What is Computing?
I think that a lot of confusion about computing comes from an assumption that computing must be either mathematics, or science, or engineering. This assumption is unsurprising because it is easy to draw those connections. Like mathematics, we build models; unlike mathematics’, our models are active and effect-making: they cause things to happen. Like science, we study a system that exists in nature; however, like engineering, our systems are artificial technology and subject to complex trade-offs in implementation. Computing also bears resemblance to the arts—the creation of artifacts—to humanities—the study of texts—and to the social sciences—the study of humans and societies.
For me, the differences are simple to state: Computationalists grok that models, languages, and machines are equivalent.
I would define computing in the way that my co-authors and I have in ACM SIGCSE Bulletin, 41(4): any purposeful activity that marries the representation of some dynamic domain with the representation of some dynamic machine that provides theoretical, empirical, or practical understanding of that domain or that machine. Often but not always, computationalists then further actualize those representations by executing them on a physical computing artifact.
In other words, computationalists create automatable models. As such, the practitioners we often call computer scientists and those we often call information scientists are both engaging in computing. In fact, this definition might well encompass parts of operations research, business processes, and even sociology or ethnography, provided that the results are automatable or automatically manipulable models.
Some computationalists build running models, or machines. Others construct intellectual models that are more abstract than concrete. Some computationalists focus more on understanding the machines, others on the domains. In any case, every computationalist’s intellectual toolkit includes both the activity of automation and the ways of thinking—disassembling domains, carving them at their joints—that make this automation possible. Computationalists often build models of processes including concurrent, distributed, and human processes.
The important point here is that computing is a way of thinking as well as doing. It is more a mindset than a skillset or toolset. Much of the benefit of the computationalist mindset comes from this activity of fitting the model and the language to the needs of the domain. When computationalist thinking met biology, the transformation changed the language that biologists use to describe their own artifacts. Computationalist thinking requires a precision and a disambiguation that is clarifying for the domain to be modeled. Computationalists become proficient in crafting intellectual segmentations of domains that themselves can be significant contributions. But the full impact of computationalist approaches comes when the automation power of the artifacts can be combined with the intellectual tools.
What do I do about Computing?
We are currently living through an explosion in demand for Computing from students and employers alike. Unlike in previous cycles, the growth in majors isn't actually the interesting part; rather, the interesting part is the demand from non-majors. This change in demand reflects just how much computing has become central to, well, everything. The growing centralization comes with responsiblities. First, we must not confuse becoming more central with being more important. It follows then that, second, we must embrace the reality that just as computing is changing everythng around us, everything around is is changing computing. It is increasingly clear that computationalists need to think more clearly about the impact of their work on society as a whole, something that requires the involvement of everyone who will be impacted… which is to say, everyone. Thus, third, we must work to involve everyone in our growth.
To this end, I spend a lot of time working with organizations for broadening the computing community, including increasing participation and enrollment among students at all levels and in the professoriate. My goal is to help make the computing community as broad in its participation as it is broad in its intellectual interests. Some of these efforts are supported by various grants and some just with my time. In particular, I am the founding Executive Director for the Constellations Center for Equity in Computing. Our mission is to expand access to computer science education to underserved communities.
On the curricular front, I am an architect of the undergraduate Threads curriculum, a structuring principle for computing curricula. Threads are not simply areas of computing; rather, they provide a cohesive, coordinated set of contexts for understanding computing skills. The union of all threads covers the breadth of computer science. The union of any two threads is sufficient to cover a computer science degree. The first class to enter under Threads started Fall, 2006. We've done a lot of assessment of the program and have worked to extend the idea and have it adopted at other departments and programs. We cover the Threads in some detail during CS 1100 (Freshmen LEAP) every Fall. The official web site is a good place to start otherwise, and naturally the CS advisors are the definitive source of information.
Although it is different in scope, our MS CS degree also reflects the Threads idea in that we have created specializations to provide specific but flexible paths through an MS degree. We began implementing that program in 2010 and it appears to be successful
Speaking of the MS CS, I am also intimately involved in the OMS CS, the first Master of Science in Computer Science that students can earn exclusively through the Massively Open Online Course delivery format. We have worked hard to ensure that the degree will not only reflect the quality of our well-regarded on-campus MS, but that it can be delivered for a fraction of the cost of traditional, on-campus programs.
I am truly excited about this effort. I said earlier that I'm about making the computing community broader. I hope that we will be able to provide a truly top-tier experience in a way that is accessible to orders of magnitude more than any on-campus degree. We are more than five years in now, and have begun to really assess the program and we appear to be living up to the promise if not the hype.
As I have moved from Assistant Professor to Associate Professor to Professor, I have also moved to Associate Dean (where I oversaw all things academic affairs-y in the College, including undergraduate, graduate, and off-campus programs as well as related recruiting, outreach, operational, and strategic initiatives), to Senior Associate Dean (adding Faculty Affairs, some Development, and additional strategic initiatives), to Executive Associate Dean (adding a bunch of financial, administrative, and operational roles), and now to Dean of the College of Computing.
In addition, I have sat and sit on a ridiculous slew of committees and boards, for a variety of purposes. I won't list them here but there are a whole lot of them.
Apparently, I enjoy this sort of thing. More to the point, I do it because I think it's a reasonable way to have the sort of impact I'd like to have on the field. So far, it's been more than pretty fun.