To give M.Sc. (Maths) students who did fair amount of Computer Science/Information Technology theory and lab. courses as part of the M.Sc. (Maths) degree, exposure to software projects, I ran a few mini-project lab. courses over the years (in a deemed university in Andhra Pradesh, India). As the mini-projects themselves are the intellectual property of the educational institution, I am not in a position to share any details about them. However my first task during these mini projects was to expose students who had done programming courses and so knew programming, to the tasks involved in doing small software projects. After that was done I would assign four to five students to a mini-project of their choice but which was acceptable to me (I mean, I would see whether it was feasible given the time constraints and also whether it would meet the goals of the mini-project lab. course). The students would go through the entire cycle of putting down their imagined user requirements in a document, the design, planning for the coding work among the team members, the coding, unit testing, integration testing, some level of documentation of design and finally, a demonstration of the work with each team member demonstrating a part of the work. The evaluation took into account the individual team member’s specific contribution to the software.
I was quite successful, IMHO, in using the coffee brewer design document of Jim Weirich which is available here: http://www.cs.unibo.it/~cianca/wwwpages/ids/coffee.pdf to teach/expose the following concepts to students:
- Simple Use Cases to capture functionality
- Simple Object Oriented Analysis & Design which is captured in simple UML diagrams (Class diagrams mainly)
Additional materials I either used or recommended as optional reading were:
- Parlezuml Use Cases and Use Case Driven development: http://www.codemanship.co.uk/parlezuml/tutorials/usecases.htm
- Using Object-Oriented and UML Tools for Hardware Design: A Case Study: http://www.sie.arizona.edu/sysengr/publishedPapers/HVAC_UML.pdf [Though it is a hardware design case study I felt it was a good tutorial on OOAD and UML even for software design students.]
The mini-projects that the students did were typically database oriented projects with a web front-end using Java or ASP.Net. At least some students have come up to me after finishing the mini-project and expressed satisfaction and joy at having developed some not-insignificant software mini-project (as against doing only programming assignments earlier) and that too as a team effort. So I think these mini-project courses were quite successful in achieving their objective of giving most students some exposure to software projects.