CS 380: Programming Languages -- Fall 2019

Programming Languages as a Writing Enhanced Course

The Outcome Statements for Writing Enhanced courses at Truman.

Writing programs as a form of writing

One of the ways that we will explore programming languages in this class is by writing programs. This is a Writing Enhanced course, so particular attention will be paid to your writing in all of its forms. One form that you might or might not normally think of as "writing" is the structure, organization, style and general understandability of your programs. I pay attention to all of these aspects of programs in all of my classes, but they will be particularly emphasized in this course.

One contributor to understandability that is often part of your programs is the use of comments to annotate and describe both high-level and low-level ideas in programs, as well as to attribute sources to intellectual ideas that were obtained elsewhere. Comments will certainly be an important part of what I consider when evaluating your programs as writing. But, just as with more traditional academic writing, the structure and organization of your programs is at least as important as the detailed comments in producing a coherent, understandable piece of work.

For some of the programming assignments I may give you what I consider to be a well-structured, carefully organized, well-documented program in the language we are studying. You will be asked to modify or extend the program to achieve new capabilities. For all programming projects, I will expect your final product to also be well-structured, thoughtfully organized and well-documented.

Also, this semester, for the first time, we're going to experiment with peer reviewing of code as writing. I'm still working out the details, but for your first programming assignment (at least) I plan to require you to submit a "draft" and to spend some time (probably in class) peer reviewing each other's drafts, for correctness, content, organization, clarity and completeness.

Research paper

You will complete a 10-12 page research paper on a programming language topic of interest to you that is not covered in detail in this course. You will need to decide on a topic in consultation with the professor.

One type of topic is a programming language comparison paper. A paper of this form first discusses a semantic feature or control construct conceptually, then looks at how two or more different programming languages address that feature or concept. This is particularly interesting when the approaches taken by the languages differ in significant ways. For this kind of paper you need to find a construct that is semantically different for different languages, not just one that has slightly different syntax. For example, comparing the word that different languages use for a counting loop (e.g., FOR in Ada, DO in FORTRAN) will not make for an interesting paper.

Many programming languages have had long lives and have evolved significantly over time. This whole area could be explored in several ways. You could look at how one particular language has evolved over time. A study of this sort could look at how an older language, say FORTRAN, has adapted to changes in expectations about programming languages. Alternately, a study of this sort could look at how a few languages have adapted to a particular change in expectations. For example, you could look at how languages have evolved to be compatible with the World Wide Web or you could look at how languages have been extended to work with non-ASCII character sets.

Another type of topic examines what might be called the "philosophy" of a programming language, looking at a fundamental syntactic or semantic decision made in a particular language and how that decision manifests itself in various parts of the language. This kind of paper probably makes the most sense for a more philosophically-oriented language, such as Algol 68 or SmallTalk.

Another general topic area is to take a modern programming language concept (e.g., exception handling, modules, threads, abstract data types) and examine either how different languages choose to use the concept or how languages use of the concept has evolved over time.

We will discuss the idea of programming language paradigms throughout this class. A paradigm is an approach to the whole idea of programming. Another paper topic area is to choose a paradigm and examine it in detail, both describing what distinguishes the chosen paradigm from others and looking at languages that embody various aspects of the paradigm. Example paradigms include object-oriented programming, functional programming, logical programming, event-based programming, and concurrent programming. The last two paradigms mentioned are particularly interesting, because we do not look at them in any detail in this class. Note that, for all practical purposes, no actual programming language embodies one and only one paradigm. Since we go into the object-oriented paradigm in quite a bit of detail in class, just describing the object-oriented paradigm is not an acceptable paper topic.

Other paper topic areas are possible. Talk to me about what you are interested in doing and we can probably work out something.

Approximately four weeks into the semester you will be required to hand-in a brief description of your chosen topic along with a bibliography. A first draft of your paper will be due 3 weeks before the end of the semester. (I will give you the exact dates later in the semester.) This first draft will be reviewed by the professor and by two of your classmates. (Note that this means you will be asked to read and comment on papers by two of your peers.) The final version of the paper will be due the last week of class. The first draft of your paper will not negatively affect your grade, unless it is not completed on time or demonstrates that you did not take the assignment seriously. You are encouraged to take advantage of the Writing Center during the writing of your paper.

You will want to begin your research early; many sources are available online or on reserve in the library, but many of you will want to use MOBIUS, and this can take a few weeks. The Truman Library subscribes to the ACM Digital Library. This will prove to be a very valuable source for many of you.