Computer Programming Research Paper Topics Text

Jonathan Friesen - Writing Coach

1 sources cited length: 643 words 1.8 double spaced pages programming a computer is almost as easy as using one and does not require you to be a math genius. People who are good at solving story problems make good programmers, and others say that artistic or musical talent is a sign of potential programmer. Various computer languages are described, and tips on choosing the right language and learning how to use it are provided. Learning to program takes about the same time as two semesters of a college course. The process of learning to program is uniquely reinforcing, because students receive immediate feedback on their screens. The programming languages basic, pascal, c, and database are discussed tips on learning the languages are offered and a list of publishers' addresses is provided. One way of programming is rapid application development rad has tremendous powers, but it is not without its limits.

The two basic advantages rad tools promise over traditional programming are shorter, more flexible development cycle and the fact that applications can be developed by a reasonably sophisticated end user. The main disadvantage is that rad tools often require code to be written, which will result in most developers probably having to learn to program using the underlying programming language, except in the case of the simplest applications. The time gained from using a rad tool can be immense, however: programmers using ibm's visualage report the ability to create up to 80 percent of an application visually, with the last 20 percent consisting of specialized functions, which means by using and ibm program it is much easier because most of the program is graphics which is just point and click to do, and the rest is code, which really isn't much.

Anyone who is willing to invest a little time and effort can now write computer programs and customize commercial applications, thanks to new software tools. People can create their own application with such programming languages as microsoft's visual basic for windows which is about $130 or novell's appware, part of its perfectoffice suite. These products enable users to do much of their programming through point and click choices without memorizing programming can also be very difficult.

At least one programming mistake is always made and debugging it can be very hard. Just finding where the problem is can take a long time alone, then if you fix that problem, another could occur. There was a programming involving a cancer therapy machine, has led to loss of life, and the potential for disaster will increase as huge new software programs designed to control aircraft and the national air traffic control system enter into use. There is currently no licensing or regulation of computer programmers, a situation that could change as internal and external programming these days is also hard if you don't have the right hardware and software.

Limited memory, a lack of programming standards, and hardware incompatibilities contributed to this problem by making computing confusingly complicated. Although computer environments still differ in some respects, they look and feel similar enough to ease the difficulty of moving from one machine to another and from one application to another. Improved software is helping to resolve let me preface this post by saying that no programmer should feel compelled to read any of these papers. I list them because i think that they provide a breadth of information that is generally useful and interesting from a computer science perspective.

What you do with that information is your prerogative, including ignoring it completely. Instead, learn what you think is important for what you need to accomplish your job, education, interests, etc. inspired by a fabulous post by michael feathers along a similar vein. Feathers 1 choices, i tend to think that his choices are design oriented 2 and/or philosophical. In no way, do i disparage that approach, instead i think that there is room for another list that is more technical in nature, but the question remains, where to go next? in this post i will offer some guidance based on my own readings. Hall of fame, but instead hope to accomplish the following: all papers are freely available online i.e. Not pay walled they are technical at times highly so they cover a wide range of topics the form the basis of knowledge that every great programmer should know, and may already because of these constraints i will have missed some great papers, but for the most part i think this list is solid.

fundamental concepts in programming languages link to paper

quite possibly the most influential set of lecture notes in the history of computer science.

Left and right values, parametric and ad hoc polymorphism were all defined in this paper. Much of the content may already occupy your mind, but the sheer weight of the heady topics assembled in one place is stunning to observe. I found this paper extremely lucid on the advantages of functional programming with the added advantage of showing off examples of beautiful code. There are seemingly an infinite number of papers on the topic of laziness with streams and generators, but ive yet to find a better treatment. Finally, ive always been partial to reginald braithwaites why why functional programming matters matters as a complement to this paper.

an axiomatic basis for computer programming link to paper

i came to this paper late in my career, but when i finally found it i felt like i had been hit by a bus. At the core of the paper lies the following assertion: if the assertion p is true before initiation of a program q, then the assertion r will be true on its completion where p is a precondition, q is the execution of a program, and r is the result.

Receives a set of parameters conforming to its preconditions, its execution is guaranteed to produce a well formed result.

time, clocks, and the ordering of events in a distributed system link to paper

lamport has been highly influential in the field of distributed computation for a very long time and almost any of his papers on the subject should impress. However, this particular paper is likely his most influential and single handed defined two branches of study in distributed computing since:
    the reasoning of event ordering in distributed systems and protocols the state machine approach to redundancy
