Prerequisites: introduction to computer science (any implementation of CS103 or CS112), CS210S
Syllabus:
Units covered:
| PF3 | Fundamental data structures | 6 | core hours (of 14) |
| PF5 | Event-driven programming | 4 | core hours |
| NC4 | The web as an example of client-server computing | 2 | core hours (of 3) |
| HC1 | Foundations of human-computer interaction | 3 | core hours (of 6) |
| HC3 | Human-centered software evaluation | 2 | hours |
| HC4 | Human-centered software development | 2 | hours |
| HC5 | Graphical user-interface design | 2 | hours |
| HC6 | Graphical user-interface programming | 2 | hours |
| PL6 | Object-oriented programming | 4 | core hours (of 10) |
| SE1 | Software design | 2 | core hours (of 8) |
| SP5 | Risks and liabilities of computer-based systems | 1 | core hour (of 2) |
| SE2 | Using APIs | 3 | core hours (of 5) |
| SE4 | Software processes | 1 | core hour (of 2) |
| SE5 | Software requirements and specifications | 2 | core hours (of 4) |
| SE6 | Software validation | 2 | core hours (of 3) |
| SE7 | Software evolution | 1 | core hour (of 3) |
| SE8 | Software project management | 1 | core hour (of 3) |
Notes:
An important stage in the education of a good software developer consists of making the transition from programming-in-the-small to programming-in-the-large. The purpose of this course is to bridge that gap by enabling students to develop large programs in well defined stages. In the process, this course explores the requirements at each stage of the development along with various issues of quality control. In the practical component of the course, students learn to appreciate the range of facilities that a typical object-oriented language offers and to apply sound approaches to software design in the large-system environment.
Moving from programming-in-the-small to programming-in-the-large, however, is not straightforward. Students need to be provided with a range of reasonable illustrations and examples for them to attempt. In the syllabus presented here, those illustrations are drawn from net-centric computing and user-interface design. Other possibilities, however, exist as well. For example, courses designed to introduce programming-in-the-large might be based on e-commerce, groupware, or other kinds of sophisticated application servers. In every case, it is important to emphasize the importance of complexity management by showing how large tasks can be broken down into smaller tasks that can often be addressed through the selection of appropriate algorithms. In this way, students see the relevance of earlier course work, including the study of algorithms and complexity.
With the transition to larger systems, the quality of the user interface becomes increasingly vital, because the interface has a significant bearing on the usability of software. This course therefore includes a study of the basic principles of human-computer interaction (HCI). While human-computer interaction can be seen as a subject in its own right or interpreted as an aspect of software engineering, there is merit in taking the former view, since the basic ideas will be relevant in many contexts. An understanding of these same principles provides essential insight into the design and development of other software systems including web sites, multimedia systems, and so forth.
A useful starting point in the study of HCI consists of having students evaluate interfaces of various kinds, making sure that they are exposed to both good and bad practice. Ultimately, however, the students must demonstrate their understanding of the principles by designing an interface of some sophistication. An important aspect of the practical component of HCI lies in exposing students to state-of-the-art software that supports such development, including special-purpose tools and class libraries to support interface development. The laboratory aspect of this course can also benefit from the use of design languages and associated tools.
Students who complete this course should be able to perform the following tasks:
|
December 15, 2001 |