CS313-Elements of Software

Spring 2000

Instructor - James C. Browne

  1. Objective
  2. The objective of this class is to teach the concepts, principles and methods of developing application software. The focus will be on how to compose programs using libraries of components and layers of existing software as much as possible.

    This is to be contrasted to a course in "programming." In particular, we will not be focusing on how to program algorithms for data structures, which is a mainline thrust for computer science majors.

  3. Approach

This will essentially be a laboratory class. We will discuss concepts in lecture and illustrate the concepts with examples. The laboratories will then focus on how to implement, test, etc. the examples.

The sequence of coverage will be as follows:

  1. We will learn about the processes of software development.
  2. We will learn how to create reusable software components.
  3. We will learn how to compose programs from components.
  4. We will understand algorithms and how to match algorithms to problems.
  5. We will learn to test and evaluate programs for their functionality and their performance.
  1. Course Materials

The background materials for the class will include three elements:

  1. A text "Object-Oriented Software Design and Construction with Java" by Dennis Kafura. Regrettably, after this book was selected its publication date was delayed. So the text will not be available until late February, 2000. But the content of the book is available from the web so there is access to the material.
  2. The text will be supplemented by course notes.
  3. The course notes and other material will be on Web pages. We will use the WebCT online course system for this class.
  1. Course Work Requirements

The class work will consist of examinations, laboratory exercises and projects. All work will be submitted in JAVA.

  1. There will be two exams given in class. There will be no final exam. The tests will be open book and open notes.
  2. The laboratory exercises will be a substantial portion of the class. There will be a laboratory exercise associated with every lecture topic.
  3. The projects will be chosen to enable demonstration of composition of programs from libraries of components. There will be an individual project and a group project.

All work must be your own work except where permission for collaboration is explicitly given.

The grade in the class will come 50% from the two exams, 25% from the laboratory exercises and 25% from the projects.

  1. Facilities
  2. You may use your own computer or Computer Sciences Department laboratories. The CS Department laboratory will provide Code Warrior and the JAVA Development Kit Version 1.2.

  3. Policy on Academic Honesty
  4. We follow the University’s standard policies on academic honesty. They will be rigorously enforced. Cheating will result in action commensurate with the policies stated in the University’s Manual on Academic Honesty.

  5. Lecture Schedule

The schedule for lectures with topics and pointers to reference materials will be available on WebCT.