The CS130 Project is intended to facilitate your learning of software
development concepts and processes, as well as your acquisition of
software development skills. To accomplish this goal, you will
participate in the design and implementation of a significant software
system. More importantly, the project will lead you to learn
about working in groups, sharing tasks, meeting deadlines, resolving
conflicts, writing technical reports, and making presentations.
If you decide to seek employment in software engineering after you
graduate, this project may prove to be the highlight of your resume.
This page provides necessary details for the completion of your
project. It should serve as the reference source to resolve any
questions. Anything not covered by this document should be
brought to the instructor's attention; this document will be updated
It is the group's responsibility to determine and maintain its
structure. That is, you are free to choose the team structure
yourselves. I will evaluate the team on how well it implements
the selected structure, not on which structure you select.
However, I will expect a certain level of responsibility rotation
(e.g., recording project meeting minutes for the Log Book) regardless
of the team organization that you select.
We will hold weekly project meetings during a portion of class.
The length of these meetings will depend on the
agenda. Prior to some of the meetings, someone from the group
will give a presentation related to a particular deliverable or some
other topic that becomes relevant to the project. However, you
should also expect to hold additional project meetings outside of class
at times arranged mutually by the group.
The group is required to maintain and submit at various intervals a log
book reporting on project meetings, topics of debate, decision
processes and decisions. Think of this log as a lab book in which
you record your steps and experiments. The lab book is a
fundamental component of the scientific process in general and your
software development log book is fundamental to the success of your
project. You will be graded on
completeness and conciseness of the Log Book; you will not be graded on
the specific decisions or decision processes, etc.
It is expected that over the course of the semester, everyone in the
class will give at least one presentation on something.
will be 10-15 minutes in length. The main presentations will
correspond to the major deliverables of the project. Other
presentations will become necessary
as issues and problems arise during your progress. The
goal of the presentation is to practice and demonstrate an ability to
communicate technical content to a given audience; in the future, you
will be making presentations to peers, managers, and customers.
You will be graded individually on your presentations based on
coherence, organization, coverage and conciseness.
You will create a series of standard documents as you develop this
project: Requirements Specification, Project Plan, Architecture Design,
Implementation, and Integration and Test Plan. These documents
will be graded on content, structure, grammar and style, and
format. The documents will require periodic maintenance as your
development leads to changes in earlier decisions. At the end of
the semester, your final deliverable will include the final versions of
all the documents.
Group Assessments (40% of course grade)
Each group will be graded on several dimensions; each member of the
group will receive the same group scores regardless of that member's
respective contributions (or lack thereof). Thus, it is important
that you find a way to operate effectively as a group. Factors
determining the group score will be: instantiation of team structure
(5%), log book (10%), project deliverables (collectively 35%).
Individual Assessments (20% of course
You will also be graded individually by me and by your peers.
Your peers will assess your contribution to the project; your
submission of a completed form for your peers is required in order for
you to receive the credit attributed by your peers. I will
evaluate your presentation.
Project Light. A
non-profit literacy with a vision to "provide the tools of multimedia
computer and internet technology to teach on a one-to-one basis every
child, teen and adult to read in their own language and teach English
as a Second Language."
Competition. A contest (with a $10,000 prize) to design and
implement the best general
game-playing program. The system must be able to play games based
on a presentation of the starting and winning game configurations and a
description of the legal moves. It is probably unrealistic to
expect to win, but this could be a very fun project.
Go is an ancient game of strategy played on a 19x19
grid with black and white stones. While computer chess programs
have played at master levels for some time, the best computer Go
programs are still at the novice level. GNU Go is a free software
implementation of Go. We could extend the program in any one of
Gnucash. Gnucash is a
powerful financial management system
with an extensive user-base. Although it now has a preliminary
capability, I think it could be significantly enhanced so as to show
users their average monthly expenses by category or project expenses by
category. Extensions to
Gnucash are written in Guile (Scheme).
Chandler is an ambitious personal information
management system aimed at replacing existing integrated email,
calendaring, etc applications. Chandler is being implemented in
Python. As a potentially very useful tool with a broad user-base,
it represents an ideal platform for studying and deploying adaptive
personalized assistants. In order for these assistants to be
adaptive, they must have data from which to build models of user
behavior, preferences, etc. A nice project would be to implement
the data collection and logging capabilities for Chandler.
Personalized adaptive music player. Construct a system that
manages a user's music content and plays songs according to her tastes
and moods. The system would track the user's interests and recent
listening behavior and queue songs accordingly so that favorite songs
are played more frequently than disliked songs, but not so frequently
that they become disliked.
details of the project assignments are extensively borrowed from
Professor Richard Taylor's website for a software engineering class he
teaches at UCI.