The Iliad and the WHILE
Loop:
Computer Literacy in a Liberal Arts Program
David Arnow
Department of Computer
and Information Science
Brooklyn College City
University of New York
Brooklyn, New
York 11210
e-mail: arnow@sci.brooklyn.cuny.edu
Abstract. A required computer literacy course whose design
and implementation were greatly influenced by that of required courses in
classics and other liberal arts is described. The course is an instance
of the new trend of principles-based courses, but does not take the survey
approach. Topics are chosen selectively on the basis of importance to the
field, usefulness in demystifying the computer itself, and their ability
to be compatible with a hands-on, exercise-oriented pedagogy. Topics include
sentential logic, digital circuit design, information representation, a
Pascal subset, program hierarchies and software engineering principles.
The course has been successfully run in over 30 sections with over 1000
students.
Publication Information: This Brooklyn College Technical
Report was presented at the SIGCSE Technical Symposium during ACM Week 1991
and appeared in the conference proceedings for that symposium: The Iliad
and the while
loop. Proceedings of the 22nd SIGCSE Technical
Symposium, San Antonio, Texas. (March, 1991).
Introduction
For the past three years Brooklyn College has been steadily expanding an
experimental computer literacy program which takes its inspiration from
required courses in classics, history, music, political science and other
liberal arts courses. The experimental program is an attempt to find an
appropriate design for a required and historically problematic freshman
computer and math literacy course in Brooklyn College's nationally recognized
Core Curriculum, a set of general education courses required of all students
at the college [2]. The program currently involves seven sections of roughly
35 freshmen and sophomores studying topics in propositional logic, circuit
design, programming and software engineering principles. The focus of this
paper is on the computer science part of the course.
The key problem in this effort was to identify the goals, in terms of skills,
content and sensibility, that such a course could reasonably have, given
a number of constraints. One constraint was that all non-science students
were required to take the course. As a consequence there would inevitably
be students who are reluctant or poorly prepared or both. Another consequence
was that because the course is required of all students, it must be worthwhile
for all students. Another constraint was that the course had to be common
for all students. Hence there could be no tailoring of the course for particular
majors. A third constraint was that the course was to be a semester-long
course without extra laboratory credit. Fourth, since students were required
to complete the course in their first two years of college study, the course
had to be accessible to and palatable to freshmen. Finally, in addition
to the above college-imposed constraints, the designers of the program wanted
the course to attract students, particulary women and minority students,
to the fields of mathematics and computer science.
The Brooklyn College Context. The Brooklyn College students are an
ethnically heterogeneous group of working-class students. Many students
are immigrants or members of minority groups. Many enter college with significant
skills deficits in mathematics, reading and writing and are required to
take remedial courses. For a large number of students English is not their
native tongue.
The course in question is offered by the Math and Computer Science departments.
The latter, even with the nation-wide drop in computer science majors is
still understaffed with respect to its undergraduate and graduate programs.
Although the original mandate for the Brooklyn College Core Curriculum demanded
that only full-time faculty from an appropriate department teach the course,
fiscal and personnel realities force the department to staff the course
with adjunct instructors, graduate students and faculty from other departments
as well.
The Core Approach
A significant aid to the development of the pilot program was the example
of other Core courses, particularly those in classics, social science and
history. These courses successfully introduced freshmen with analogous deficits
(difficulty in reading demanding text, weak writing skills, general knowledge
deficits, etc.) to Plato, the Iliad, Weber, Marx, Locke and other classic
writers. This success itself was important because it demonstrated that
advanced material can be made accessible to beginning Brooklyn College students.
In addition, the details of the designs of those courses taught a number
of important lessons that were critical in developing the pilot. First,
it is essential to have material that is new to the student and relatively
advanced- material that is not a repetition at a slightly higher level of
high school work. Second, good material is its own reward- if the material
is fundamentally profound then it can be taught to and appreciated by students.
Third, selectivity is extremely important. Attempts at broad coverage will
end in failure; success comes not from "reaching for the stars"
but from "reaching for a star". For example, in the classics course,
students do not read all of the Iliad - but they do read several chapters
and go through a careful line-by-line exegesis.
The most important effect that the Brooklyn College Core approach had was
that it forced a reconsideration of the idea of computer literacy.
Rethinking "Literacy"
The term "literacy" has come to have many different meanings when
qualified with words like "computer". What I mean by (and what
I believe everyone else means by) "X literacy" is whatever I want
those who are outside the field of "X" to know about the subject.
As a result, the definition of particular technical literacies is determined
by social values.
As a starting point, I pose the question, "do we want our students
to be trained as consumers or producers?" This can be extended to one's
vision for America- are we to be a nation of consumers and service-oriented
workers where the fastest growing segment of the workforce flip hamburgers
and where technology is imported or do we want to continue our role in world-wide
technical leadership? The answer to this question in part determines definitions
of technical literacy. Consumers need to be able to use technology in relatively
superficial ways. Producers need to understand technology.
Another question concerns immediate social gratification. Is it essential
that the results of technical literacy education manifest themselves within
a few years of graduation (in the form of a job perhaps)? If the answer
is "yes", then technical literacy will focus on immediately useful
skills that may be quaint or irrelevant in a decade at the expense of concepts
and skills of long-term utility. Like Van Dyke [5], at Brooklyn College,
we believe that an education for the non-technician must have the broadest,
long-term perspective possible.
Exorcising alienation from technology and an avoiding uncritical reliance
on mechanical procedures was another concern. Eliminating technology-alienation
requires demystifying the technical. Is this to be accomplished by demonstrating
the utility of technology ("you and computers", "you and
nuclear energy", etc.) in the absence of an understanding of its principles?
My answer, as can be surmised from the framing of the questions, is "no''.
Principles are paramount. The college's social values demand a concept
of technical literacy that will lead to a population of technological leaders,
that will serve students fifteen and thirty years after graduation as well
as one year after graduation and which eliminates alienation from technology
through understanding rather than through a Pavlovian acquisition of a mindless,
however useful, procedure. To define this kind of technical literacy, one
must identify the fundamental, enduring principles in the subject and find
an approach that makes these principles accessible to the non-technical
student.
Computer Literacy: Demystification. In the pilot program, computer
literacy means knowing what a computer is, concretely and abstractly. That
requires, then, an understanding of how the hardware works and experience
with the techniques by which the digital circuits which comprise a computer
are designed. This also requires an understanding of what a program and
experience with some techniques for constructing programs. Finally, the
concrete conception of a computer demands that students understand how complex
systems are constructed out of simpler ones, both in the hardware and software
media. This in turn leads to the idea of a universal machine and the essential
abstraction of a computer.
Course Organization
The first half of the course is a study of elementary propositional logic
which emphasizes the connections and differences between logic and "everyday"
reasoning, the significance of language and language issues such as ambiguity,
the utility of symbolic and formal methods, and the distinction between
form and content. Though that constitutes the mathematics component of the
course, these themes are repeated in the second half of the course, the
computer science component.
The treatment of computer literacy commences with an informal discussion
of information and information representation. A very brief review of the
requirements of digital electronics then directs that discussion to the
machine representation of information which leads into a thorough discussion
of numeral systems, the binary in particular.
Logic gates are introduced, along with circuits and various tools that are
useful to their design and analysis. The students have no difficulty whatsoever
with truth tables and logic expressions, having already encountered these
in the mathematics component of the course. To guarantee this, and because
parsimony was a design principle in the course, only AND, OR and NOT gates
were used.
A pleasant surprise was that the students also had no difficulty understanding
and using Disjunctive Normal Form as a means of methodically designing circuits.
By the end of that unit, most students could take an informal description
of an operation and construct a truth table, DNF logic expression and a
circuit that would carry out the operation. This helped achieve one of the
broad goals of the course, the illustration of the construction of complicated
systems from very few, simple elements.
Architecture in general is not discussed in the course. The students do
not learn about memory implementation, buses, program counters, functional
units and other fundamental components of computer systems. Nonetheless,
the students definitely do leave the unit with a clear idea of how a physical
machine can manipulate the physical manifestations of symbols in an apparently
intelligent fashion. Although many mysteries may remain, a fundamental one
has been resolved for the students.
In the second and last unit of the computer literacy component, the students
are taught a tiny subset of the Pascal language: integer variables, READLN,
WRITELN and WHILE loops. This subset is taught in
a rather formal fashion. The tokens and token classes are first introduced.
After this, the syntax is introduced, and then the semantics of the subset
are explained.
This approach is taken first of all because many students are weak on language-consciousness
altogether and an exercise in considering language structure is generally
useful to them and second because this approach allows mastery of the subset
language at a certain level before the student is asked to develop programs
on his or her own. This approach is feasible only because the subset is
so tiny. Expressions are limited to at most a single operator. Only two
relational operators are used. The READLN operation is restricted
to a single operand. WHILE statements always use BEGIN
END. The conditional, FOR loops, procedures, etc.
are not introduced.
Once the language issues have been addressed, the next focus is the development
of two iteration paradigms- counting and testing, both using the WHILE
statement.
Finally, a number of programs which build on the theme of achieving complexity
by repetition of simple operations are developed. These invariably include
addition by repeated counting, multiplication by repeated addition, etc.
Since the student already has seen how hardware can add, he or she has a
vision of how operations as complicated as logarithms and exponents can
be carried out and how they ultimately are based on a few very elementary
primitives.
The course can then be concluded with a discussion of universal machines
and software engineering principles.
Course Implementation
A good topic list is insufficient for the success of a course like this
with this student population. A viable implementation is essential. Because
students tend to be passive it was essential that the course not be a narrative
one. There was virtually no topic or sub-topic covered which did not demand
active involvement on the part of the student. This involvement also had
to go beyond the assignment of homework problems. In-class exercises, workshop
style group discussions, extensive faculty interaction were vital to the
course's success. Because this style of teaching differed from the usual
lecture/homework/computer lab approach that is used in most of the other
computer science courses, faculty were called upon to change their teaching
methods. Although that is a non-trivial demand, accomplishing this at Brooklyn
College was in part facilitated by a series of summer faculty development
seminars which were conducted to review the entire Core program and which
clarified the approach of this and other courses. These seminars introduced
faculty who had been using traditional pedagogical methods to the techniques
that are crucial to the program's success.
The Advantage of the Logic Component
The presence of the mathematics part of the course, though mandated by the
structure of the Brooklyn College Core Curriculum is not viewed as a drawback
by the computer science faculty teaching the experiment. On the contrary,
we view it as essential and would teach logic in the course even if it were
strictly a computer science course. There are several reasons for this.
First, like Myers [4] and others, we recognize the special role that logic
has in computer science. Sharing that perception with students, even at
this level, yields two benefits with regard to recruiting potential computer
science majors from would-be nonmajors. One benefit is allaying a fear of
mathematics. Including at this level a presentation of the branch of mathematics
that is most closely associated with computer science (logic), reduces that
fear. The student sees that he or she can master that material and apply
it to computer science. The second benefit is that students who are recruited
as majors from this course approach the discipline with the proper attitude.
They know the importance of careful reasoning, formal treatment and mathematics
before they take the introductory course (for majors).
Second, as was mentioned, the study of elementary logic is very useful in
the discussion of the design of digital circuits.
Finally, much of the work in the logic portion of the course involves formalizing
and evaluating informal arguments. We believe that the intellectual skills
involved in examining an informal argument and identifying the relevant
propositions while discarding the irrelevant phrases followed by symbolizing
the argument are closely related to the skills needed to develop a program
from an informal specification. Hence, these are skills that we are only
to glad to foster in potential majors.
Results
So far the pilot program has been very visibly successful. The course is
very teachable- full-time computer science faculty who avoided it in its
previous incarnation as an elementary BASIC programming or LOTUS course
now find it an enjoyable contrast to their graduate or advanced undergraduate
courses. At the same time, the course has been successfully taught by graduate
students, adjunct instructors and even instructors "borrowed"
from other departments. Students no longer view the course as the most feared
or disliked of the required Core courses, and many openly express their
appreciation of it. The failure rate (Fs, Ds, or withdrawals) has fallen
from 45% to 20%. Grade distributions have changed as well. Instead of the
bimodal distribution of the past, there is a uniform distribution of As,
Bs and Cs with a decidedly smaller numbers of Ds and Fs. Faculty report
that they no longer have to use any "curving" in order to have
socially acceptable pass rates.
Discussion
The pilot program has demonstrated that a principles-based approach to computer
literacy is viable for an urban working-class student population. It has
also shown that success is predicated on the concurrent development of faculty,
curriculum, course material and teaching methods.
For the most part, the course may be viewed as an example of a new trend
in computer literacy courses [1,3]. The new trend emphasizes principles
rather than familiarity with utilities or watered-down programming courses.
In several important ways, however, this course differs from these new proposals.
The course is limited in breadth. However disappointing that may be to some,
such a limit is vital to making this approach viable for the Brooklyn College
population. Because of this limit, great care is involved in selecting the
topics to be treated. Furthermore, this course rejects the narrative approach
that a survey of the important ideas of computer science must inevitably
use. Instead, the hands-on character of the earlier types of computer literacy
courses is preserved, by developing new teaching techniques and by selecting
the topics covered to be those for which rich sets of exercises, in-class
and as homework, can be generated.
The course is a work in progress and much remains to be done. There are
two major omissions from the course that need to be addressed. One is the
absence of functions from the programming component. Although the course
takes a decidedly minimalist approach, the benefits of including functions
far outweigh the disadvantages of additional syntactic and semantic clutter.
The other is a digital logic lab so that students can have a hands-on experience
with the circuit design material.
The Iliad
It is worth emphasizing the lessons that the designer of this course drew
from the Brooklyn College Core classics course.
- ·Don't underestimate the students. Even students with relatively
weak backgrounds and skills can learn sophisticated material. The Iliad
is difficult for students and requires them to learn a new way of reading.
Yet they succeed.
- Abandon full coverage. Attempts to cover all the areas that are important
will end in disaster. If the classics course read the whole Iliad, it would
never get to Plato. Selectivity is essential.
- Choose material that is of enduring value (a relatively trivial task
for classics, one that is not so easy in our discipline).
- Adapt teaching methods to the needs of the students and the requirements
of the material. Hands-on activity, in-class exercises, study groups, term
papers are essential.
Acknowledgments. The course was developed by the author of this paper
and Naomi Bushman of the Department of Educational Services (Brooklyn College).
The impetus for its development and many of the discussions concerning it
took place at Core Faculty Development Seminars that were originally organized
by then-Provost Ethyle Wolfe and funded by the Mellon Foundation.
References
[1] Alan W. Bierman, "An Overview Course in Academic Computer Science:
A New Approach for Teaching Nonmajors", The Proceedings of the Twenty-first
SIGCSE Technical Symposium on Computer Science Education, (March, 1990).
[2] Lynne V. Cheney, "50 Hours- A Core Curriculum for College Students",
National Endowment for the Humanities, (October, 1989).
[3] J. Paul Myers, Jr., "The New Generation of Computer Literacy",
The Proceedings of the Twentieth SIGCSE Technical Symposium on Computer
Science Education, (February, 1989).
[4] J. Paul Myers, Jr., "The Central Role of Mathematical Logic in
Computer Science", The Proceedings of the Twenty-first SIGCSE Technical
Symposium on Computer Science Education, Louisville, Kentucky, (March ,
1990).
[5] C. Van Dyke, "Taking 'Computer Literacy' Literally", Comm.
ACM, 30, 5, (May, 1987).
Back to David Arnow's CS Education Page.
tc