Software Development Practices

Dr. Jaspal Subhlok (Office Hours: M 2-4PM PGH 217 or by appointment)

Dr. Venkat Subramaniam (email for appointment)

 

Course Description: The objective of this course is to bring the students up to speed on the 
pragmatics of software development. In this hands-on course, the students will work towards 
developing industrial strength software systems using state of the art techniques and tools. 
Emphasis will be placed on estimation, planning, risk management, testing, development and 
deployment. Various good practices in software development, including pragmatic programming 
and agile software development practices will be emphasized.
 
Pre-requisite:
·         You must have completed either COSC 6318 or COSC 4351
·         You must have completed COSC 1320 or equivalent
·         You must have completed COSC 2320 or equivalent
 
Pre-requisites will be enforced (expected to have knowledge of OO, Data Structures, and 
software development life cycle). If you have any questions about them, please contact Jaspal. 
Please fill the pre-requisite certification form available on the course web site and submit it to 
Jaspal by 6PM January 27th.
 
Topics:
 
Agile Software Development
Principles and practices
Tools for agile development
Unit Testing
Continuous integration
Continuous Feedback
Estimation
Measuring progress
Measuring Quality
 
Course organization: There will be lecture/presentations for the first 3 weeks. After that the course will be 
primarily driven by student project iteration with some guest lectures and other presentations. 
There will be a project progress review every two weeks with
deliverables at the middle and end of the semester.
 
Lecture Schedule:
January 20 - Introduction to course, expectations, process, project expectations, and student evaluations 
January 20 - Introduction to Agile Methodologies and Practices
January 27 - Project Sponsor Presentations

Project: Each student will participate in a software project which will have an external sponsor. The project will be designed and implemented in consultation with the sponsor. The instructors will oversee the project progress in terms of the requirements, progress of the work, and implementation. The success of the project is measured based on the number of criteria including (but not limited to) working software delivered, continued progress, and pace through out the semester. The process and practices followed and the quality of code, the ability to accomodate reasonable change in requirements, feature completeness, and progress in terms of schedule will be considered. Use of tools, techniques, practices, and facilities that reduce risk and promote probability of success will be encouraged.

 

Project Team Requirements:

  • Each team should have 4 to 6 students
  • Each team is required to have a minimum of 1 undergraduate student
  • Each team is required to have at least 2 graduate students
  • Each student is required to be part of one and only one team
  • Each project team will have a team lead

Any exceptions from these requirements require the approval of the instructors.

Project Schedule:

  • January 23 - Email your team information. Name and email address of each member along with a designated team lead/contact person.
  • January 23 - We will post project details. Please review those before project presentations.
  • January 27 - Project presentation by Sponsors.
  • January 29 - Email your project preferences
  • January 30 - Your project assignment will be emailed/posted
  • February 3 - Iteration starts - Iteration duration every 2 weeks
  • February 17 - First Iteration ends
  • March 17 - First incremental release
  • April 28 - Project Release
  • TBD - Final Demo and Discussions

Grading:

  • Grades for project components will depend on the overall group effort as well as the individual contribution of students.
    • Iteration demo and progress 50%
    • First incremental deliverable 10%
    • Final deliverable 15%
    • Final demo and report 15%
    • Student evaluation of project 5%
    • Individual Peer review 5%

 

Some details of grading may change but this should give you a good idea.

 

Recommended Text: There are no required texts for this course. Some recommended texts are:

  • Agile Software Development: Principles, Practices, and Patterns by Robert Martin
  • Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps by Mike Clark
  • Test Driven Development: By Example by Kent Beck
  • Pragmatic Unit Testing by Dave Thomas and Andy Hunt