CIS 771 Official course description

Software Specification (CIS-771)

Purpose:

In the future, everything will be smart. Microchips will be embedded in most man-made devices, from clothing to appliances, from vehicles to buildings. A variety of networks will connect these devices. The world will become one large distributed computer. And software will control it all. Billions of lives and trillions of dollars already depend on the correct operation of software, and the degree of automation is likely to increase. More safety critical processes will be controlled by software, and most commerce is expected to be electronic. As networks increase connectivity, the interaction of distributed embedded computers will provide unprecedented capabilities, but also great complexity.

In this brave new world you will be building software that must operate as expected. If it does not the consequences will be great (to you and society).

How can we possibly construct enormously complex systems built from parts that are themselves built by hundreds of people and have any hope that they will work?

In this course, we will study a collection of techniques that lie at the foundation of an approach to software development that can enable the construction of large highly reliable software. That foundation is specification of the precise meaning of the execution behavior of software.

The old argument for precise specification still holds: Without a precise specification of what we want to build

More importantly, as we will see in this course, precise specification allows for the construction of automated tools that can perform a kind of testing of our specifications to find bugs in requirements, designs, and code. Far from being removed from practice, formal specification holds the key for developing the next generation of tools that will sit alongside debuggers, simulators, and testing tools in the modern developers toolkit.

Schedule:

Lecture: Lectures for the course will be made available online at the beginning of each week. Students are expected to watch the lectures on their own.

Laboratory: A weekly laboratory section will be held on-campus Fridays from 7:50-9:20am in Nichols 127 and Nichols 122. Students will be assigned to sections. Laboratory meetings provide your opportunity for asking questions so make use of it. Laboratory meetings provide us with an opportunity for finding out how your learning is proceeding; quizes will be given each week.

For off-campus students, we will be preparing a "transcript" of the Laboratory meetings and posting them on the web. Off-campus students should submit questions by Thursday at 5pm (central time) to have them addressed in the Friday laboratory section. Off-campus students will receive the weekly quizes via email on Friday morning. The quizes are designed to take 10-20 minutes and they must be returned by 12 noon (central time) on the day they are handed out; late quizes will receive no credit.

Prerequisites:

CIS 301 or familiarity with basic set theory. We expect that you have had a software engineering course and have some experience building some non-trivial programs in an object-oriented language.

Credits:

Instructors:

Marking Scheme:

A third of your grade will be based on your performance on traditional closed-book, closed notes mid-term and final exams. A fifth of your grade will be based on your performance on weekly quizes. Nearly half of your grade will be based on assignments related to each of the three specification frameworks that we will be discussing in the course. For each of the three frameworks (Alloy, UML, ESC/Java), you will have two assignments

Thus, you will have a total of six graded assignments: three smaller ones taking 5-10 hours and worth 5% of your grade each, and three larger ones taking 15-20 hours and worth 10% of your grade each (the time required is a very rough estimate which will obviously vary greatly depending on a student's background and ability).

Off-campus students will need to arrange to have a proctor for both the mid-term exam and the final. You can arrange for this through NTU, K-state DCE, or contact the CIS department office. Proctors are not needed the weekly quizzes.

Grading Policy:

The course web-page gives the due dates for all of the homework. This is to facilitate your planning and time-management. Given this we expect assignments to be turned in on the due date unless prior arrangements have been made; late assignments receive a reduction of 1% of the total possible points for each hour after the due date/time.

This policy holds for all students in the course (on-campus and off-campus). For off-campus students, late quiz solutions will receive a reduction of 1% of the total possible points for each minute after the due date/time.

To accomodate students who may have the occasional conflict with Lab meetings, we will drop the lowest quiz score in calculating your final grade. If you have to miss two quizzes then one will be dropped but the other will be factored in as a zero.

Grading scale:

Course grades are absolute, i.e., there is no curve, and will be calculated based on your overall percentage on assignments as follows:

Computer Access:

While this course does not involve a lot of programming per se, it makes significant use of software tools. Many of these can be accessed by you (for free) and installed on your own machine.

If you prefer, we have everything you need on our CIS department machines so you should can get an account on our machines. See the computing systems page for information on how to get an account and use our machines.

Attendance policy:

Faithful attendance to all laboratory sections is strongly urged but not required. In general, there will be NO make-up quizes or exams! Special consideration will be given in only exceptional circumstances. Exceptional circumstances are generally limited to:

If you believe you qualify for exceptional treatment, you must notify the instructor prior to the date of the quiz or exam to be missed.

Other Administrative Issues

For a more complete discussion of these issues see Course Policies for the College of Engineering at Kansas State University.


Maintained by Matthew Dwyer and John Hatcliff