Principles of Good Design
Good design is an important aspect of programming and product development in general. In computer science, good design is what differentiates between a program that works and a program that works well. Good design is key aspect for a program to be portable, scalable, and reusable. Good design includes, but is not limited to, a program that has a fast run-time, is modularized for easy debugging, robust, consistent, and not repetitive in code.
-
Lecture (Part 0)
-
Lecture (Part 1)
-
Lecture (Part 2)
-
Notes
-
Supplementary Resources
- Avilay Parekh on What is Good Software Design?
- Wells Riley on Startups, This is How Design Works
- Andrej Bauer on Programming Language Design
- Stack Overflow discussion on What does a good programmer’s code look like?
-
Thought Questions
- In more general terms, what is good design?
- Can you compare two products where one has better design than the other (such as a Samsung phone and an iPhone)?
- Why is good design important? Why is it important in programs as well as physical objects?
- How can design be evaluated? What tests or parameters are helpful for doing so?
- What design choices do you make every day?