CSC 509 Course Syllabus

CSC 509: Software Engineering II
Focus on Software Testing



Instructor

Gene Fisher (gfisher@calpoly.edu)
Office: 14-210
Office Hours: MW 4-5PM, Tu 9-11AM, F 11AM-12PM, additional times by appointment

Structure of the Class

As the course subtitle indicates, the focus of this year's CSC 509 is on software testing. There is a very rich research literature in software testing, with many areas of very active research and development.

The course is primarily project-oriented. What "primarily" means is that the expected major deliverable is some form of implemented project that involves software testing. Accompanying the project will be a written report that describes the project development and results.

Depending on your state of thesis work, the best possible deliverable for 509 will be suitable for you to use directly in your thesis. Specifically, you can implement a suitable testing suite for your thesis work and write what can be the testing chapter of your thesis.

For those students who are not yet into their thesis work, the 509 project can be an independent piece of work, in an area of interest to you. The idea of "area of interest" is important. The work that you do in 509 should be in an area of personal interest to you. Since testing can be applied to any kind of software, the specific project focus for 509 is largely up to you.

In some cases, based on class member interests, the main course deliverable may focus primarily or entirely on a written report. A good example of such a report would be an in-depth comparison of testing practice in a particular area of interest.

During the first two weeks of the class, we will determine class member interests and choose an appropriately focused project area. You don't need to worry if you have no any particularly strong ideas about a project area at first. During the second week of class, we will discuss a number of specific project areas that are of interest to your instructor, and you may choose to work on a project in one of those areas. I do however strongly encourage you to find some area where you have a definite personal interest.

Course Objectives

Course Materials

The recommended "textbook" for the course is student membership in the ACM digital library. Access to ACM's digital library is available from campus computers, but it's a nice bit of Computer Science citizenship to become a member of the ACM, and support its efforts. Student membership is very cheap.

Other course material is available on the class website, at


users.csc.calpoly.edu/~gfisher/clases/509

This online material is organized in the following major directories:

Types of Class Projects or Studies

As noted above, it would be terrific if your 509 work results in something directly useful for your thesis. I.e., you develop a testing framework for your thesis, possibly implement the framework, and possibly write a testing chapter for your thesis.

Whether or not your thesis is underway, it's entirely fine to work on a testing-related project in some area other than your thesis. In particular, you can work on testing for some other project you are working on, have worked on, or plan to work on in the future.

An interesting non-thesis form of 509 project involves applying testing techniques in an area where testing may be under-performed in common practice. The main criterion to measure a successful such testing project is that for a given body of code, the new form of testing runs faster than previous forms, finds more bugs, or both.

The specific steps for such a project go like this:

Testing projects such as this can have substantial impact, depending on how significant the discovered bugs are. What's also nice is that they are often techincally straightforward to perfrom.

Project Teams

Depending on student interest or focus, working in a project team may be reasonable. Most likely teams will be of of two or three people. We will discuss details in the first two weeks of class, as student interests become clear.

Assignments

Assignment Topic Due
0 Share your background with the class Monday Week 2
1 A Paper of Interest Mon or Wed Week 3
2 Summary of Project Work Wed Week 4
3 Research Presentation Mon or Wed Weeks 7 through 10
4 Summary of Project Results Mon finals week
5 Final Project Deliverable Thu finals week

Readings

Particularly Relevant Conferences and Journals

More Generally Relevant Conferences and Journals

More Towards Hardware Testing

Course Schedule

Week Activities
1 Intro to Course; Testing Terminology and Methodology
2 Further Project Discussions, with Details
3 First Paper Discussions
4 Presentations of Research Topic Ideas; Further Project Details
5 Project-Related Discussions and Details
6 Industrial Testing Practices
7 Research Presentations
8 Research Presentations
9 Research Presentations
10 Research Presentations
Finals Project Demonstrations/Interviews

The university scheduled final exam period is Monday 1-4PM. That period will be used for 10-minute summary presentations of each project.