My first semester teaching undergraduate software engineering didn't go very well. I knew that I wanted to use a single, large class project to better give the students a sense of real software engineering difficulties. But actually implementing this idea was difficult. I chose a boring project, was overwhelmed by project management work, and had a hard time evaluating individual students.
Since then I have developed a course that I think provides students with the experience of working together on a single large project, while also allowing me to keep my sanity. A paper on the way that this large-team approach is used was presented at SIGCSE 2005. Since then, I have expanded the paper to include more experience using the approach, as well as more a more detailed discussion of the individual evaluation technique I use. It was published in the Computer Science Education Journal.
This modified version of Issue Tracker has been tweaked for software development in the style described in the above papers.
To see how the approach was used in previous years, visit the spring 2004 and spring 2005 course webpages. I'm also using the approach this year, and it is also being used elsewhere:
Greg Wilson and Karen Reid have developed a similar system called DrProject at the University of Toronto. It's based on Trac instead of Issue Tracker.
My course uses the Issue Tracker task management system, modified by myself to better support my course. Almost all of the changes I have made have been packaged up as nice bite-sized patches, and submitted to the Issue Tracker project. As far as I can tell, they have not been merged in yet. (It looks like development has stagnated, and that people are working on Entertrack instead. I have a TA who will be porting my system to EnterTrack this summer.)
You can download the modified version here:
To apply the patch, put it in your issue-tracker directory and run patch -p0 < patch-e-to-f.diff. On Solaris, use gpatch instead of patch. You should be able to unpack the distribution over your existing installation without problems, but I haven't tested this. To be safe, unpack it elsewhere and compare the directories.
Always back up your issue tracker directory before doing an upgrade. To do this, change to the directory above the issue-tracker directory, and run tar cvf - issue-tracker | gzip -9 > issue-tracker.backup.tar.gz.
You should also download the Administrator Guide (mirror here of 0.2 version) to install the software on your web server. I provide detailed instructions for setting things up below.
You'll need a web server with PHP support, and a MySQL or Postgres database server. You should be able to just follow the step-by-step instructions here, but also see the administrator's guide for more information.
Download the source code to your web server. Unpack it somewhere visible to the web using this command:
zcat issue-tracker-4.0.4?.tar.gz | tar xf -
For example, I put the code in /home/f85/coppit/public_html/csci435/project.
_FILES_
constant to the path of the uploads directory. I just use
/home/f85/coppit/public_html/csci435/project/issue-tracker/uploads/. Be sure that it ends with a slash._WEBUSR_ to the userid of the web server. (On our systems
it's "wwwrun".)_WEBGRP_ to the group of the web server. (On our systems
it's "www".)$db array values as appropriate.
For example, mine says:
$db = array(
"type" => "mysql",
"host" => "zimbo.cs.wm.edu",
"port" => "",
"name" => "cs435spring2006issuetracker",
"user" => "coppit",
"pass" => "my_password"
);
_ADMINEMAIL_ and _EMAIL_ to your email
address. _TITLE_ to the web page title. I use "CSci 435/535
Issue Tracker"_COMPANY_ as appropriate. I use "CSci 435/535" $allow_register to TRUE if you want your
students to self-register. Note that this would allow strangers to register
too, but they won't be able to do much without your permission.smarty.env.imgs.logo.chown -R myid:www cache css download logs sessions themes uploads includes/motd chmod -R ug+rwX cache css download logs sessions themes uploads includes/motd chmod -R o-rwx cache css download logs sessions themes uploads
mysql -h zimbo.cs.wm.edu -u coppit -p cs435spring2006issuetracker < setup/schema.mysql
mysql -h zimbo.cs.wm.edu -u coppit -p cs435spring2006issuetracker < setup/indexes.sql
INSERT INTO
users and change the value 'admin' to whatever username
you want to be known as. Change the email address in the third field to your
email address as well. Don't change the hexadecimal string in
the second field.mysql -h zimbo.cs.wm.edu -u coppit -p cs435spring2006issuetracker < setup/se_data.sql
<p><b>Welcome to the Issue Tracker for the Spring 2006 CSci 435/535 class project.</b></p> <p>Watch this space for future messages.</p> <p>If you find a bug in this system, report it for some bonus points.</p>
If you configured the system to allow people to self-register, they will automatically be made developers, but will not have any permissions. Below are instructions for manually adding people and setting their permissions.
Once a project initial design is complete, it becomes clear what the modules are. Similarly, the number of milestones becomes apparent. Since the system is configured with minimal modules and categories, you will need to add more. The process is basically the same. Here are detailed instructions for adding a new module.
The process is similar for adding categories.
If an issue is not completed in a milestone, you should create a duplicate issue in the next milestone rather than simply changing the milestone for the issue. The reason is that changing the milestone will alter the performance report for the previous milestone. By copying the issue, you will ensure that the performance score won't change.
One thing that may occur is that old issues from previous milestones may pollute the issues list. In the file conf/config.php is a setting for milestones to date, which includes the current milestone. As your project progresses, add the current milestone to the array. This will filter out issues for previous milestones, and will ensure that the "quick performance report" in the left navigation pane will always reflect the current milestone.
Note that no such filter has been implemented in the "My Owned" and "My Assigned" issues lists.
Some students may leave the course prematurely, such as by dropping the course. In this case, the other students must handle the additional load. This is handled automatically by the grading system. Inactive users are treated the same as managers echo $em_dash ?>non-group members echo $em_dash ?>and their work is subtracted from the earnable points.
To make an account inactive, go to the users list in the administration panel and click the checkmark next to their name, making it an ex-mark.
Choosing a good project can be difficult given the competing requirements. Here are some good qualities of a project:
Examples of projects: a billiards game with 2D and 3D views (fun, but required physics and simulation knowledge), a traffic simulator (fun, not too much specialized knowledge).
We use subversion for version control. If you're using the Berkeley DB implementation of the repository back-end, Unix permissions can be a real hassle. The easiest thing is to rename /usr/bin/svn to /usr/bin/svn.protected, and create a script /usr/bin/svn that reads:
#!/bin/sh umask 000 /usr/bin/svn.unprotected "$@"
You may run into a problem uploading files larger than 2M. You should definitely test this. Usually it's a problem with the default PHP upload limit. You need to edit the .htaccess file in the issue-tracker directory, adding
php_value upload_max_filesize 15M
This may result in a server error when you try to view the website, if your PHP configuration does not allow this setting to be set in .htaccess. In this case, remove it from the .htaccess file and then contact your system administrator and ask them to edit the web server's /etc/php.ini to set the upload_max_filesize to 15M.
One user has reported problems with logging in, where after entering a username and password, the original login webpage would be displayed again without any error message. The apparent solution was to be sure to have a .htaccess file, even if that file just contains commented-out lines.
Back to David Coppit's Homepage.
Last changed May 21 2008 10:45:51.
David Coppit,
coppit@cs.wm.edu
There have been 1232693 hits since Thu Jun 9 14:49:55 2005