  Software engineering (SE) and usability engineering (UE), as disciplines,
have reached substantial levels of maturity. Each of these two disciplines is
now well represented with respect to most computer science (CS) curricula. But,
the two disciplines are practiced almost independently - missing oppurtunities
to collaborate, coordinate and communicate about the overall design - and
thereby contributing to system failures. Today, a confluence of several
ingredients contribute to these failures: the increasing importance of the user
interface (UI) component in the overall system, the independent maturation of
the human computer interaction area, and the lack of a cohesive process model
to integrate the UI experts' UE development efforts with that of SE. This in
turn, we believe, is a result of a void in computing curricula: a lack of
education and training regarding the importance of communication, collaboration
and coordination between the SE and UE processes. In this paper we describe the
current approach to teaching SE and UE and its shortcomings. We identify and
analyze the barriers and issues involved in developing systems having
substantial interactive components. We then propose four major themes of
learning for a comprehensive computing curriculum integrating SE, UE, and
system architectures in a project environment.
