CSCI 3294 (UNIX Power Tools), Fall 2009:
Guidelines and Requirements for Projects
One of the requirements for this course is completion of a project.
You may work individually or with one other person in the class.
(With so few students I would prefer individual projects, but
I'll consider team projects as well.)
The project will count as 50 points of your total grade.
It should be about twice as ambitious as one of the homeworks,
and if two people work together, the project should be about
twice as ambitious as a solo project.
All projects must be approved in advance by the instructor,
who will be the final arbiter of whether the topic and level of
difficulty are appropriate.
I am willing to consider any topic that (1) uses something we
talked about in class (or something related)
and (2) I can reasonably supervise and grade.
The goal of this assignment is to give you a chance to go
beyond what we did in class and in homework -- explore a topic
we didn't address, learn more about a topic
you found particularly interesting,
figure out how to use UNIX tools to solve a problem of
interest to you, etc.
You will probably (but not necesssarily)
end up with one or more of the following as ``deliverables''.
- Shell scripts.
- Makefiles.
- Configuration files (for bash or vim or
other programs).
- awk programs.
- LaTeX macros.
Student projects in previous years have included the following.
- An engine for text adventure games (shell scripting).
- Shell scripts to generating form letters using LaTeX.
- A comparison of GNU versions of some UNIX tools to
their ``true UNIX'' counterparts.
- Shell scripts to collect performance data
for a set of programs and plot it with gnuplot.
- Shell scripts to generate a skeleton for a Java class, something like
what Eclipse does.
- vim macros for commenting out code in a variety of languages.
- Shell scripts to reorganizing files in a directory,
creating subdirectories based on timestamps.
- A multi-person chat program implemented with shell scripts.
If nothing occurs to you right away,
try to think of a task you do, or would like to do,
that's in some way automatable, and/or come talk to me.
- Project proposal.
- Due November 23 at 5pm.
A brief description of your project topic, no more than
a paragraph. Submit by e-mail.
- Project report and deliverables.
- Due December 15 at 8:30am.
A reasonably detailed description of what you did, problems you
encountered, things you learned, etc., plus your
``deliverables'' (scripts, configuration files, etc.).
Turn in the report in hardcopy form;
submit anything machine-testable via e-mail, as for the
homeworks.
- Project presentation.
- Due December 15 at 8:30am.
A brief presentation (no more than 10 minutes)
describing your project's goals and outcome.
It should address the same topics as your
written report, in as much detail as is reasonable for the time
you have and the audience (your classmates),
and should probably include a demo if appropriate.
Berna Massingill
2009-11-30