CS 380 Paper Assignment 2

Assignment date: 27 September 2017

Topic choice due date: 11 October 2017

First draft due date: 15 November 2017

Peer reviews due date: 27 November 2017

Final draft due date: 8 December 2017 (last day of class)

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.

Please upload a copy (preferably PDF) of your paper, as well as bringing in a hardcopy. Also please bring in your previous draft with my comments if possible.

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 support mobile applictions.

One interesting topic area that students have been exploring in recent years is looking at how languages have been adapted/extended for particular problem domains. For example, languages for doing bioinformatics research or languages for writing computer games or languages for teaching introductory computer science or languages for building embedded systems (e.g., network controllers). Be clear that with these topics the focus needs to be on programming language issues. You probably want to look at 2 or 3 languages that are used in these areas, talk about how they have been adapted or extended to support the areas (but be careful to focus on general, portable, non-vendor-specific extensions) and why particular languages are the primary languages for particular kinds of problems.

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. It is also not acceptable to just write a paper about concurrent programming.

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

You will want to begin your research early; many sources are available online or in the library, but many of you will want to use MOBIUS, and this can take a few weeks. You can find lots of useful references in the ACM Digital Library. Truman's library pays big bucks to ACM to give us full access to all of these papers, so you should definitely take advantage of this. Sometimes figuring out what to search for can be tricky, so please ask for help.

The subparts and due dates associated with this assignment are as follows.

  1. By Wednesday, October 11 you will have written a short paragraph describing your chosen topic, found out about at least three (3) references related to the topic, AND been informed by the professor that your topic and references are acceptable. You are encouraged (but not required) to discuss your topic in person with the professor. You may need to get books through interlibrary loan, which takes time. The more you tell me about your bibliography in this document, the more helpful I can try to be about recommending sources, if I am familiar with them. This is also where the ACM Digital Library can be particularly helpful. Emailing me this part of the assignment is fine. You will get feedback telling you that you have successfully completed this part of the assignment to my satisfaction.
  2. By November 15 you will have completed a first draft of your paper and distributed copies of that paper to the professor and two peer readers from the class. We will work out the peer reader details at a later date. This first draft will not negatively affect your grade on the paper, unless it demonstrates that you have not made significant progress on the paper or taken the assignment seriously.
  3. By November 27 (right after Thanksgiving Break) you will have completed writing peer reviews for the two papers of your classmates that you are assigned to review. The format for these reviews will be distributed when you receive the papers to review. This is a graded assignment.
  4. By the last day of class (8 December) you will have handed in and uploaded the final draft of your paper to the professor. The bulk of your grade for the overall assignment will be based on this draft.

You should incorporate information from at least three references (other than the textbook). It is acceptable to use online references, but, if you do, you should cite your source just like with any other reference. Please consider the reliability of your online source and only use online sources when you are confident of their competence to address the relevant issues. In general Wikipedia is a great place to get ideas about a topic, but not an acceptable source for a college level paper. You should dig deeper. See the class web page for a link to a page describing various strategies for citing online sources. If you have any questions about this, ask me. Be careful to use your sources as a reference, but to write your paper in your own words.

You should write this paper for an audience of informed computer scientists who are unfamiliar with the particular topic you are presenting, but are familiar with programming. You may assume some familiarity with prominent programming languages, to allow you to make comparisons or place your topic in context. You are expected to follow the conventions of academic prose.

I strongly encourage you to take advantage of the Writing Center for help in writing and editing your paper. This is especially true for students whose first paper had significant grammatical or structural problems. Call them at x4484 or stop in to sign up for an appointment with a Writing Center consultant. Plan to do this at least 3 or 4 days before your paper is due.