Technology and the Values of a Liberal Education

From Academic Questions , Fall 1999


Barry S. Fagin: Professor of Computer Science at the United States Air Force Academy, CO 80840-6234, and Senior Fellow in Technology Policy at the Independence Institute, Golden, CO.


            Few would deny the dramatic impact of technology on scholarship and teaching over the past few years. Computers are now an essential part of college life, and many bright students who previously might not have considered “hard core” jobs in computer science can now find lucrative opportunities as network administrators and web site designers. Demands from parents and students to support technology-related education and infrastructure can strain already tight academic budgets, with less “relevant” departments in the humanities and social sciences feeling the pinch. Faculty too may feel overwhelmed by pressures to adapt their teaching methods to this brave new world: using email instead of office hours, placing course information online, and so forth.

            These issues are important, and have received extensive treatment elsewhere. Most of the writing on technology and education, however, focuses on the delivery of educational services and educational content: the how and what of a liberal education. We should be equally concerned with the why.

            Fortunately, the news is good. Faculty across the disciplines who are committed to fundamental principles of liberal learning will find them strengthened by increased student exposure to the computing sciences. Computer science can neither be taught nor mastered without embracing objective truth, critical thinking, and personal responsibility. Any discipline that reinforces these concepts in the modern university should be welcomed with open arms.


Computer Science and Objectivity

            The goal of computer science is to get computers to do what human beings want done. The challenge is both technical and social: human beings want things done better, faster, and cheaper today than yesterday, and often they do not know what they want until computer scientists show them what is possible. In a classroom setting, however, the environment is more controlled. Students are introduced to computer science by an instructor who knows exactly what he wants: successful completion of a programming assignment.

            Program correctness is not political correctness: correct software is not a social construct. If a program produces an incorrect answer, then it is wrong, period. There is no alternative perspective, no cultural context through which one can view the behavior of the program as being valid. This is why, for clearly worded and tested assignments, complaints from computer science majors about judgments of whether or not their programs work are virtually nonexistent. What is far more common are complaints that a given assignment is too difficult, concerns that they lack the knowledge to complete it, or visits to a professor’s office knowing that their program does not work without being able to tell why. The existence of a clearly understood programming problem and the self-evident failure of an attempt to solve it provide a visceral, experiential encounter with an objective truth that is independent of cultural bias.


Computer Science and Critical Thinking

            Critical, reflective thinking is an essential skill for those who aspire to become educated. The ability to ask oneself why one believes a particular thing, to ask about the evidence for and against a proposition, and to re-evaluate one’s position in light of new facts are all characteristics of a well-educated mind. These are precisely the skills one acquires as a computer scientist. The most productive programmers, the sharpest researchers, and the most effective computer science teachers are the ones who are constantly asking “What am I doing wrong?” “How can I do this better?” “What assumptions should I be questioning?”

            All science advances through continued falsification. Theories that hold up under repeated attempts to show them wrong are considered correct until something better replaces them: the longer they last the stronger we believe they are. Computer science is no different. Computer programs, strictly speaking, are never proved correct. They are repeatedly “falsified” by an intellectually rigorous process of discovering errors, testing with appropriately selected data, and repeating the process until further attempts to break them are not successful—in other words, by the repeated application of critical thinking skills.

            When a student beginning the study of computer science produces a program that does not work, the initial approach is to try different things more or less at random until the problem is solved. He soon discovers, however, that the most efficient use of his time is to try and develop appropriate answers to the question, “Why did this happen?” If he assumes that the proper way to test if two numbers are equal is with ‘=’ instead of “==” (a common mistake made with one programming language in particular), then he will learn that assumption is wrong when his program produces an incorrect answer. If he assumes that a user will only click the mouse in a certain part of the screen, he will learn that assumption is wrong when his roommate crashes the program.

            Students who are exposed to computer science learn very quickly that the best way for them to accomplish their work efficiently is constantly to question their assumptions: their assumptions about how they wrote the program, their assumptions about how the computer will work, their assumptions about what the inputs will be, and their assumptions about what users will do. Students who do not learn how to do this will find themselves spending hours more on their assignments than their humbler and more reflective colleagues, and are more likely to give up in frustration.

            Computer scientists, perhaps more than anyone else, reap immediate and satisfying rewards from critical, reflective thinking. This is one of the strongest arguments for requiring exposure to computer science as part of a liberal education.


Computer Science and Personal Responsibility

            Personal responsibility, accountability, and integrity are essential virtues, required for civil society to function. As such, they are key components of a liberal education. Students in pursuit of a quality education must take responsibility for their own learning; faculty who provide a quality education must always have this expectation whenever they take the podium. Any student of computer science who has ever struggled with getting a program to work will get acquainted with personal responsibility very quickly.

            The humorist and social critic P.J. O’Rourke has written, only slightly tongue-in-cheek, of “entire majors where nothing is anybody’s fault.” Computer science is the exact opposite: everything that goes wrong is somebody’s fault. Novice users and the popular press may anthropomorphize computers and blame the machine when something goes wrong, but computer scientists never do. Any student tendencies to do so disappear with a semester or two of exposure to the discipline.

            When a student’s computer program does not work, in the overwhelming majority of cases it is due to student error. More importantly, once he discovers the error, he recognizes where the blame lies. Over time, this repeated process of recognizing and acknowledging mistakes provides students with a direct encounter with personal responsibility. The most common sentiments computer instructors hear from students when debugging their code are “Man, that was so stupid!” “What was I thinking?” “Oops, I forgot about that,” and so forth. The worst thing a computer science student can say when he walks into his teacher’s office is, “My computer isn’t doing this right.” A computer science professor knows that he has done his job when a student comes in and says, “Something is wrong with my program. I’ve tried some things to figure it out, but I need help.”

            Personal responsibility is endemic to computer science. Attempts to blame society, culture, or one’s background for a flawed program will not produce working software.



            Scholars in the humanities and social sciences have legitimate concerns about the impact of computer technology on their budgets, their time, and their institutions. The discipline of computer science, however, is extremely well suited to the values of a classical liberal education: students who study it become intimately acquainted with objectivity, critical thinking, and personal responsibility. As such, computer science and computer technology should be a welcome ally in the battle for the soul of America’s universities. In the long run, they inculcate values and intellectual habits that represent the best in American higher education.