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.

Lecture videos from the academic year 2020/2021 are available in a shared folder on university SharePoint. You will need to log in with your CAS credentials to access the files. Use <your-login>@cuni.cz on the log-in screen where <your-login> is the login name you use to log into the Study Information System (SIS).

Lectures

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

Date Title Downloads
2022-02-14 Introduction, software development Slides
2022-02-21 API design Slides
2022-02-28 API design (cont.) Slides
2022-03-07 Class design Slides
2022-03-14 Class design (cont.) Slides
2022-03-21 Design principles SlidesSRPOCPLSPISPDIP
2022-03-28 Unit testing and testable design (cancelled) SlidesVideo (2021)
2022-04-04 Design principles in design patterns (strategy, observer) Slides
2022-04-11 Design principles in design patterns (decorator, factories) Slides
2022-04-18 Design principles in design patterns (adaptor, facade) (cancelled due to Easter Holidays) SlidesVideo (2021)
2022-04-25 Method design Slides
2022-05-02 Method design (cont.) Slides
2022-05-09 Defensive programming; Basic building blocks – variables, constants, … Slides (defensive programming)Slides (building blocks)
2022-05-16 Structured programming primitives – sequencing, selection, and iteration Slides

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
2022-02-22 Labs agenda and grading Slides
2022-04-26 Code formatting Slides
2022-04-26 Documentation Slides
2022-05-16 Refactoring Refactoring

Literature

The course is mostly based on the 2nd edition of the Code Complete book by Steve McConnel (also in Czech):

  • 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

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. Another useful source of insight is the 2nd edition of the Effective Java book by Joshua Bloch:

  • Bloch, J. Effective Java. 2nd edition, Addison-Wesley, 2008, ISBN 978-0-321035668-0

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

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.