So, now that you have a bunch of excited students clamoring for
projects, what do you do?
The following is a list of project "areas", with some suggestions:
- Ecommerce/Website Projects. Our experience shows that
students love team projects that result in an interactive website.
They both want to understand how to build interactive websites,
leveraging their programming knowledge, and love to exercise their
creative talents. Accordingly, we suggest a team-project:
- Divide students into teams of, say 4 to 6 students each.
Each team is required to build a website, complete with
a business model, customer service, product display, checkout
and purchase. Let the students go wild with their ideas, but
insist that they demonstrate use of programming skills.
- For teacher resources, you can start by browsing
through our Ecommerce course
and look through the on-line materials, the way the class was
structured, and so on.
- A complete set of teaching
materials for an Ecommerce course is available for your use,
including Powerpoint lecture slides.
- How does Java figure into all of this? Students will build
webpages using HTML (this is easy to learn, if they haven't
already) and write server-side Java programs. Read through
this Ecommerce technology introduction lecture to get an overview.
Students will write Java servlets to handle web queries and input.
- What about running webservers? Fortunately, there's no need
for a separate machine that runs a webserver (this is a
complicated setup that requires installation expertise with
a webserver like Apache). Instead, a student can run a webserver
on the SAME machine they use for running Java programs. The
webserver is just another Java program - the web browser on the
same machine can be used to demonstrate projects.
We recommend using the free Jetty Webserver,
itself written in Java and easy to install. Jetty can run both
Java Servlets and Java Server Pages (JSP).
- Do you need to install a database? Not at all. Databases
add an unnecessary level of complexity because students will
need to know SQL (a database language) and JDBC (a Java interface
to SQL). Instead, ask students to simply store data in files.
For the kinds of projects they're likely to work on, files
are plenty useful.
- If you give advanced students (typically at the end of a
two course programming sequence) 3-5 months to work in teams
on website projects, the results can be quite appealing.
- It's important to note that Java is not the only language
that students can use for websites. PHP
is a popular language for websites - the advantage is that it
can be written directly inside HTML webpages and is fairly easy
to learn.
- Interactive Applet Competition.
Again, group students into teams and have them develop applet-based
websites (consisting of HTML mixed with their applets). The students
can compete in various categories (most creative, most humorous,
most whatever).
- Group games. This type of project is a little more
ambitious and requires some preparation and programming by the
teacher. The idea is, each student will write a strategy in Java
for a game. Then all the student programs will be placed on
a single machine and the programs will compete to "win"
(tournament style, or all-against-all style).
One of the most famous such games is also an easy game to write
strategies for: the Prisoner's Dilemma.
See this site or
this site for an overview and ideas.
- Cryptography.
Cryptography is a great project theme for two reasons. First,
a lot of early history of computing
is tied to cryptography - see the
Bletchley Park story. This lets you, the teacher, cover
interesting historical material that's also exciting in its relationship
to World War II. Second, the encryption/decryption/cryptanalysis
projects can be fun. A good place to start are these two
books: The Code Book (by Simon Singh) and Cryptology (by A.Beutelspacher).
This is also a good opportunity to cover some of the
mathematical details.
- Tie a project to other classes:
- Mathematics. There are scores of mathematics projects
ranging from simple graphical ones (graphing functions, 2D
functions)
to number-theoretic searches, to cryptography (see above).
- Physics. Simulations of physical phenomena,
such as bouncing balls or particle collisions.
See
this excellent resource on physics simulation with Java for
examples.
- Chemistry.
Students can draw molecules using the Java3D library.
Another possibility is to simulate chemical reactions.
the
Edinformatics.com chemistry section
for examples. The Edininformatics site
has plenty of useful links.
- Biology.
The intersection of biology (molecular biology) and computer
science is itself a huge and fast-growing field called
bioinformatics. (To learn more about bioinformatics, see
this page on bioinformatics
we have created for teachers).
However, there are also lots of biology applets listed
here
and here.
- Economics. Many interesting applications of simulation
can be found in Economics. See
these links at
Stanford University.