**Computer Science requires critical
thinking skills:**

It is the job of the entire Computer Science degree program to teach its students to think critically. Every Computer Science course requires students to clarify their thoughts sufficiently so that those thoughts can be expressed in a form that a computer can carry them out. The various courses in the program focus on different areas of critical thinking, but each has as its primary objective to teach students to think critically in that area.

Programming a computer to perform complex operations is probably more demanding of critical thinking skills than almost any other activity.

· First, before one can write a computer program to do something, one must understand what the program is supposed to accomplish. Since the intended objectives of a software system are described in English (at best), significant critical thinking skills are required simply to understand what is to be done.

Often the objectives of a software system are not described in any language. Software developers are required to interview the intended users of the system to try to determine what really is needed. This is often an extraordinarily difficult job, which requires quite sophisticated critical thinking skills.

· Second, students must determine, in precise detail, how the objectives determined by the previous step may be accomplished.

· Finally, students must express the required steps as a computer program. A computer program is a text in an unforgiving language, a programming language. Programming languages are interpreted more formally and literally than virtually any other language in existence. Syntax and semantics are rigidly defined. Everything must be correct for the program to operate properly.

Accomplishing these steps successfully requires well honed and sophisticated critical thinking skills, skills that students are forced to develop through their studies in Computer Science.

Besides the general discipline of critical thinking students develop in their course of their studies, students are also required to learn the formal elements of logic.

·
Students learn Boolean Algebra (truth tables) and the
propositional calculus when writing programs containing conditional (**if-then-else)**** **and
looping** ****(while-do)**
control structures, as all computer programs do.

·
Students learn SQL, which is derived from relational
algebra and relational calculus, variants of the predicate calculus, in our
required database class. Students also learn to manipulate (predicate calculus)
quantifiers in **CS 386**, our required theoretical Computer Science class, in
which they prove properties of automata and formal languages.

In short, the Computer Science degree program is 4 years of intensive training in critical thinking.