Student Originated Software 1997-1998
Fall Quarter

A Software Engineering Course at
The Evergreen State College

Student Originated Software

Program Description

Fall, Winter, Spring 1995 - 96

Even the best efforts of computer users and software engineers have not alleviated critical software development problems: most software is late and over-budget, does not meet user needs or expectations, or is socially irresponsible. The "software engineering" problem is not just a matter of technology, but a problem of creativity and invention, organization, psychology, artistic design, group dynamics and culture. In addition considerable knowledge and understanding of the application area is required to design, implement, market, sell, deploy, support or maintain a successful system. Evergreen's Student Originated Software program is designed to address these issues and to prepare students to face these problems. The full time, year-long program provides not only in-depth practical experience in software engineering but also a deeper understanding of the issues behind the inherent difficulty of writing responsible, effective software.

The program teaches skills and gives experience in software engineering and advanced computer science and examines the role of computer science in the larger world of technology and computing. The major components of the program are a year-long project, a program seminar, and technical components consisting of human-computer interface design; object-oriented analysis, design and programming; and software engineering.

Software Engineering

The Student Originated Software program taught software engineering through the students' application and integration of the following skills to a software project: project management, feasibility analysis, requirements definition (functional specifications), preliminary and detailed design, programming, information architecture, database management, and software testing and integration. The main objective of this part of the program was to provide a place for students' exposure to commonly accepted methodologies for software engineering. In the fall quarter, we used a case study to teach software engineering. Students worked in teams of two to carry an application through from inception to release to users. The implementation was carried out in either Smalltalk or Hypertalk, depending on which language students studied.

In the winter quarter, attention turned to the system design and implementation aspects of software engineering, and in the spring quarter to implementation, documentation, evaluation and testing. Guest speakers contributed to students' understanding of software development: and students had opportunities to participate in two Field Trips: (1) In winter, the class went to Portland for two days to visit Sequent Computer Company, Intel Computers, Electronic Book Technologies and the Oregon Graduate Institute where students learned about alternatives for graduate study in computer science. (2) In spring, students could also attend the Human Interface Lab Open House in Seattle. Throughout the year, numerous speakers came to campus and contributed to students' understanding of the software development process.

Year-long Software Development Project

The primary vehicle for learning how to write software is a year-long group software project for an identified real-world need. In the fall quarter, students organized themselves into teams according to their interests and skills and each team identified a viable project and "customer" and performed a preliminary systems analysis and feasibility study. Students demonstrated their work through informal presentations during the quarter and a final formal presentation of the project proposal, and a project notebook.

In winter and spring quarters, project work continued with system design, detailed design, system and component test planning, and implementation. Students were also asked to prepare user's guides, maintenance and installation plans; and to evaluate the final system. Considerable effort was directed towards group team dynamics and towards making the projects viable software products. Students were asked to evaluate their team's group dynamics and to consider what marketing their product to an identified customer base would entail. As before, each project team met on a weekly basis with faculty. Students demonstrated their work through a project notebook containing deliverables, meeting notes and other documentation, public presentations and a public software demonstration.

Program Seminars

Each quarter, a program seminar complemented technical work. In the fall the seminar theme was The Software Industry and Human-Computer Interaction. Students met for a weekly seminar on software development and human computer interaction, which read and discussed a special issue of Scientific American, "The Computer in the 21st Century"; Norman's Things That Make Us Smart; Brooks' Mythical Man Month; most of Baecker et al's Readings in Human-Computer Interaction: Toward the Year 2000; Moody's I Sing the Body Electronic; Lammers Programmers at Work; Fisher's Getting To Yes; and selected articles on pattern languages in programming and models for the software development process. They wrote several short papers and exercises about the material.

Perspectives on the Internet

In the winter, the program participated in a college-wide colloquium focusing on current Internet issues. An endowed weekly lecture series on historical transformations in media; current legal, social and economic questions involving the Internet; and its present and possible uses by artists, the military and community organizations involved a variety of speakers, including academics from the University of Washington's Human Interface Technology Lab, MIT's Media Lab, and a number of other institutions as well as national figures like Mike Godwin of the EFF and novelist William Gibson. Students met for a weekly seminar about information and power, and wrote seven papers on the readings for it: Eco's The Name of the Rose, Kelly's Out of Control, Harvey's The Condition of Postmodernity, Gray's The Cyborg Handbook, Brook and Boal's Resisting the Virtual Life, and Huber's Orwell's Revenge.

Colloquium speakers were:

Thad Curtz, The Evergreen State College
    "The Simmering of the Electrical Imagination"
      Early Radio and the Internet
Seymour House, Mount Angel Seminary
    "Printed books ... And other fantasies"
      Some Aspects of Literacy in Early Modern Europe
Mike Godwin, Electronic Frontier Foundation
    Civil Liberties on the Internet
Doug Schuler, Seattle Community Network
    Public Space in Cyberspace
      The Rise of the New Community Networks
Thomas Furness, University of Washington Human Interface Technology Laboratory
    Conquering Virtual Space at the HIT Lab
Milind Khare, Intel Corporation
    PC Data Security and Commerce on the Internet
Chris Hables Gray, editor of The Cyborg Handbook,
    The Military and the Networks