the most amazing aspect of this paper is that after you read it you might think to yourself, well, of course thats how it should work.

on understanding types, data abstraction, and polymorphism link to paper

by luca cardelli and peter wegner i had originally thought to list milners a theory of type polymorphism in programming. I must admit that my own readings have not gone deep into the exploration of type systems, so any additional suggestions would be greatly appreciated.

recursive functions of symbolic expressions and their computation by machine, part i link to paper

its become a cliche to recommend mccarthys seminal paper introducing lisp. I will not count this toward the target of 10, but i would be remiss to excluse it because its a great read that is nicely supplemented with the study of a simple implementation of mccarthys original specification.

An Essay About Computer

3

predicate dispatch: a unified theory of dispatch link to paper

by michael ernst, craig kaplan, and craig chambers describes a method for dispatching functions based not on a static set of rules, but instead as the traversal of a decision tree that could be built at compile time and extended incrementally at runtime. What this means is that dispatch is controlled and adapted based on an open set of conditions describing the rules of dispatch. This stands opposed to the current popular trend of languages whose dispatch is hard coded and not open for extension at all.

equal rights for functional objects or, the more things change, the more they are the same link to paper

at the heart of clojure and clojurescripts implementation is equiv that is in turn based off of henry bakers egal operator introduced in this paper. Briefly, equality in clojure is defined by equality of value, which is facilitated by pervasive immutability.

organizing programs without classes link to paper

by david ungar, craig chambers, bay wei chang, and urs hölzle the greatest crime perpetrated in the name of javascript is the propensity for every framework, library, and trifle uses the prototypal inheritance capabilities of the language to implement class based inheritance. However, the class based mentality is pervasive, and is only likely to grow stronger as javascript moves toward modernized data modeling techniques. Its flexibility and simplicity is astounding, and this paper 4 will show how it can be leveraged for practical purposes. While a design oriented paper, i think that the knowledge is contrary enough to pop programming to warrant inclusion.

Self is a fascinating language on its own merit, but especially in that its influence 5 on modern dynamic languages is growing ever more pervassive.

dynamo: amazon’s highly available key value store 6 link to paper

by giuseppe decandia, deniz hastorun, madan jampani, gunavardhan kakulapati, avinash lakshman, alex pilchin, swaminathan sivasubramanian, peter vosshall and werner vogels its rare for a paper describing a system in active production to influence the state of research in any industry, and especially so in computing. Papers describing thought stuff are pure and elegant while real world systems tend to be ugly, hackish, and brutish, even if they are rock solid otherwise. That is, the system itself is based on simple principles and solves a hard problem, highly available and fault tolerant online database storage, in an elegant way. Dynamo was not a new idea, but this paper is necessity as we move forward into the age of big data.

Contract Law Research Paper Topics

by ben moseley and peter marks now we reach my favorite paper of the bunch one that i try to read and absorb every 6 months give or take. The gist is that the primary sources of complexity in our programs are caused by mutable state. With that as the premise, the authors build the idea of functional relational programming that espouses minimizing mutable state, moving whatever remains into relations, and then manipulating said relations using a declarative programming language. This list should be a good start, but where to go next? my personal approach is summarized simply as: follow the bibliographies. If you like any of these papers then look at their bibliographies for other papers that sound interesting and read those too. Likewise, you can use services like citeseer and the acm digital library to backtrace citations.

Including this gem from the linked post: when i first started writing, one of the pieces of advice that i heard was that you should always imagine that you are writing to a particular person. Suggestions for something better? 160 a have some ideas for a lisp centric essential papers list also, but have not yet formalized the content. 160 it was difficult picking a paper from the treasure trove that is the comprehensive list of self publications. Smalltalk implementations have also driven innovation in said space, and a taste for this influence is found in efficient implementation of the smalltalk 80 system by peter deutsch and the design and evaluation of a high performance smalltalk system by david ungar. 160 the dynamo paper is probably the most controversial choice for this list, so if it bothers you then perhaps software transactional memory by nir shavit and dan touitou would suffice as an alternative. I was bouncing back and forth between these choices and only settled on dynamo in the spirit of controversy. 160 graphic designers get a message across through the depiction of colors, shapes, and images in such a way that it captures the attention of the intended audience.