Computer Scientists Can Teach Writing:

Key Words: communications skills, writing, advanced courses, technical writing


The author's institution requires all students to take one course that concentrates on writing at the upper division (junior or senior) level. The computer science department offers one such course, taught by computer scientists. It concentrates on communications issues relevant to computer scientists and computer professionals, going beyond traditional "technical writing" to give students experience in oral presentation, document design, and writing in forms appropriate for various audiences. This course takes advantage of analogies between writing and software development and motivates computer science students to pay more careful attention to their writing.


Faculty often lament that their students lack good writing skills. Traditionally, computer science students take courses in composition offered by the English department during their first year and have few later opportunities to write extensively, particularly on topics in computing. In recent years the community of rhetoric and composition educators has addressed poor student writing by enhancing and expanding on traditional "freshman composition" in various ways, which computer science faculty wishing to improve students' writing might profitably explore. EndnotesEndnotes

One common practice, known as "writing across the curriculum," encourages instructors in all disciplines to include writing assignments in their courses. Specialized composition courses alone, while necessary and valuable, leave the impression with many students that clear, careful writing is something only English teachers care about. Computer science departments have adopted this practice. Endnotes

At the author's institution, a long-standing campuswide requirement complements and extends "writing across the curriculum", mandating that every student take one upper-division course that both requires a significant amount of writing and addresses writing-related issues as part of the course. Across campus, these courses share the philosophy that at the upper-division level, students benefit from hearing faculty in their own discipline describe the variety and quality of writing expected of practitioners in that discipline, and from actually doing that kind of writing. To satisfy the campuswide requirement, a course must be offered at the upper division (junior or senior) level. It must require that students submit at least 4000 words of revised prose--that is, prose that has been evaluated and returned to the students for revision and resubmission. The campus encourages departments to maintain a student-faculty ratio of no more than 20:1 in these courses, and to staff them with full-time faculty. Courses that satisfy this requirement may cover writing as an adjunct to other subject matter or may focus primarily on communications skills relevant to their discipline.

The author's department (of computer science) offers such a course. Beyond traditional "technical writing," this course covers a broad range of communications issues relevant to computer scientists, including oral work, writing for electronic media, and presentation graphics.

Course Goals and Structure

The course has four main goals:

* Provide a forum where writing is the main focus, rather than the usual afterthought of throwing together a project's documentation in the last half hour before it's due.

* Concentrate on the appropriate tone and level for a document's specific audience (e.g., management, novice users, technical staff)

* Explore writing documents of different sizes (analogous to "programming in the large" vs. "programming in the small"): Infinitesimal, such as Email subject lines; small, such as Email, memos, or brochures; and medium, such as proposals, papers, or technical reports.

* Practice writing in a variety of forms common to computer professionals, such as the following (not all of which would be required in a single offering of the course): Proposals or recommendations, technical arguments or policy statements, research papers, grant proposals, oral presentations, use of presentation software, effective graphics and document design, and writing for electronic media such as the Web.

Common Objections

Faculty in the sciences commonly raise these objections to teaching courses that focus on writing:

"Leave the English teaching to the experts." Indeed, when the author was first asked to teach this course, his reaction was to recall his own dissatisfaction with attempts by non-computer scientists to teach programming. But a computer scientist can reach advanced computer science students--by taking advantage of their common knowledge and experience and by making assignments that require technical expertise and are characteristic of the discipline--much more effectively than the typical composition expert who lacks a computing background. Successful academic computer scientists should all possess the requisite writing ability to teach this kind of course--the ability to recognize clarity, cogency, and good organization. Detailed grasp of grammatical terms and rules is much less important in a course such as this one.

