Mobile Cancel Remember Choice Decide Later Remember Choice Decide Later

Software Design and Development

IntermediateSmall seminar—Spring

Donald E. Knuth, one of the world’s most distinguished computer scientists, has said both that “computer programs are fun to write” and that “software is hard.” The goal of this course is to give students a taste of what it is like to design and develop real software. Knuth’s quotes illustrate two themes of this course that are not necessarily at odds: The challenge of writing good software should not offset the pleasure derived from writing it. Some of the main topics that we will cover include the power of abstraction, the separation of design from implementation, version control, the selection of development environments, the creative use of existing software libraries and tools, the benefits of a flexible approach, the role of maintaining good documentation, and how to write software in teams. No place is the adage "there is no substitute for experience” more relevant than in software engineering. With that in mind, this course is intended to be hands-on. Design and development techniques will be taught primarily by designing and developing a semester-long software project. Examples of project categories include (but are not limited to) digital games and mobile applications. Permission of the instructor is required. Students should have at least one semester of programming experience, preferably in Python, Processing, Java or C++.