CS313-Elements of Software

  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.

    The fall 1999 offering of CS313, "Elements of Software," is the first offering of this class. In the future, students will have had CS303, "Elements of Programming," before taking CS313. But, because this is the first offering of CS313, we cannot assume a uniform knowledge of programming in JAVA. The coverage of the first third of the class will therefore be devoted to making sure that everyone has a common background in basic programming in JAVA.

  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. The initial lectures will be about the processes of software development.
  2. We will normalize background in JAVA programming.
  3. We will understand algorithms and how to match algorithms to problems.
  4. We will understand how to compose programs from components.
  5. We will understand how 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 which is "JAVA: An Introduction to Computer Science and Programming," by Walter Savitch. This book is available through the bookstores.
  2. The text will be supplemented by course notes.
  3. The course notes and other material will be on Web pages. In fact, 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.
  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 is attached. Because this is the first offering of this course, and because the time to normalize backgrounds is not yet established, the lecture schedule is subject to change.