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 | Slides, SRP, OCP, LSP, ISP, DIP |
2022-03-28 | Unit testing and testable design (cancelled) | Slides, Video (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) | Slides, Video (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.