CS 3505/5020:
Software Practice II
Spring 2009
Home | Syllabus | Schedule | Resources
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.
Successful completion of CS3500.
Communication in the class is via mailing lists:
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).
There is only one required textbook:
- Fowler, Martin "UML Distilled Third Edition", Addison Wesley, 2004
Other relevant books:
- Cockburn, Alistair "Crystal Clear - A Human Powered Methodology for Small Teams", Addison Wesley, 2005
- ?? Good gaming book ??
- ?? Something on SCRUM ??
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.
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.
Introduction
C#
Gaming
XML
Software Process and UML Nuts and Bolts
Overview of Requirements and Architecture
Use Cases
Software Architecture
OOD and UML Class Design
Dynamic Modeling
Agile
Continuous Integration
Teams and Team Player Type Analysis
How to Run Meetings / Thoughts on Management
Wrap up
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.
Homework and projects will be worth 75%, while quizzes and midterm exams will be worth the remaining 25%.
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.
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.
Assignments will not be accepted late—with the following exceptions:
Individual assignments - Each student will receive two late days for the entire course. Each late day allows you to extend the assignment deadline for one day (24 hours). To use a late day you simply submit the assignment late. We will assume that any assignments submitted late count against your late days.
Team assignments - Each team will receive two late days for the entire course. The same rules apply as above for individuals.
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.
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.
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.
The information on these topics is college wide and provided here.