Term Project
Each student enrolled in CS100 must complete one of the following:
- a term paper as part of the course requirements
- a program in a more conventional language such as Javascript, Java, C++ or Python
- 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)
- 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:
- 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 ....].
- 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).
- Topics in AI: e.g., fuzzy logic, neural networks,
genetic algorithms, robotics -- Are scientists any closer to
building artificial intelligence?
- 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).
- Find out more about Xerox PARC and research there that formed
the basis for the Mac GUI.
Technology:
- Find out what a supercomputer is, and how it differs from a
``regular'' one. What kinds of research is being carried out with
supercomputers?
- Alternative technologies for computation: e.g., quantum
computing, photon-based computing.
- 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.
- Pick any component in a modern personal computer (e.g.,
hard disk, display, mouse) and focus on the technology behind
it.
Applications:
- 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.
- 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:
- usefulness: your page should perform some real, not made-up or
frivolous, function so that it might be reasonable to give it to a
friend or family member to use.
- usability: be sure to give thought to the user-interface
(transparency, forgiving, etc.) We will be looking for this when
we test your pages, so you will want to check for bad user-input
and give appropriate messages, for example.
- original javascript functions: your project needs to consist
of MOSTLY originally written javascript functions, some of which
must be "nontrivial" - that is don't just create your own
functions to do something trivial like add two numbers. You may
optionally include some functions that you do not write yourself,
as long as you make it clear that they are not your own work (you
must state where you got them), and you copy only from pages that
clearly state that you are allowed to copy them (doing otherwise
may be a violation of copyright law). These restrictions apply to
any kind of copying, including re-typing the function as well as
using cut and paste.
Some Ideas for Web Pages -- feel free to propose your own:
- 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.
- 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.
- 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):
- horse or car race
- interactive game or simulation
- search or sort a list of objects
- teaching tool
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:
- help a campus office or organization with such tools as mail merge, spreadsheet, data base entry, or basic website design and maintenance
- help a disadvantaged citizen to install or use their computer (perhaps even explore assistive technology)
- help a organization to identify hardware and/or software to purchase and employ
Please check with J.D. to gauge the
appropriateness of the design of your service project.