Project Topics

Project selection due Friday November 2
Projects due Monday November 19

The project is worth 20% of your grade and will be out of 50 points.

You can do these projects alone or with one partner. You and your partner, if you have one, must then submit your name(s), login(s),  project topic, and a brief proposed summary (one paragraph) of your essay or programming projects by the end of the day, Friday, November 2. To submit your project proposal, create a text file called proposal.txt and  use the submit program with the assignment specified as projectproposal.

submit_cps001 projectproposal proposal.txt

If working in a group, please submit only ONE project proposal and be sure to include the names of both group members.

Essay Topics

For each of these topics/questions, your project should state some opinion and provide supporting arguments. Your essay must have some sort of discernable thesis statement where you take a stand on some issue. Example of a thesis statement: Computer science is a pointless enterprise that has no place in a university. Bad example of a thesis statement: Computer science involves the study of computation. The first example takes a position that can then be backed up by more writing, while the latter one just states what is more or less a fact.

Your grade will be based upon the following aspects of your project:

·        Content: Just like any other essay, you are expected to make your points in a well thought out and clear manner. In the sciences, being concise is generally desired, so you need to make a complete and convincing argument not necessarily a long one.

·        References: Links to web pages that either support or dissent from your position. arguments. There should be at least four of each. You should summarize and discuss the contributions of these pages. You will probably need to use search engines such as Google and web directories such as Yahoo to find pages relating to your issue.

·        Presentation: While I do not expect you to make a professional quality web page, you should use other web pages for very basic style ideas. Adding pictures would be nice. You can write in raw HTML or use any program that can output web pages (such as Microsoft Word).  

Below are possible general topics for your essay. You can answer one of the questions below or you can make up your own as long as it has something to do with computer science and more specifically one of the 4 areas below.

1.     Artificial intelligence: Can computers think? Will computers ever think? Do there exist problems that computers will never be able to solve, even though human beings can?

2.     Programming languages: Is Java a suitable language for introductory computer science classes? Is programming an important part of a liberal arts education?

3.     Computers and society: Discuss the Digital Divide where American society is increasingly being divided into technology haves and have nots. Is this divide a major problem? Is the Digital Millenium Copyright Act or the new Patriot anti-terrorism legislation a good idea? Is free software a good model for development and innovation?

4.     Digital media: Will digital media (such as audio and video) change the entertainment industry? Do technology makers have a duty to make or limit their products so that the products cannot be used to potentially illegally copy copyrighted media?

Tips

·       The content of your essays must refer to specific technologies that are available. It is not enough to talk about the Digital Millenium Copyright Act without mentioning specific systems and technologies that could be affected. Your essay should not just be a treatise on the rights of record companies.

·       A way of improving your essay is to actually correspond with experts in the field that you are studying. You can easily find the email address for most professors, for example, online. If you plan to do this, keep your inquiries short and expect a short reply, dont harass anyone, and start early because you probably will not hear back from people early if at all.

·       Google will be your friend. Whenever you need to find a page or a person related to a particular topic, searching with Google will probably give you a good start.

 You can receive a maximum of 45 points on the essay project (not including possible extra credit).

Programming Project Topics

The list of Project Point People can be accessed here. Refer to these people if you have any specific questions regarding your projects.

The programming project is somewhat open ended. You can choose one of the 3 possibilities below, or you can just pick your own project as long as we approve it. The TAs will be available help you in the design of your projects. Making good use of the help sessions should aid you along your way. Basic functionality will receive full credit, but the amount of extra credit available for particularly impressive

1.     Concentration Game: Write an applet that displays an n X n grid, where n >4. When clicked, each square in the grid should turn over to reveal an image. If the image revealed is similar to one that has already been turned over, the image remains face up. If no similar image has been revealed, the image is fipped back to remain face down on the next move. Obviously, the first click is "free" (cannot match any previously chosen image). To finish the game a player must have all squares with images revealed. Your program should work for a grid with arbitrary dimensions and should reveal a score when the game is finished that represents the number of clicks taken to finish the game. Before the game starts images should be randomly selected and placed in grid squares. To learn how to work with images in Java please read sec 12.2 of Programming.java by Decker and Hirshfield, one of the recommended course textbooks. To play a sample game please see here.

2.     Advanced Calculator: Write a Calculator applet that resembles an actual calculator i.e all numbers, and functions should correspond to correctly labelled buttons. For example the number two should have a button "2" which when pressed can be used appropriately in a calculation. Your calculator should be able to use"memeory" (store values to be used in calculations) and be able to deal with multiple entries of numbers. Minimal functionality of the calculator includes division, multiplication, addition, subtraction, percentage, factorial, exponent and square. You should be able to clear your calculator display as well as call upon your "memory" at any time. For extra credit you may implement a calculator that deals with fractional arithmetic. (e.g it should deal with expressions such as ½ + ½ = 1). For ideas on how to write your calculator you may refer to the ATM project on pgs 289-324 of Programming.java by Decker and Hirshfield, one of the recommended course textbooks.

3.     Check Writing: Write an applet that takes as input:

a name(payer), a date, an amount (as a number), a payee, an address, the purpose of the check

When a button is pressed your applet must display a nicely formatted check. Information on your check should include: the amount specified as a number nicely displayed in words (2,000 displayed as "Two thousand"), the address and name of the payer in the top left corner of the check, the date entered, the payee of the check, the amount of the check in numerical form and, the purpose of the check in the bottom right corner. Extra credit will be given for innovative check designs or graphics used as well as clever methods used in designing your program.

NB:The maximum amount that can be written on your check is 99,999.

4.     Face Drawer: Write an applet that draws some sort of mock-up of a face; perhaps your own or the face of someone on CPS 1 staff.  You should have subroutines for  repeated shapes like eyes or maybe teeth. You will be graded for the quality of the picture as well as your creativity. You can do pretty well with a bunch of ovals (filled and unfilled). You should also be able to draw multiple faces.

When you submit your program, you must also submit a file called README with your program that gives the following information

o       Name(s)

o       Description of what your program does

o       Description of the various subroutines

o       Documentation: how does one use your program

Use the submit program to hand in your project or essay. Please note that essays and programming projects are submitted differently. For example, for:

Programming Projects

If all of your code was in Survey.java, you would submit this way: 

submit_cps001 proj1 README Survey.java Survey.html

(NB: Be sure to submit ALL images needed to run your program and ALL .html files needed to view your applet(s).

 Essays

If your essay was in an html document called myessay.html you would submit this way:

submit_cps001 essay myessay.html

(NB: Submit ALL images if any you need to properly view your webpage(s) )