The main goal of CS130 is to learn software engineering by doing it.
Most of your grade in the course depends on a large team project.
Your first homework has two part.
The first part is to write a 1-2 page project proposal: What software
system would you like to build, and why?
You must find somebody who would be interested in using this
software system (try a local business, a campus office;
friends, family are also acceptable but we prefer
a customer with which you have a business relationship).
The customer will help refine the specifications, will provide
feedback (to you) over the course of the project and will do
acceptance test at the end, will reject compromises that might
otherwise seem reasonable to you, and will help you prioritize the
features.
Your proposal should include:
- a title (can change later);
- a description of what problem the system would solve and why
this problem is important (and exciting);
- who is your customer, who will test your system;
- a description of what the system would do;
- how will you test the system, and how will you demo it;
- a brief justification that the proposal is neither too easy
nor too ambitious for 8-10 programmers to undertake in one quarter
(total programming and testing time is about 5 weeks, preceded by about 4
weeks of specification, design and planning).
Projects that are too easy are not a good choice.
One way to ensure that the project is not too hard, is
to have intermediate sets of features where one could stop if running
out of time. For project that might seem to hard, please sketch
the major tasks, so that we can jusdge that something can be
achieved.
We will pre-select among the proposals a few that we think are
more carefully thought out, are of adequate difficulty, and are
likely to generate more interest. For the next project stage, we
will publish the pre-selected proposals (without names of the proposers)
and will ask everybody to rank their favorites, along with their
programming experience. We will then make the team assignments based on this
information. Only about 10 of the pre-selected proposals will be
selected in the next stage. If not enough students rank your proposal
highly, you might be assigned to another project. If your proposal is
one of those selected, we guarantee that you will be part of the team.
We will work out a scheme of bonus points for the pre-selected
and especially the selected proposals.
The second part is to describe your background and experience a little bit.
Please write:
- Your year at UCLA (junior, senior, 1st year grad, etc)
- Languages (Java/C/C++/Perl/Python/etc) you know, with gradation ("familiar", "expert", etc).
- Environments you are familiar with (Unix, Mac, Windows, Cygwin)
- Size (rough estimate) of the largest project you have developed, and the largest project you have
been involved with (and the number of people in your project group).
- One interesting piece of information about yourself.
This information is not used in your grade, but to assign you to a project so that you
can make the most impact. (However, you get a penalty if you do not submit this part.)
This assignment is to be turned in by email to
rupak@cs.ucla.edu by 11:59p.m. on Sunday April 5, 2009.
Assignments will be recognized automatically. Thus,
to ensure that you get credit for your assignment, you
must adhere to the following format:
Subject Line: CS130:proj1
The body of the message must start with two lines, as follows:
Name: Your Name
SID: Your Student ID Number (no blanks and no # symbol, just digits)
For example, a valid start to a message body would be:
Name: John Smith
SID: 123456789
I propose to . . .
Your proposal should be written either in plain ASCII text or as a pdf
file sent as an attachment to the mail. We will not accept any other format.