"I don't want to correct thousands of mechanical errors." You shouldn't and you needn't. A course at this level should focus on organization, content, and appropriateness for the intended audience; the instructor must exercise some forbearance (to avoid becoming obsessed with syntax) and some redirection (of students with significant special needs to other, more appropriate resources on campus) to avoid being drawn down into a black hole of red pencil. In a later section we address some approaches to handling students' mechanical mistakes. Instructors should bear in mind that students at this level have passed lower division writing--they have had experience writing at the college level. Upper-division instructors should hold them to that standard; it may be lower than our ideal, but it is typically higher than the level of writing students think they can get away with when they're not being graded on their writing. When instructors make clear that written work will not be accepted unless students take the time to meet minimum standards of correctness and polish, the quality of the work does improve markedly. (Computer science instructors unfamiliar with the standards of their institution's composition program might consider meeting with those who run it. They can provide samples of passing work and possibly style sheets or other guidelines that they expect their students to follow.)

"I have too many non-native speakers." In the author's personal experience, some of the top grades in each offering of the course go to non-native speakers of English. Native language is largely independent of the primary focus of this course on cogent organization, which can shine through most minor syntactic flaws that are due to native language differences (as opposed to mere carelessness). Below we address English as a Second Language (ESL) issues further.

"It takes years of schooling and practice to develop good writing skills; how can one course make my students good writers?" It can't, but it can make them better writers, it can motivate them to pay closer attention and devote more time to their writing, it can show them models of writing in their own area, and it can dispel myths like these: "Writing isn't important for computer science," "I can use a grammar/spell checker," "I'm not a born writer, so I'll never be a good writer" "I'm not a native speaker, so I'll never be a good writer." Writing is a skill, and skills require practice to master. Any student will show improvement if he or she spends on this course half as much time as would be required for any programming project course at the same level.

Teaching Strategies

The following strategies make teaching a course like this one feasible, effective, and even surprisingly pleasant for a computer scientist:

* Require revisions. Writing is an iterative process of enhancement, revision, and polish. Students should no more expect to whip off perfect prose in one pass than they would perfect code. (After all, natural languages such as English are much more complex and less completely defined than formal languages such as C++ or Scheme.) Each student should submit a draft (not a rough drafts, but a serious attempt at quality work), the instructor (or in some cases other students, as described below) should read the draft, make comments, and return it to the author for use in preparing the final version.

* Use peer editing, in which students read each other's drafts, identifying confusing passages and making suggestions for revision. Students become inured to critical comments by faculty; their peers' confusion is harder to disregard.

* In students' writing, distinguish syntax and mechanical errors from flaws in the content or organization. Give separate grades for each, and keep the comments in each category separate (e.g., in different colors or in the left vs. the right margin).

* Don't be a human English compiler, red-penciling every syntax or mechanical mistake and refusing to proceed with evaluation at a deeper level. Mark mechanical errors on the first page, or the first paragraph, or the first ten problems, and then stop. If you can read the rest of the paper for its content and organization despite the remaining errors, do so; if not, require the student to polish the writing and resubmit it. As mentioned earlier, upper-division students should have mastered the mechanics, and that level of mastery should be expected and enforced. Indeed, we do students a disservice when we don't base a small part of every assignment grade in every class on the quality of the writing, because it gives the impression that we don't think that quality matters. Most institutions have learning skills centers or other resources to which you can refer students who need in-depth or remedial work on the mechanics.

* Try to recognize errors that are due to a student's native language not being English. Research indicates that second-language learning follows an ordered progression over many years, which cannot be greatly compressed, because some language features take longer than others to assimilate. You still must point out the errors and grade accordingly, but it should be understood that they stem from a long-term process rather than carelessness or weakness on the student's part. This requires that the instructor learn to recognize errors typical to native speakers of various languages; ESL instructors may be able to provide this information.

* As a long-term strategy for improving students' writing, encourage them to read broadly and frequently: the newspaper instead of the television news, a recreational novel rather than a movie or entertainment on television.

Representative Assignments

The following assignments comprise a typical offering of this course (in a ten-week quarter):

* "Warm-up"--Edit a few short passages for clarity, with a focus on the most common pitfalls and solecisms.

* "Trimming the Fat"--Choose a five-page (1500-word) passage and rewrite it in three pages (900 words), maintaining the content.

* "Writing Instructions"--Build some object using Tinkertoys, Lego, or some other system with more than one type of component that can be combined in more than one way. Write a manual that explains how to build this object. Bring your draft manual and the disassembled pieces to class on a specified date, when you will give both to a classmate who will try to build your object following your manual, without any in-person assistance from you.

This assignment follows most closely the technical writing tradition. Having other students try to follow the manual demonstrates the importance of clear, unambiguous writing in a tangible way.

* "Influencing Policy"--Write a letter to a policy maker (either a government official or a newspaper) taking a position on a technical issue and backing it up with the best reasoning you can.

We encourage students to start by listing their position and the points that support it in the form of a syllogism.

* "Graphics Activity"--Take a small supplied set of data and, using presentation graphics software, produce a variety of charts that support different perspectives or points of view.

* "Changing the System"--Choose a software system you're familiar with and examine it from multiple perspectives: introducing new users to the system, proposing changes to the system, and promoting the changed system to its users. This assignment has four separate parts:

1. An oral synopsis of the system and the changes you intend to propose (audience: our class, who may know something about the software and who may have suggestions about the proposed changes)

2. An introduction, both written and oral, to the current system (intended audience: novices, unfamiliar with the software, who need to learn its purpose and basic functionality)

3. A formal proposal, written and oral, describing and justifying the changes you propose (audience: the "higher-ups" who decide what changes should be supported; they know about the software but must be convinced of the need to change and the feasibility of the changes you propose)

4. A brochure, flyer, or web page and a short oral presentation describing and promoting your changes (audience: the system's current users, who know what it does now but need to know what the changes mean)

This assignment spans most of the term, with class days devoted to the oral components and drafts required for the written parts. Each of the four parts addresses a different aspect of the same subject matter, allowing students to concentrate on the differences in audience and presentation level.


Writing is very much like software development, and the similarities help computer science students appreciate what they must do as writers.

* Both involve a logical, carefully organized exposition of complex ideas. Students understand top-down design and stepwise refinement of software; approaching prose the same way should come easily.

* Practitioners of both must follow a set of language rules (somewhat richer, more powerful, and less completely defined for English than for formal languages).

* Both are iterative processes, subject to successive refinements. Advanced computer science students would ridicule the idea of writing code by starting at the top of a blank screen and proceeding linearly until finished, with a completed, correct program as the result, yet often they expect to write prose in exactly that one-pass fashion.

* Writing, like computing, is based on a hierarchy of abstraction levels from the lowest, typography and document design, through spelling, punctuation, syntax, usage, style and tone, organization, content and facts, all the way up to the document's ultimate effectiveness (which depends, as does software's ease of use, not only on the author but on the audience).

This course has been successful and the students, while reluctant at the outset, appreciate the variety of experiences the course provides and are grateful to have them first in school rather than on the job. Students also appreciate that their instructor is primarily a computer scientist. After many years in school, they become desensitized to English teachers' criticism of their writing and they develop various defense mechanisms ("Yes, but I can write network management code in C++"); when someone they respect technically tells them that writing is important, it captures their attention.

The course described here should add to the menu of writing experiences available to (and perhaps required of) our students. This course is not intended to supplant or replace any other program designed to improve students' writing, such as pervasive "writing across the curriculum," capstone projects, senior theses, or specific courses in technical writing, documentation, or oral presentations. Endnotes The greater the quantity and variety of writing experiences students have, the more their writing will improve.