← Back to context

Comment by pxc

5 hours ago

As someone who ended up getting two bachelor's degrees so that I could somewhat deeply explore diverse subjects, I think schools would do well to have strong, distinct programs in:

  - computer science
  - computer engineering
  - software engineering
  - mathematics
  - some kind(s) of interdisciplinary programs that interweave computing with fine arts, liberal arts, or business, e.g.,
    - digital humanities 
    - information science
    - idk what other disciplines

and provide generously list courses taught in one department but highly relevant in another under multiple headings, for use as electives in adjacent minors and majors.

IIRC, when I was in school, my university only had programs in "computer science", "electrical and computer engineering", "management information systems", "mathematics", and an experimental interdisciplinary thing they called "information science, technology, and the arts". Since then, they've created a "software engineering" major, which I imagine may have alleviated some of the misalignment I saw in my computer science classes.

I loved the great range of theory classes available to me, and they were my favorite electives. If there had been more (e.g., in programming language design, type theory, or functional programming), I definitely would have taken them. But if we'd had a software engineering program, I likely would have tried to minor in that as well!

To me, it's an old-school liberal art (like geometry and arithmetic) that specialists typically pursue as a formal science (that is, a science of logical structure rather than experimentation, like mathematics or Chomskyan grammar). The engineering elements that I see as vital to computer science per se are not really software engineering in the broadest sense, but mostly about fundamentals of computing that are taught in most computer science programs already (compilers, operating systems, binary operations, basic organization of CPUs, mainframes, etc.).

My computer science program technically had only one course on software engineering per se, and I think schools should really offer more than that. In fact, I think that's not enough even within a "computer science" program. But I think the most beneficial way to provide courses of broader interest is with "clear but porous" boundaries between the various members of this cluster of related disciplines, rather than revising core computer science curricula to court students who aren't really interested in computer science per se.