This page provides more detailed information about individual lectures as well as links to various resources. Students are encouraged to review the slides before the lecture.

Lectures

The following table provides links to lecture resources (slides, videos, extra reading).

Date Title Downloads
2024-02-20 Introduction, software development Slides (CZ)
2024-02-27 API design Slides (CZ)
2024-03-05 API design (cont.)
2024-03-12 Class design Slides (CZ)
2024-03-19 Class design (cont.)
2024-03-26 Design principles Slides (EN)SRPOCPLSPISPDIP
2024-04-02 Unit testing and testable design Slides (CZ)
2024-04-09 Design principles in design patterns (strategy) Slides (EN)
2024-04-16 Design principles in design patterns (observer, decorator)

Extras

The following table provides links to additional resources such as lab slides or slides that were not covered during the lectures but are worth reviewing.

Date Title Downloads
2024-02-22 Labs agenda and grading Slides (EN)
2024-02-22 Code formatting Slides (CZ)
2024-02-22 Documentation Slides (CZ)

Literature

The course is mostly based on the 2nd edition of the Code Complete book by Steve McConnel (also in Czech). While there are many other books dealing with the software development and maintenance, only a few put such a strong emphasis on writing program code.

  • McConnell, S. Code Complete: A Practical Handbook of Software Construction. 2nd edition, Microsoft Press, 2004, ISBN 978-0735619678
  • McConnell, S. Dokonalý kód: Umění programování a techniky tvorby software. 2. vydání, Computer Press, 2006, ISBN 80-251-0849-X

With respect to design principles, essays and books by Robert C. Martin are a time-proven classic, and when it comes to design patterns and their connection to design principles, I have found the Head First Design Patterns book by Eric Freeman, Elisabeth Robson, Kathy Sierra, and Bert Bates to be both entertaining and enlightening:

  • Freeman, E., Robson, E., Sierra, K., and Bates, B. Head First Design Patterns. 2nd edition, O’Reilly, 2014, ISBN 978-0-59600712-6

Other sources of useful insight are the Effective Java book by Joshua Bloch, and the Practical API Design book by Jaroslav Tulach. Even though both books deal primarily with Java, a lot of insight is directly applicable in general.

  • Bloch, J. Effective Java. 3rd edition, Addison-Wesley Professional, 2017, ISBN 978-0134685991
  • Tulach, J. Practical API Design: Confessions of a Java Framework Architect. Apress, 2008, ISBN 978-1430209737

Online resources

In addition to books, many interesting essays and articles on software design and good practices can be found on the web. Links to many of those can be found in the notes to lecture slides.

When it comes to design and testing, the online guide on Writing Testable Code by Miško Hevery provides a set of guidelines that help keep certain design malpractices at bay and testers happy:

  • Hevery, M. Writing Testable Code. Available online.