David Coppit (http://www.cs.wm.edu/~coppit/, coppit@cs.wm.edu). Research: software plans, software development methods, applied formal methods, software verification.
Course homepage: http://www.cs.wm.edu/~coppit/csci420-fall2005/. Contains the definitive versions of assignments and such.
From the catalog: "This course covers the use of formal specification techniques and tools for the rigorous development of trustworthy software."
Society is increasingly reliant on software, and yet our ability to produce trustworthy software is woefully inadequate. At least part of the blame lies with our techniques for educating software developers, which focus on the mechanics of programming rather than the process of engineering software. Indeed, software engineering, unlike other engineering disciplines, is still a part of its associated science—computer science—rather than a separate discipline. As a result, little time remains in most curricula to teach rigorous engineering techniques for the development of trustworthy software.
This course attempts to address this problem at the College of William and Mary. Using state-of-the-art languages and tools, students will practice thinking rigorously about software, developing and validating formal models of the software, implementing those models, then verifying the correctness of those implementations.
This course will emphasize writing and validation of specifications rather than implementation, since this is what students are least familiar with. We will use different tools for different formal methods: PVS for theorem proving of specification, Alloy Analyzer for model checking specifications, and ESC/Java and Java PathFinder for verifying implementations.
Students who complete this course successfully will know how to:
It is assumed that students already have programming experience. This course will not devote much time to coding, debugging, or other basic software knowledge which the student should have acquired earlier in the curriculum.
This course is cross-listed as CSci 520. Graduate students are expected to perform more work than undergraduates, including but not limited to a course project.
CSci 535 students will complete a project where they apply the techniques learned in the course. The project is expected to include a significant formal specification and validation component. Optionally, students may also implement the software that they specify, using program verification tools. Examples of projects include software for an ATM, cruise control, network protocol, or a cell phone contacts database.
Each student is expected to discuss his or her project ideas with the professor prior to writing and submitting a formal proposal. Students will also be required to submit a progress report and a final report. At the end of the semester, students will present their projects to the class.
CSci 243 and CSci 301
There are none. Instead, students will read papers.
Class participation works principally like this: at the start of the semester, a random ordering of students in the class will be created, duplicating some student names as necessary. On any given day, the next person in the list will be asked to summarize and start the discussion of the paper. This person will lose participation points if he or she cannot do a good job introducing the paper.
The student gets 10% on short-answer questions in which the answer given is "No BS". Note: not turning in a test or exam gets you a 0.
20% of the points are lost per day (or portion thereof) that an assignment is late. Example: Due Monday at 5pm, and you turn it in 6pm Tuesday: -40%
Tests can be made up with prior approval of the instructor. Your final exam schedule can only be altered by the Office of Student Affairs.
Please see me after class or send email to set up a brief meeting.
Back to CSci 420/520 Homepage.
Last changed February 03 2006 09:56:57.
David Coppit,
coppit@cs.wm.edu
There have been 1323529 hits since Thu Jun 9 14:49:55 2005