CompSci 108
Spring 2012
The Software Studio

Announcements

Annoucements for this class are in Piazza.

Description

The studio-based instructional model owes its origins to the master-apprentice educational system used in the guilds of the Middle Ages. The architectural schools of Europe and North America adopted this instructional model in the form of the “design studio”: a place where students set up their own workspaces, drafting tables, books, drawing and modeling materials, and spend much of their time working individually on common design tasks. As students spend long hours working on these tasks, they build camaraderie, looking to each other for support and feedback as they work toward a common purpose.

Many view software design as a craft, learned best through practice that is guided by experienced mentors, where the best lessons are learned by making mistakes rather than there being one right way to do it. In this respect it is more like art than science. The arts, as well as architecture and engineering, benefit from using the studio prominently in their curricula. In a studio student work is subject to constant review by both peers and mentors as a means of providing valuable feedback and to solidify the shared sense of community. This course studies software design and implementation using Java in teams. Student teams work on several large, typically over-specified, projects whose design and functionality must be justified and improved through feedback given in a studio setting.

In short, my goal is for you to be able to turn vague and ambitious specifications into a system design that can be built, maintained, and extended, prioritizing the features to be built first, then refining and extending the project through multiple draft releases. This course is intended to be the most fun course at Duke University, though it may also require you to work your ass off! During the semester, if you find either goal is not being achieved, contact the course staff immediately to help us remedy the situation.

Required Background: It is assumed that you have previously programmed extensively in Java (e.g., at the level of CompSci 100 at Duke). If you do not have such experience programming, this probably is not the right course for you. See the course staff if you have questions.

Feedback

The Computer Science department at Duke University aims to excel in education and research. To ensure that our courses fulfill student needs and expectations, you are encouraged to submit constructive comments about this course anonymously or use the suggestion box icon, , at the bottom of each page. These comments will be read by the Director of Undergraduate Studies for Teaching and Learning in addition to the professor teaching the course. Our goal is to adapt the subject and delivery of our courses to meet student needs while maintaining our high standards.