Spring Semester 2007
SYLLABUS
I. Title: CSC494 Senior Software Project
II. Time and Place: Spring Semester 2007,
MWF 11:00‑12:05 p.m. (RS 214);
Final Project Demos due during the last week of classes at
your regularly scheduled meeting time
III. Credit: Four units
IV. Instructor: Dr. McKinstry, Professor of Computer Science
V. Office Hours: Rohr Science 216, (619) 849-2269; email: jeffmckinstry@pointloma.edu
MWF: 2:45 p.m.-4:15 p.m.
TR: 9:30 a.m.-12:00 noon
VI. Text: Recommended: Bernd Bruegge and Allen Dutoit. Object-Oriented Software
Engineering Using UML, Patterns, and Java 2nd Edition, Pearson, Prentice Hall, New
Jersey, 2004.
Other resources: wxWidgets tutorial slides can be found on templates on Grumpy under
the CSC 494 folder
More in-depth tutorials on wxWidgets can be found at www.wxwidgets.org.
VII. Objectives of the course: “… the CC2001 Task Force recommends that curricula include
a capstone project that allows students to bring together all the skills and concepts that
they have previously learned during their undergraduate courses. Such a course might
include a small amount of additional material, but the major focus must be on the
project.” – Computing Curricula 2001, Computer Science produced by The Joint Task
Force on Computing Curricula, IEEE Computer Society, and the Association for
Computing Machinery.
VIII. Course Organization: The Course Schedule provides an outline with dates for some of
the important activities of the course. Class time will be used for:
1. Student/prof. presentations of wxwindows GUI library or Java Swing.
2. Weekly project status meetings.
IX. Student Evaluation:
Weekly status meeting participation 10%
Term project SRS (v1 & v2) 10%
Term project SDD (iteration 1 & 2) 10%
Term project STD (iteration 1 & 2) 10%
GUI lecture 5%
GUI programming assignment warmup 5%
Term Project demonstration + source code 25%
Customer’s grade 25%
You will be required to demonstrate your programs to the professor and to turn in a
printout or electronic copy of your work.
Grades will be determined as follows:
93-100% A
90-92% A-
87-89% B+
83-86% B
80-82% B-
77-79% C+
73-76% C
70-72% C-
67-69% D+
63-66% D
60-62% D-
0-59% F
X. Course Schedule (subject to change).
Week 1, Jan. 8: Pick projects and meeting times. Project preferences due Wednesday.
I will assign projects by Fri. GUI programming assignment due Friday
(unless you choose to use C++ and wxwindows for your project.)
Week 2, Jan. 15: wxwidgets (if necessary)
Week 3, Jan. 22: project status meetings
Week 4, Jan. 29: project status meetings
Week 5, Feb. 5: project status meetings + SRS due during your meeting time
Week 6, Feb 12: project status meetings
Week 7, Feb 19: project status meetings
Week 8, Feb 26: project status meetings + iteration 1 SDD due during your meeting time
Week 9, Mar. 5: Spring Break
Week 10, Mar. 12: project status meetings
Week 11, Mar. 19: project status meetings + iteration 1 STD and demo due during your
meeting time
Week 12, Mar. 26: project status meetings
Week 13, April 2: project status meetings + iteration 2 SDD due during your meeting
time
Week 14, April 9: project status meetings
Week 15, April 16: project status meetings
Week 16, April 23: project status meetings
Week 17, April 30: Demonstrate your project during your scheduled weekly
meeting time.
XI. Projects
Projects will be individual projects, not group projects. All projects must have a
customer who cares about the project and wants to use the software after the
course is over.
Project #0: Dr. McKinstry’s pet project #1. Bridge bidding tutor on a Palm pilot or pocket
PC. Bridge bidding consists of many well-defined rules. Implement a program that will
allow the user to select from a list of rules that still apply after each round of bidding,
showing what each bid means. This will be very useful for beginning Bridge players.
Project #1: Dr. McKinstry’s pet project #2. Parallel software to evolve biologically
realistic neural networks. Project #2: Translation sensation project enhancements.
Project #3: Dr. McKinstry’s pet project #3. Rook AI. A former student developed software
written in java to learn to play the cardgame Rook automatically through self-play (using
“TD learning”). The game of rook was simplified, and more work was required to test if
the program was really working. This project would involve modifying the java software to
the full game of rook. The ultimate goal is to plug the program into a nice GUI developed
by another student and see if it plays a good game of Rook. The student would benefit
from having taken the AI course. This project will exempt the student from having to do
the GUI programming assignment, lecture, SRS and SDD.
Project #4: Dr. McKinstry’s pet project #4. Golf swing video analysis software. Take
video, preferably from a miniDV camera, automatically segment the golf swing, and
superimpose two video streams so you can compare your swing with that of a
professional/low handicap player.
Project #5: Dr. McKinstry’s pet project #5. Neuroscience research. If interested, discus
with Dr. McKinstry after class. This project will exempt the student from having to do the
GUI programming assignment, lecture, SRS and SDD. My current project involves
modifying a learning algorithm, the Self-organizing Feature Map algorithm, to learn
sequences of patterns instead of individual patterns. This should be a simple extension,
but it needs lots of testing
Project #6: Dr. McKinstry’s pet project #6. Learning to play solitaire. This project would
use software from a prior student project which could automatically play the Microsoft
solitaire game that comes with windows. Your job would be to use techniques from AI
and neuroscience to allow the computer to learn to play solitaire by watching you play.
This is for someone who might have qualified to do a graduation with honors project, or
someone who has a keen interest in the subject.
Project #7: Dr. McKinstry’s pet project #7. Learning to throw a ball. How a human can
learn to make arbitrarily complex movements, such as throwing a ball, remains a
mystery. Traditional robotics doesn’t come close to human ability. One possible simple
idea is that the brain learns
1) to predict the sensory consequences of a movement command by storing the
results of randomly generated commands (for example, when I give command, c,
the ball landed at position x,y);
2) can later act purposefully by giving the average of all the commands, weighted by
their distance from the new goal.
It is known that ball players tend to keep the hand moving on a line toward the target
during the throw which tends to increase accuracy by reducing the need to release the
ball at a precise moment in time. This project would be to simulate an arm throwing a
ball using the simple learning rules above and see if straight hand paths emerge from this
learning process.
Project #8: Netflix movie recommendation challenge. Netflix recommends movies to a
customer based on the ratings of other customers who rated movies like the customer.
Netflix has test data that you can download and try your own algorithm. There is a
$1,000,000 prize for the best algorithm that can improve by 10% over theirs. I have some
ideas on how to do it that a student could test.
XII. GUI Programming warmup assignment
Write a program that will plot Goldbach’s comet. The maximum value for n must be
entered in a dialogue box by the user. There must be a button that allows the user to
cause your program to redraw the comet for the current value of n entered in the dialogue
box. You may choose any environment you like, as long as it runs on a Windows 2000
machine (java, visual basic, C++/MFC, or C++/wxwidgets for example). The
language/GUI choice you make for this assignment will be the one your project will be
done in. The purpose of this assignment is to minimize risk by identifying any training
necessary at the earliest possible time.