Computer Science & Software Engineering
Computer Science & Software Engineering is housed in the
College of Liberal Arts and Sciences. On the CLAS website there is
a statement of the core values of a liberal education.
Here, we discuss and elaborate on how we see CS&SE as part
of a liberal arts education. The quotes below are from the core
values document cited above.
The liberal arts' basic and historic purpose is at once to
teach us to think for ourselves, to act wisely and well in the
world, to undertake occupations useful to ourselves and
others.
All CSSE majors are required to take CS485, Computer Ethics. In
this course, we study ethical dilemmas and societal concerns as
they relate to the computing professions. The goal of this course
is not to tell students what is right and what is wrong, but
rather, through class discussion and the analysis of specific case
studies, to learn how to approach and analyze tough situations, and
to understand the impact our decisions can have on our co-workers,
clients, loved ones, and the world as a whole.
Certainly an occupation in computer science or software
engineering can be very useful, and the work we do can help the
world. It would be difficult to imagine daily life without the
algorithms and software that make our cars, cellphones, iPods, and
other gadgets work; most people use computers at work or at home on
a daily basis for a wide variety of tasks; now that we have the
web, how would we function without it? Algorithms and software are
behind all these things, and for us, working on this stuff is
fun.
Liberal arts education seeks ultimately to open us to the
human condition in its pains and joys, thereby to nurture our
personal integrity, and to foster in us compassion and respect for
those whose lives we share in our own communities and around the
world.
Our Engineering Projects in Community Service (EPICS) course
seeks to expose our students to the rewards of community service
through software projects developed for non-profit and charity
clients.
The liberal arts develop not only critical but also creative
skills, not only rational analysis but also creative
expression.
Our discipline is certainly very mathematical and analytic in
nature. We call the development of software an engineering process.
But the writing of a program can be a very creative and fulfilling
activity. As we work on our code, removing the flaws (which we call
bugs) and extending its functionality, over time it seems to take
on a personality of its own. Its code can be ugly or a thing of
beauty. And then we run our code, and we can interact with it, and
it does things for us, and it seemingly comes to life! If that is
not the essence of the creative process, what is?
The Latin word ars means at once skill, knowledge, and
practice. A liberal arts education begins with the skills of
language and thought. ... These skills allow us to tackle
and solve increasingly difficult and challenging problems,
appreciate sources of bias and means of overcoming them, and
entertain arguments from dissonant points of view. They develop in
us a sense of subtlety, depth, and complexity.
Our major program begins with a course on mathematical problem
solving. Our students learn to think algorithmically and to
communicate algorithms both to other people and to a computer as
programs written in various programming languages. And they
practice these skills over and over again.
Our students take a journey as they improve their programming
skills. In their first course, they may write a half-page program
to convert degrees Fahrenheit to Celsius. By the time they
graduate, they are writing large pieces of software that are
thousands of lines long, such as building a compiler, encrypting
messages using the RSA public-key algorithm, or solving research
problems on a supercomputer. They learn deep truths about
algorithms, such as the Recursion Theorem (a program can, as its
output, write a program more complex than itself), or the
unsolvability of the halting problem (no program can ascertain
certain simple behaviors about other programs, like whether they
will ever stop running), or that it is essentially impossible to
write extremely large software that is bug-free.
A liberal arts education sees the cultivation of these
skills not only as an end in itself but also as a preparation for
the pursuit of knowledge and the other purposes of human
life.
In the end, computer science and software engineering, as
disciplines, are about solving problems for people in all areas of
human life. And people are drawn to the computing professions in
part because of the need to always be learning, and to find new
ways to solve problems. Humanity will never run out of problems to
solve.