CAS 703
Software Design



  1. September 6: Introductions

  2. September 8: 1Programs.pdf – will be updated!

  3. Please check this section for further announcements.

  4. September 22: Distinguished Lecture by C. Mohan, IBM, 1:00 pm, ABB 136

Calendar Description

  1. Formal specification methods. Requirements specifications. Fail-safe systems. Verification of safety critical applications. Systematic testing. Specification and design of concurrent, multi-process and distributed systems.


  1. Elementary knowledge of discrete math, fluency in object-oriented programming, and willingness to read. If you are not familiar with object-oriented programming, you should learn Eiffel, C#, or Java on your own, see recommendations below.


  1. This course lives from critical reflection on the material presented in class. All participants are expected to actively engage in discussions. Attendance at all classes is mandatory. Someone who misses a class without explanation or a valid reason (e.g. University or health related) will be asked to withdraw from the course.


  1. Sequential and concurrent programming: verification, exception handling, modularization, design patterns, testing, documentation

  2. Systems modelling

  3. Requirements elicitation, management aspects


  1. Assignments 30%

  2. Literature research paper 30%

  3. Critique of someone else’s literature research paper 10%

  4. Development project 30%


  1. Each student will be giving one presentations of 25 min.

  2. The grade is determined by the understanding of the topic, coverage of the topic, background knowledge, critical judgment, quality of slides (e.g. color, layout, animations), accompanying notes and materials (if applicable), demonstration (if applicable), clarity of explanation, convincingness of arguments, pace, language (each error gets a deduction)

Required Material

  1. Jean-Raymond Abrial, Modeling in Event-B: System and Software Engineering, Cambridge University Press, 2010.

  2. Rodin. You need to install it on your own machine.

  3. pState. Please wait with installing.

  4. Justin Zobel, Writing for Computer Science, 3rd edition. Springer, 2014. Author's page.

Further Reading (more will be announced)

  1. Logic:

  2. David Gries, Fred Schneider, A Logical Approach to Discrete Math. Springer-Verlag, 2003. See also CalcCheck!

  3. Verification:

  4. Roland Backhouse: Program construction. John Wiley and Sons, Inc., 2003. See also Backhouse’s course on Algorithm Design.

  5. Edsger Dijkstra, Wim Feijen: A Method of Programming. Addison-Wesley, 1988.

  6. David Gries, The Science of Programming. Springer-Verlag, 1981.

  7. Suad Alagic, Michael Arbib: The Design of Well-Structured and Correct Programs. Springer-Verlag, 1978.

  8. Edsger Dijkstra: A Discipline of Programming. Prentice-Hall, 1976.

  9. Anne Kaldewaij: Programming: the derivation of algorithms. Prentice-Hall, 1990.

  10. Concurrency:

  11. Greg Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 2000.

  12. Object-Oriented Programming and Design Patterns:

  13. Bertrand Meyer. Object-Oriented Software Construction, 2nd edition, Prentice-Hall, 1998.

  14. Barbara Liskov, John Guttag. Program Development in Java. Addison-Wesley, 2000.

  15. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns, Addison-Wesley, 1995.


  1. Google Scholar

  2. ACM Digital Library (free access within mcmaster.ca)

  3. IEEE Explore Digital Library (free access within mcmaster.ca)

  4. CiteSeer

  5. The Collection of Computer Science Bibliographies


  1. Sept 6: Introductions


  1. Assignments are to be completed individually; they must constitute your own work and references to all used resources must be given. Details are announced with each assignment. See also the Academic Dishonesty policy below.

Academic Dishonesty

  1. Academic dishonesty consists of misrepresentation of deception or by other fraudulent means and can result in serious consequences, e.g. the grade of zero on all assignments, loss of credit with a notation on the transcript (notation reads: "Grade of F is assigned for academic dishonesty"), and/or suspension or expulsion from the university.

  2. It is your responsibility to understand what constitutes academic dishonesty. For information on the various kinds of academic dishonesty please refer to the Academic Integrity Policy, specifically Appendix 3. The following illustrates only three forms of academic dishonesty:

  3. Submission of work that is fully or partly copied from someone else, or making your work available for copying to others.

  4. Submission of work that has been fully or partly obtained from other sources like the Internet.

  5. Copying or using unauthorized aids in tests and examinations.

  6. All submitted assignments are always checked for similarities.