Table of Contents

Software Development Methods, Fall 2011

This course introduces a selection of theories, practices, and tools that, we believe, will enhance the student's ability in developing correct and high-quality software. Its goal is to acquaint the students with some of the well-used methods and tools for practical software development as well as some fundamentals of software verification, so as to prepare them for a career in software development. The view taken here is that of an engineer (programmer, software engineer, or software architect) and hence the focus of the course is primarily on the technical aspects of software development process.

Announcements

Instructor

Yih-Kuen Tsay (蔡益坤), Room 1108, Management II, 3366-1189, Xtsay@im.ntu.edu.twX (between the enclosing pair of X's)
Guest Lecturers: Jeffrey CH Liu, Clement CW Su, and Jim CL Yu, IBM

Lectures

Thursday 9:10-12:10, Room 101, College of Management, Building I

Office Hours

Wednesday 1:30-2:30PM or by appointment

TA

Chi-Shiang Liu (劉啟祥), 3366-1205, Xloftywind@gmail.comX (between the enclosing pair of X's)
Jing-Jei Lin (林靖婕), 3366-1205, Xgrace6349@gmail.comX (between the enclosing pair of X's)

Prerequisites

Object-Oriented Programming and Discrete Mathematics

Textbook

Class Notes and Selected Readings

After an overview of the subject matters, we will study in great detail several software productivity tools, the UML, design patterns, and some fundamental elements of formal software modeling, analysis, and verification.

Grading

Homework 15%, Midterm 35%, Term Project 40%, Participation 10%.

References

  1. The UML Resource, OMG.
  2. The Unified Modeling Language User Guide, 2nd Edition, G. Booch, I. Jacobson, and J. Rumbaugh, Addison-Wesley, 2005.
  3. Design Patterns: Elements of Reusable Object-Oriented Software, E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Addison-Wesley, 1995.
  4. The OWASP Website. (Note: a website dedicated to Web application security.)
  5. Object Constraint Language, OMG Available Specification, Version 2.0, OMG.
  6. Software Abstractions: Logic, Language, and Analysis, D. Jackson, MIT Press, 2006.
  7. Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, Harper & Row Publishers, 1985. (Note: follow the link to author's free download site.)
  8. Logic in Computer Science: Modelling and Reasoning about Systems, M. Huth and M. Ryan, Cambridge University Press, 2004.
  9. Verification of Sequential and Concurrent Programs, 2nd Edition, K.R. Apt and E.-R. Olderog, Springer-Verlag, 1997.
  10. The SPIN Model Checker: Primer and Reference Manual, G.J. Holzman, Addison-Wesley, 2003.
  11. Spin - Formal Verification Page: http://spinroot.com/.
  12. Temporal Verification of Reactive Systems: Safety, Z. Manna and A. Pnueli, Springer-Verlag, 1995.
  13. The Formal Methods Page: http://formalmethods.wikia.com/wiki/Formal_methods, J. Bowen. (Note: this Web portal provides links to numerous formal methods and tools.)

Old Exams and Solutions

[Midterm 2004, Solutions]
[Final 2004]
[Midterm 2006, Solutions]
[Final 2006]
[Midterm 2008]
[Midterm 2009]
[Midterm 2010]