Computer_Science
 Home | People | Curriculum | Projects | Resources | Media

Term Project

CMSC 100: The World of Computing
John Dougherty
Fall 2006

Each student enrolled in CS100 must complete one of the following:

  1. a term paper as part of the course requirements
  2. a program in a more conventional language such as Javascript, Java, C++ or Python
  3. an extended virtual world in Alice which solves a problem in computing (e.g., sort, search), or accomplishes a non-trivial task (e.g., towers of hanoi, race)
  4. a service project to help community members to more effective utilize computing and information technology in their professional or personal lives -- this project must be pre-approved, and it is recommended that the student be flexible
The deadline for your final project is the last day of classes, Friday, April 29, 2005, 10:30 am (i.e., bring your project to class). There will also be a drop-off bin outside of KINSC H111 in the lounge.

By Friday, March 18, 2005 class: Every student must hand in a page which proposes the contents of the project/paper. Be SPECIFIC in these outlines so that we can determine if your proposal is acceptable. For term papers, lists of references would be useful (see readings at the end of each chapter in our text to get a start). For Javascript programs, an overview of your web page and some idea of its design (e.g. rough drawings of the appearance of the page) and purpose will be helpful.

By Monday, April 11, 2005 class: Every student must hand in an outline of the paper (or a progress report for term programming projects), along with a preliminary list of references for this project. The outline should act as a skeleton of your paper. References will be evaluated on number and on merit.

By Friday, April 29, 2005 class: Submit the term project -- for some this may involve a demonstration or presentation which will be scheduled on a case by case basis.


I. Term Paper

Length: 6 - 9 doublespaced pages (approx.) produced using standard IT for wordprocessing (i.e., a professional representation of your work)

Goal: to demonstrate an understanding of a specific technology or methodology, and put it into context.

References: Each paper should have at least two references in its bibliography (not including our texts!). These papers should represent a modest research effort on your part to find out more about some aspect of computers that has interested you. We are most interested in having you read and discuss the ideas of experts, but would like some personal thoughts as well. The science librarian can help point you to sources, and you are encouraged to use other resources. Choose a topic that you find interesting, that has references easily available and is not overly ambitious. Some possibilities include:

History of computation:

  1. Biographies of key personnel, focusing on their ideas and the impact of these ideas on the history of computation (e.g. Ada, Countess of Lovelace; Blaise Pascal; Charles Babbage; Alan Turing, John Atanasoff, Konrad Zuse, John Mauchly, Presper Eckert, Howard Aiken, etc.) [Note: many biographies submitted in past classes tend to emphasize "drama over substance", so you may proceed at your own risk ....].
  2. The emergence of key technologies: Find out more about the impact of the transistor, or the integrated cicuit on the history of computation. Look into different technology used in computer memory (hard disks, floppy disks, drums, core memory....) and other issues of architecture (virtual memory, cache, RISC).
  3. Topics in AI: e.g., fuzzy logic, neural networks, genetic algorithms, robotics -- Are scientists any closer to building artificial intelligence?
  4. History of the Internet, including both the technology of hypertext and the network that supports it (both of these ideas pre-date the internet itself).
  5. Find out more about Xerox PARC and research there that formed the basis for the Mac GUI.

Technology:

  1. Find out what a supercomputer is, and how it differs from a ``regular'' one. What kinds of research is being carried out with supercomputers?
  2. Alternative technologies for computation: e.g., quantum computing, photon-based computing.
  3. The computers we studied this semester are all  digital, i.e. based on the binary, or on-off scheme. Another whole class of computers are called analog computers which work by modeling natural processes directly. Find out about these computers and report on their uses.
  4. Pick any component in a modern personal computer (e.g., hard disk, display, mouse) and focus on the technology behind it.

Applications:

  1. Pick your favorite field (computer animation, aviation, weather prediction, medical, physics, sociology, anthropology, humanities, your major, etc.) and research one or two important uses of computers in that field. Focus on things that are done that are truly impractical or impossible without computers.
  2. Explore the impact of computer use on assisting people with various special needs (e.g., learning disabilities, alternative interfaces).

Note: Treat this paper as you would any research paper for a non-science course. In particular, your paper will be graded not only on the contents, but on the form, organization and clarity of presentation of the information. Be sure to properly footnote and reference all sources, even electronic ones. Emphasize technical explanation over social consequences.


II. Programming Project

For Javascript projects, you should create a complete web page, complete with sample data (i.e. if you have a page for organizing CD's, you should have some sample disks; if you have a stack for ciphering messages, you should include a sample message). Your page should also have a help button that accesses a description of how to use it -- this should be non-techical (sort of a user's manual), and maybe a page in length. Finally, hand in a design document (on paper, not part of your web page) that explains the technical details of how your page works (this will also probably need to be about a page or so). You should assume that the reader is familiar with Javascript, but not your web page. We are looking here, as in the converter page for several key components:

Some Ideas for Web Pages -- feel free to propose your own:

  1. Create a page to organize some sort of records, such as CDs or phone numbers and addresses of acquaintances. Each record should have at least 3 pieces of information (such as title, artist, and release date for a CD). Your page should include a function to search for records (e.g. find a record by a certain artist). You may want to write this "search" function as your own non-trivial Javascript function.
  2. Create a stack to perform a "Caesar cipher" on a string of text in a field. This cipher should "rotate" each letter of the alphabet by 5 letters - for example, the letter 'a' is the first letter, so it should always be replaced by the sixth letter ('f'). If you need to "rotate" a letter past 'z', start again at the beginning of the alphabet. For example, 'u' would rotate to 'z', and 'v' should rotate to 'a', and 'w' to 'b'. Include options to encipher normal text or decipher the result to get the original back.
  3. Make a page for organizing your schedule and information about your classes. As in suggestion A above, be sure to construct interesting and useful ways to access the information.
NOTE: Projects in Javascript, Java, C++ or Python should be discussed with J.D., and ASAP.


III. Extended Virtual World in Alice Project

This world should try to solve a problem found in computing, but can also be entertaining. Concepts to consider during design include recursion, randomness, concurrency, events, and list processing. Some suggestions would include (but not limited to):

Please check with J.D. to gauge the appropriateness of the design of your (virtual) world.


IV. Project Based Service Learning

This project is the least defined, and thus the most flexible. the goal is to apply one or more concepts and/or capacilities from the course in the community. Given the brief time period and the expected proficiency level of the student, members of our immediate community often prove appropriate. Some suggestion to consider:

Please check with J.D. to gauge the appropriateness of the design of your service project.

Haverford College Page maintained by John Dougherty, Computer Science, Haverford College