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 are available in a shared folder
on university SharePoint. You will need to log in with your CAS credentials to access the files.
<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).
|2021-03-04||Introduction, software development||Slides|
|2020-04-08||Design principles||Slides, SRP, OCP, LSP, ISP, DIP|
|2020-04-15||Unit testing and testable design||Slides|
|2020-04-22||Design principles in design patterns||Slides|
|2020-04-29||Design principles in design patterns (continued)||Slides|
|2020-05-06||Design principles in design patterns (finished), Method design||Slides, Slides (method design)|
|2020-05-13||Method design (continued)||Slides (method design)|
|2020-05-20||Method design (finished), Defensive programming||Slides (method design), Slides (defensive programming)|
|2020-05-27||Basic building blocks – variables and constants||Slides|
|2020-06-03||Structured programming primitives – sequencing, selection, and iteration||Slides|
|Additional topics: code formatting, documentation, refactoring (not covered during the lectures)||Slides (formatting), Slides (documentation), Slides (refactoring)|
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
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.