Program Description
Fall 1997 - 98
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 was designed to address these issues and to
prepare students to face these problems. The full time, year-long program
providesd 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 taught skills and gives experience in software engineering and
advanced computer science and examined the role of computer science in the
larger world of technology and computing. The major components of the program
were 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
expose students' to commonly accepted methodologies of software engineering.
In the fall quarter, we used a case study to teach software engineering.
Students worked in teams (usually of two) to carry an application through from
inception to release to users. The system was implemented in Smalltalk, thus
complementing work in objected-oriented programming. The text for this part of
the program was Rodney WilsonUs Software Rx.
Year-long Software Development Project. The primary vehicle for learning how
to write software was 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.
Program Seminars. 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 the first of the three PBS videos Triumph
of the Nerds , NormanUs Things That Make Us Smart; BrooksU Mythical Man Month; ;
WinogradUs Bringing Design to Software; CouplandUs Microserfs; KobergUs
Universal Traveler; and selected parts of Christopher AlexanderUs A Pattern
Language. Students wrote a short weekly paper on readings, relating each to
aspects of the software development process.
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
analysis, design and 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 application programming interface (API)
frameworks with ParcPlace's VisualWorks, and used that tool to complete the
case study programming project. Students did small weekly programming
assignments: including the ParcPlace Smalltalk tutorial, and demonstrated their
understanding of the language through two exams and three major programming
assignments. Texts: Trevor Hopkins Smalltalk supplemented with the
ParcPlaceVisualWorks Tutorial.
Credit Distribution: 16 total:
* 2: Year-long Software Development Project
* 6 Software Engineering: Requirements Specification and Systems
Analysis
(Fall Case Study)
* 4: Fall Seminar: The Computing Culture Software Industry
* 4: Object-Oriented Programming and System Design (Smalltalk)
* marks Upper Division Science Credit
|