Thank you for your interest in providing projects for the Software
Development Lab (SDL). In SDL, each team of 3 to 5 students works on a
moderately large project for a full academic year. Projects start in
September, with final delivery toward the end of May. Teams will attempt
to deliver running systems, but deployment is the responsibility of the
client.
Successful projects have several characteristics:
- They must be projects that clients find valuable. If you're
interested, it will be easy to get students interested.
- If the project is similar to existing solutions, there should be key
differences between the proposed project and existing solutions. This
often takes the form of significant new features that would be included in
the proposal. The issue is that it is hard to maintain interest in a
project if it is already solved.
- Projects should not be in the critical path of the sponsor's business
plan. Student solutions are often innovative, and they strive for
robust solutions. However, there is no guarantee of success and
student schedules make it difficult for them to respond to critical
issues quickly.
- Projects must have well-defined solutions based on known algorithms.
If the project involves algorithms research, other courses may be a
better fit. If you're not sure, send us a proposal and we will either
make suggestions to change it or help you find where it would be a
better fit.
- It is helpful when more than one person from the organization can be
involved in the project, even if just one person meets with the
students. It is rare to have one person involved in more than one
project.
- Projects should not involve excessive proprietary or sensitive
material. Proprietary agreements are possible, but limited in
forcefulness. Sensitive data is typically handled by providing
anonymized versions.
Students respond particularly well to projects that provide value to a
larger community. Projects for non-profits certainly fall into this
category. But projects that benefit businesses also work; we just need
to identify a benefit to people other than investors. Students are also
interested in learning new technologies and addressing new problem
areas. The key element is motivation: building useful systems and
providing opportunities to learn new skills.
Clients are expected to engage with the students throughout the project:
- They should plan to meet with the students approximately twice a
month, possibly with additional meetings early in the project. It is
great when the client can visit the lab, but video-based meetings work
as well.
- A particular student will be tasked as the primary point of
communication, but we encourage clients to contact the instructor if
there are questions the team cannot answer or issues to discuss.
- It is important that the client contact the instructor if business
needs change and the project is no longer useful. We will then
redirect the team to other tasks. If a client continues a project in
spite of losing interest in the outcome, student morale drops and the
organization can receive poor word-of-mouth publicity. Successful
projects often provide opportunities for recruitment.
- There is no up-front cost to the client. Teams have access to internal
servers they can use to stage the software, but deployment will have
to be done using off-campus servers set up by the client.
- Generally, the client pays for travel and additional resources such as
specialized hardware, but we may be able to find sources of funding
for some public-service projects.
- It's fine to specify the platform and programming language. It is
common for teams to learn new technologies to support projects.
We will consider multi-year projects, but we cannot guarantee that any
particular project will be picked up by a team in the following year. It
generally works best to break large projects into smaller pieces with a
different portion implemented each year. It is critical that students in
successive years have important new features to implement rather than
simply refining existing features done by previous teams.
Constraints
- Projects must be hosted using the school's GitLab account. We
typically restrict source code access to just the instructor,
students, and the client.
- The expectation is that the students will be fully responsible for the
design and implementation of the system. This is important to ensuring
the students have ownership of project outcomes. However, the
expectation is that the students will follow any (feasible) guidance
provided by the client.
Process and Timelines
Ideally, we start collecting new projects in March. However, we will
accept ideas any time in the year.
- When proposing a project, clients should write a paragraph briefly
describing the problem to be solved, how that system will benefit
users, and what technologies will be involved. Use terminology that
makes sense to nineteen to twenty-year old students. They are
motivated by saving people time and improving quality, but generally
not by corporate "bottom lines".
- Email your proposal to hasker (at
msoe.edu). You are
encouraged to contact Dr. Hasker either by email or phone
(414–277–7326) if you have questions or need help refining the idea.
- Dr. Hasker will use the paragraph to compile a list of potential
projects to be sent to the students. Descriptions typically have to
be pared down
- Late March/early April: students will rank the projects by interest.
In the past we have made final assignments during the summer, but we
are experimenting with notifying students earlier.
- August: clients will be contacted by instructors to arrange a first
meeting with each team.
- Last week of August or first week of September: initial meetings
with teams establishing basic scope and expectations for the
projects. Teams will interview the clients for more information.
- First three-week "sprint": teams will refine the requirements and
develop storyboards capturing how users will interact with the
system.
- Week 3 or 4 of the fall term: teams will review the storyboards with
clients and develop prototypes.
- By the end of the fall semester: teams will have completed two full
sprints implementing core features.
- Spring semester: teams will continue the project with a goal of
delivering a final version, including an automated test suite, by
the end of the academic year. Students are also asked to prepare
materials describing the system structure for use by future teams
working on the same project.
Note there is no expectation that students will work on the projects
over the summer months.
Successful Projects
The following is a partial list of successful projects to help clients
determine scope and evaluate ideas:
- For an avionics company, software to track system vulnerabilities.
- Kiosk systems for art work at a company.
- Software used by the computer science and software engineering
programs to collection programming solutions and evaluate them against
a number of test cases.
- A registration system used by Tutoring Services at MSOE to allow
students to request tutoring and to assign tutors to those students.
This allows tutors to start working with students much earlier in the
term.
Projects from previous years are available: