Skip Navigation

Point Loma Nazarene University

CSC494 - Senior Software Project

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.