College of Liberal Arts and Sciences
Computer Science & Software Engineering

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.