Teaching software development by example

We have been teaching a course in client-server application development since 1998. We have introduced certain pedagogical strategies to enable our students to more successfully develop their own client/server application by the conclusion of the course. This paper explores these innovations and discusses how student success has improved as a result. This paper covers reusable components for client-server communication and design-by-example techniques used in this course. We also discuss how we model evolutionary application development throughout the course.