Term Project Ideas


Here are some ideas for term projects:
  1. Simulate a moving "meteor" in a box: In this you should show a meteor moving a box back and forth in a straight line
      You can show a meteor as a fading ray of light from head to tail -- something that has a dark bright color at the head that gradually fades to the tail before disappearing. That is, assume the head is bright red. The color of the meteor should decrease gradually becoming medium red in the middle, then fading to light red at the tail before disappearing (i.e., colorless).
    1. Have a rectangular box of a reasonably big size.
    2. Move the meteor in the box in a random straight line, to start with. Whenever it hits the edges of the wall, it should reflect off and go back in another straight line. Keep doing this indefinitely, until the user decides to stop it.
    3. Have two buttons -- one to start the program (which initiates the meteor to start moving) and another button to stop the meteor.
    4. You can have another drop down menu to control the speed of the meteor -- something like "slow", "medium" and "fast".

  2. There is a game called "Jezzball" that used to come with old version of Windows (Win-95) Operating systems. In fact, you can find the C/C++ source code at http://www.allegro.cc/depot/Jezzball. Download the code, play the game and understand how the game works. Then, implement a stripped down version of Jezzball in Javascript. That is,
    1. This program should have a rectangular box.
    2. Generate "n" balls, where n is in the range [1-4]. Note "n" should be a variable -- it should work with any value of n in the range [1-4]. Each ball should should move in a straight line bouncing off the wall (as in the "moving meteor" project).
    3. Implement the case when the mouse button click cuts the rectangle into a smaller piece.
    4. Try to handle the case when the ball hit against each other. That is, they should bounce back of each other. If not, just ignore the case and let them go through in their original path, as though they did not hit each other.
    5. You DO NOT have to worrry about scoring, etc. Just show the balls moving back and forth.

  3. Social networking sites like LinkedId, Facebook, etc. are very popular today. In this project, you will implement a very simple social networking site, along the lines of LinkedIn. Please don't use any databases here. Everything given below is transient -- that is, the user profiles are created dynamically when the program runs, and are gone once the program ends. That is,
    1. Create an object for a "user". The uer should have a profile, which includes standard features used in LinkedIn, like, "Name", "Education", "Professional Experience" and "My Company". You can use other fields if you wish.
    2. Create "Connections" from one user to other users and keep track of the number of connections and all the connections, for each user. A user cannot have a "connection" to himself.
    3. Generate about ten random users in your program. You can give them meaningful names, and profiles. Also create random connections from every user to at least one other user, and no more than four others.
    4. Provide a button to "Add User", which when pressed, gives a form where the user can enter user information (similar to the forms example you did for HW1 and HW2). The form will have the profile fields given above. In this form, also include a drop down menu of all the other available users that this particular user wants to be his connections. Make sure at least one connection is selected. When the use submits it, add it to the current list of users, your program is keeping track of.
    5. Instead of using a "login" and "password" mechanism that LinkedIn uses, provide a button "Change User". When the user presses this button, provide a drop down menu of all the profiles currently stored, and let the user choose one profile from them. Show the profile of the person chosen. You are basically using "Change User" to select a user, instead of login and password. That is, the user should have the option to choose any of the stored profiles. Show the entire profile of the user selected.
    6. For any profile user-1 that the user selects to view,
      1. Create another button, for editing the profile, "Edit My Profile". When the user presses this button, display the values of the user-1 and give options to the user to edit and save them. That is ther user should be able to press "Edit My Profile", change the values of user-1 there, and "Save" them.
      2. Create a drop down menu "Show other users", which shows all the other users. When the user selects another user, say user-2, show the profile of user2 and also whether user-2 is (a) connected to user-1 (b) connected to someone connected to user-1 (c) not in his network (don't search beyond two connections).
    7. Use your imagination to extend it in any meaningful way, as per your wish.