Anda di halaman 1dari 1

PIC 20A, Fall 2016 (Optional) Final Project

Objective
Once we have learned the core of the Java programming language, we will begin to explore more specific
features of the Java Application Programming Interface (API). Unfortunately in some sense, the API is too
vast for us to cover all interesting components in our short quarter; it is very fortunate, however, that the API
is so full of useful features! The course project gives you an opportunity to explore some of this functionality
that we would not have time to cover otherwise.
Another important purpose of the project is to give you experience learning features of a programming
language on your own. The goal of this course is not only to make you a good Java programmer, but to make
you good computer programmer in general. It is unrealistic for university classes to cover all that you might
want to know about programming languages; a much more efficient use of resources is to also practice
learning beyond the classroom (with guidance).
Summary
Explore related (within the same class, package, framework, etc...) features in the Java API (or from a third
party) that we did not cover in class. Create a tutorial (PowerPoint slides, video presentation, readings, etc)
and corresponding exercise to guide your classmates through the most useful features you found. Prototype a
Java application that relies on several of these features.
Examples
Create an automatic file synch program like Dropbox using the Java Runtime class
Write a cryptographically secure chat program with javax.crypto and java.security
Create a simple audio or video editing program (trim/combine clips, etc) using JMF and/or Xuggler
Use JavaFX to make a 3D game or simulation
Write an HTML server that implements an online message forum using HttpServer
Automate repetitive tasks on your computer (create macros) using the Robot class
Write a new, higher level programming language in Java. Search ArnoldC on the Internet as an example.
Solve a scheduling problem as a binary integer linear program using software like lp_solve
Make an Android app
These are only suggestions; you are welcome to come up with new ideas and pitch them to me.
Grading
Your grade for the project will be based 50% on the effectiveness of your tutorial and 50% on the quality of
your program. To evaluate the effectiveness of your tutorial and exercise, I will follow the tutorial, attempt
the exercise, and decide how confident I am that I could apply what I have learned to a new problem. To
evaluate the quality of your program, I will test the extent to which it accomplishes the objectives we have
agreed upon (see milestones). Note that you can schedule time with me to provide an initial evaluation of
your work; afterward you can make changes to improve your final submission.
The project can account for over 20% of your final grade. To make room, the weight of the midterms can be
reduced to 15% each, the weight of the final to 25%, and the final project grade can replace grades for
Homeworks 6, 7, and 8. The project grade will factor into these places to optimize your final grade; e.g. your
project grade will replace your grade for Homework 6 only if it is higher.
Schedule
Milestones are scheduled throughout quarter to ensure the steady development of your project.
10/21/2016 Project proposal email describing the features you intend to explore and the objectives of the
program you will write. Meet with me around 10/21 to discuss.
11/18/2016 Project update email including draft tutorial/exercise. Meet with me around 11/18 for initial
assessment and suggestions for improvement.
12/2/2016 Project due. Selected projects may be used for class instruction.

Anda mungkin juga menyukai