Home ] Course Modules ] Browser JDK Support ] Using the JDK ] [ Assignments ] Assignment javadoc Pages ]


Assignment 1
Assignment 2
Assignment 3
Assignment 4
Assignment 5
Assignment 6
Assignment 7
Assignment 8


Course Assignments


Here are the assignments for the course:

  1. Exploring your Java compiler/environment
  2. A Timer Program and Practice with Strings
  3. Data Abstraction, Encapsulation, and Arrays: A Card Game
  4. Plotting a Graph of Points with Automatic Scaling
  5. Inheritance and Polymorphism: Drawing Points and Shapes
  6. Inheritance and Polymorphism: Abstract Syntax Trees
  7. GUI Components: A Shuttle
  8. Writing a Simple Applet

You may choose to implement the programs either as Java applications or Java applets. You'll find that Java applications are a lot easier to write, since you don't have to write any HTML to run a Java application (unlike a Java applet), and also you don't have to fight the browser to make the applet work.  

All the assignments are intended to be a major part of the learning process: I believe that learning by doing is the most effective approach, especially with computer programming. I also believe in assignments that are reasonably representative of real-world problems, rather than merely trivial academic exercises. For this reason, several of the assignments build incrementally towards a goal. I hope that these assignments are not only challenging, but also fun!

Please do not wait until I've covered a particular topic before starting an assignment that involves that topic. This is a graduate course, and so I expect you to use resources beyond my class lectures -- books, the Web, etc. If you wait for me to cover a topic in class, you are likely to fall behind in the assignments.

The first two assignments are relatively simple, and serve to introduce you to the language and its environments. Assignments 3 through 7 will take quite a bit more effort, and are intended to teach by example various aspects of object-oriented programming, and Java features in particular, and apply these to a variety of problems. Assignment 8 is a very simple one: to create a very simple applet -- it is for those who wish to create an applet and have not done so before.

I expect you to test your assignments thoroughly -- in particular, assignments 3 through 7. Failure to do a good job of testing will affect the grade for that assignment!

It is possible that you will find difficulty in completing all the assignments by the end of the course. Some people appear to take more time than others to grasp certain concepts and to complete a given assignment, so it's hard to determine how long you should expect to take. (Note that I have completed all of the assignments myself!). For this reason, we will need to cooperate so that I can monitor your individual progress. If I see some of you progressing too slowly, I will attempt to determine the reason, and provide additional help as necessary.

Important Note

Please do not hesitate to contact me if you find yourself not understanding something in an assignment, or if you are stuck making little or no progress! I can probably clear the mental "logjam" reasonably quickly and get you moving again in the right direction. However, I do expect you to have thought about the problem and that you have tried a number of possible solutions before you give up and contact me. This is in your interest, as well as in mine!

I have found in the past that those students who are willing to contact me are often the ones who do better in the course. In past courses, I have been painfully aware that some students were experiencing problems, but unfortunately they often did not try to contact me for help. This was true even after I repeated several times in class my eagerness and willingness to help! This situation is not only frustrating for those students, but it is also very frustrating to me, because I can usually help them overcome a problem relatively quickly, and prevent them from spending a lot of wasted time.

Asking me for help should not be considered in any way a cause for embarrassment or shame. On the contrary, it should be considered more of an introduction to the real world, where you will be expected to ask for help to solve programming problems. Failure to ask for help in the real world can often reflect negatively on your performance. (Naturally, if you ask for help before having thought about the problem sufficiently, or if get into the habit of asking for help to avoid doing work, then that is a different matter.)

Please note the following:

  • I have never penalized someone for asking for help (and I have had students who have asked a lot!) On the contrary, I have found that those who ask for help are much more likely to get a better grade than those who do not.
  • Students who do not ask for help often penalize themselves by failing to complete assignments, by completing assignments incorrectly, or by misinterpreting what is expected from an assignment.

Note that email is the best way to contact me, because it is more likely to find me than a telephone call, it's a lot faster than the US Postal Service, and you can explain your problem in more detail than you can usually via telephone. I can also cut and paste code you send me to try things out myself.  Note that, if you send email saying something like "It doesn't work -- why?" without providing additional information, it won't help either of us much.


This page was last modified on 02 October, 2007