CS 3505/5020: Software Practice II

Spring 2009


Home    |    Syllabus    |    Schedule   |   Resources


Course Objectives

The purpose of this class is to provide you with the information and skills to work on software projects in a team setting all the way from inception to final product.  CS3500 focused on individual software skills and mostly touched on implementation, debugging, testing, and maintenance.  This class will dovetail with 3500 and focus on the parts of software development up to implementation including  requirements gathering, requirements analysis, software architecture, and design.  An important part of this class will be to learn about the Unified Modeling Language (UML).  We will cover parts of the two main process models: traditional, incremental, structured software development and agile. 


Prerequisites

Successful completion of CS3500.


Communication

Communication in the class is via mailing lists:


Hardware/Software Used to Support Class

As in CS3500, the laboratory part of the class will be in our 130/124 EMCB Instructional Lab (while the discussions will be in MEB 3225). 

Software comes to us from the MSDN Microsoft Academic Alliance (your personal access to MSDNAA is here).  This semester we will be using Visual Studio .NET 2008 (C# and XNA).  Through the MSDNAA program, you can get access to nearly all systems related Microsoft Software such as XP and Visual Studio.  Office is NOT included.   Simply email opers at eng dot utah dot edu with your eng.utah.edu login information and they will get you set up.

The target domain will be the construction of video games using Microsoft XNA. You will need to download XNA (also on the MSDNAA site) and get a creative club membership (which is there too).

Note - XNA allows you to develop games that work either on Windows or directly on the XBox 360. 

Note -  XNA also lets you use the Xbox 360 controller on windows to control your game (which will be a requirement since you will be required to make your games work on the XBox 360 as well), so you will need your own controller (or need to be able to borrow one from a friend).  With 10 consoles in the EMCB 130 lab, you will need to use the wired controller.  Here is the link to Amazon for the one that we bought that we know works.  Feel free to buy one from whatever source you want.  See the resources page for the driver if you want to use the controller on your own windows box. Also, if you already own a wireless controller, you can buy an adapter that lets you plug it into the USB port on a windows box. Here is a link to Amazon that has one that I THINK works (need to check on this).


Textbooks

There is only one required textbook:

Other relevant books:


Teams

Much of the work during the semester will be in a team.  Choosing a team wisely is important.  For the agile part of the assignment, it is going to be important that all team members can work in a co-located environment for a decent period of time.  This means that you will need to find chunks of time in which you can all work together.  In order to properly experience agile, you will receive credit for working co-located.  Thus, before choosing your team, make sure that you have at least one two hour and one three hour time every week when the team can work together.  Our plan is to arrange these co-located times to be supervised so you can receive credit for participating (much like science classes have multi-hour closed lab sessions).  So, please consider schedules when you form your team. Teams will be four persons in size.

At the end of each team project, you may switch teams if we can find a suitable arrangement. 


Assignments

Given that this is a brand new class, you need to take these with a grain of salt.  Things will certainly change as we work our way through the topics.

  1. Develop a simple C# application that lets you control a sprite in the game.  Individual
  2. Turn the game into multi-player game. Individual
  3. Build a more complicated game. Pairs
  4. Create a networked version of one of the two games. Pairs
  5. Form your team. Team
  6. Develop a use case model of the project. Team
  7. Analyze the submitted use case models, choose your top three.  Team
  8. Develop a design for the project. Team
  9. Build, test, and demo your project solution.
  10. Vote on the best project solution to be used for the base of the second project.
  11. Phase 1 of Crystal Clear for second project (methodology shaping, blitz planning, burn chart)
  12. Build the walking skeleton for the second project.
  13. Build the second increment for the second project.
  14. Build, test, and demo your second project solution.

Current Topic Plan


Quizzes and Exams

We plan on scheduling short, in-class quizzes as a means of you demonstrating your understanding of the various class concepts.  Depending on how the quizzes are going, we may have a midterm or two.


Grading Information

Homework and projects will be worth 75%, while quizzes and midterm exams will be worth the remaining 25%.


Re-grading

Should you discover what you think is an error in grading, you have only TWO WEEKS after the grades are posted to request a regrade.  The procedure you should use is to first go and see the TA who did the grading and see if you can get it resolved.  If you are still unsatisfied, then you should go and see Professor Kessler.


Homework Due Time

Unless otherwise stated in the homework assignment, all homework solutions will be due by whatever time is listed in the assignment on the  due date. The time that we use for the hand in of a homework is the creation time of the source file in the submit directories. Be careful not to overwrite a file and wipe out its creation time.


Homework Late Policy

Assignments will not be accepted late—with the following exceptions:

Any late assignment that is not accompanied by a valid late-day usage will not be accepted. There are no exceptions or excuses; the late days are intended to cover unforeseen circumstances.

No late days can be used for the last project due during finals week.


Individual Work

The purpose of the homework is to improve your skills at solving problems and demonstrating that you have absorbed the class lecture material. Collaboration with other class members is acceptable when discussing the homework problems and how to go about solving them.

However, the code that you write must be your own. Sharing code or using someone else's code is considered plagiarism and will be dealt with using standard College and University procedures. This is a copy of the policy.

During the team phase of the course, collaboration and sharing of code with your team members is of course expected.

Note, here is the student code.


Flake Out

During the team phase, if a team member flakes out and doesn't do the work assigned to them, then we reserve the right to adjust the scores accordingly.  This may mean adjusting the person not doing their job lower and possibly, in rare occurrences, adjusting the rest of the team higher (because they had to cover for the person "flaking out").  If this starts to happen at any point during the semester, please inform Professor Kessler IMMEDIATELY.


Appeals Procedures, Withdrawal Procedures, Repeating Courses, Adding Courses, and Americans with Disabilities Act

The information on these topics is college wide and provided here.