Digital artist Diane Fenster on her work Warren Sack, MIT Media Laboratory
    Software Agents or Digital Prostheses
      Tired or Wired?
Also a conversation with novelists William Gibson and Tom Maddox.

Software: Art and Industry

In the spring students participated in a seminar, Software: Art and Industry. We met for a weekly discussion of the assignments, which included selections from Yourdon's The Death of the American Programmer and more recent articles on the Indian and Israeli software industries; considerable portions of Terkel's Working; selections from Braverman's Labor and Monopoly Capital and Kraft's Programmers and Managers or Cusumano's Japan's Software Factories; Phillips' Boiling Point; Hyde's The Gift, Laurel's Computers as Theatre; Minerva's Machine: Women and Computing (an ACM video) and recent articles from a number of sources about women in computing and the computerization of clerical work; and Bok's Lying. Students wrote two papers reflecting on the reading and their own views about working and about the professional responsibilities of software engineers.

Technical Components

Each quarter, the program offered technical components that provided essential (in the fall) and recommended (in winter and spring) computer science course work. Some students organized independent study that was directly relevant to their project.

Object-Oriented Programming and System Design in Smalltalk (fall)

In this part of the program, students were introduced to concepts of object-oriented programming, primarily through the study and practice of the Smalltalk language. A major goal was to give students an opportunity to answer the claims whether object-oriented programming (OOP) will change the nature of programming and system construction. To that end, we covered the fundamental concepts of OOP (e.g., objects, messages, methods, and classes), and explored data abstraction, encapsulation, typing, inheritance, and polymorphism. Students also were introduced to the idea of graphical user interface generator with ParcPlace's VisualWorks, and used that tool to complete the programming project. Students did weekly small programming assignments: including the ParcPlace Smalltalk tutorial, and demonstrated their understanding of the language through a final exam. Texts: Lalonde's Discovering Smalltalk supplemented with the ParcPlaceVisualWorks Tutorial and User's Guide.

Introduction to Hypertalk Scripting (fall)

This laboratory course was offered for students who had little computer science background, as an alternative to the advanced programming component. Hypertalk met for five hours a week, covering the essentials of Hypertalk scripting in the first weeks of the quarter, during which students completed brief weekly assignments including annotated surveys of Hypercard resources on the network and a checkbook project. Using the faculty and Goodman's The Complete Hypercard 2.2 Handbook as resources, students then worked for the remainder of the quarter with a partner to implement an individual project in Hypertalk as well as the project they had been designing in our software engineering case study thread (a system to match applicants with job openings for an imaginary placement bureau).

Introduction to Database Systems (winter)

Database management has evolved from a specialized computer application to a central component of a modern computing environment. Introduction to Database Systems was intended to give students an understanding of fundamental concepts of database management, including aspects of database design, languages and system implementation. Topics covered were: conceptual, logical and physical design (including entity relationship modeling); the relational data model; the relational algebra and calculus, and SQL; integrity constraints; normalization; storage, file, and search structures; indexing; query processing and query optimization. Some students also studied logging and recovery, transaction management; and concurrency control. Because familiarity with basic data structures, computer organization, operating systems, and programming languages was assumed, the material was presented at an advanced undergraduate level. Students demonstrated their understanding of the material by participation in class discussions, seven homework assignments (five of which were required), one take home examination, and a database project in Microsoft Access.. The text was Database System Concepts by Korth & Silberschatz.

During the last three weeks of the quarter, some students continued database project work, while others integrated their study of traditional topics through four research seminars that covered object-oriented and spatial databases and distributed systems. We read the following papers: D. Maier and J. Stein, Development and Implementation of an Object-Oriented DBMS , P. Korp et al A Smalltalk-based Extension to Traditional Geographic Information Systems, and articles from the April 1995 issue of Byte on Client-Server Distributed Systems.

Advanced Topics in Object-Oriented System Design: Design Patterns (spring)

This advanced topics course assumed previous understanding of object-oriented programming and design, and provided students and faculty an opportunity to explore applying recurring solutions (patterns) to problems of software design. We worked through Erich Gamma's Design Patterns. (a case study and 23 patterns) in detail. Students demonstrated their understanding of the material by presenting patterns and completing a design that used patterns.

Credit Distribution:

48 total from the following:

    *16: Year-long Software Development Project

      (2 in Fall, 6 in Winter, 8 in Spring)

    * 4: Software Engineering: Requirements Specification and Systems Analysis

      (Fall Case Study)

    * 2: Software Engineering: System Design, Detailed Design and System Test

      (winter)

    * 2: Human Computer Interaction

      (fall)

    * 4: Fall Seminar: The Computing Culture Software Industry

    * 4: Winter Seminar: Perspectives on the Internet

    * 4: Spring Seminar: Software: Art and Industry

    * 4: Object-Oriented Programming and System Design

      (Smalltalk)

    4: Introduction to Hypertalk Scripting

      (fall)

    * 4: Introduction to Database Systems

      (Access)

    * 4: Introduction to Java Programming

      (winter)

    * 4: Seminar on Object-Oriented System Design: Design Patterns

* marks Upper Division Science Credit


For more information contact
[ Evergreen Home Page | Academic Programs ]


Created by: SoSwEbGrOuP
E-mail: ringert@evergreen.edu