The George Washington University
School of Engineering and Applied Science
Department of Electrical Engineering and Computer Science

CSci 190 Real-Time Computer Systems--Prof. M.B. Feldman
General Overview of the Course

Main Textbook: Burns and Wellings, Real-Time Systems and Programming Languages (2nd ed.), Addison Wesley 1997 (ISBN 0-201-40365-X)

Additional Textbook: Hartley, Concurrent Programming: the Java Programming Language, Oxford University Press 1998 (ISBN 0-19-511315-2)

What Is a Real-Time Computer System?

The text, p.2, cites the Oxford Dictionary of Computing:
"Any system in which the time at which output is produced is significant. This is usually because the input corresponds to some movement in the physical world, and the output has to relate to that same movement. The lag from input time to output time must be sufficiently small for acceptable timeliness."
Another definition:
"A real-time system is a system that is required to react to stimuli from the environmen (including the passage of physical time) within time intervals dictated by the environment."
A hard real-time system is one where it is absolutely imperative that responses occur within the specified deadline.

CSci 190

The focus of CSci 190 is on real-time computer systems, and especially those which play important roles in our daily lives, such as: The common characteristic of these systems is that they must behave in a timely fashion, and that they must work. A bug in a word processor is an annoyance; a bug in a car's braking system is a disaster.

The graded work in the course will consist of a few programming assignments, a student-designed term project, and (perhaps) a final examination.

Programming Assignments

The programming assignments will enable you to gain experience in real-time aspects of several recent programming languages, including but not limited to Ada 95 and Java. The text discusses Ada 95 and other languages; you do not have to be experienced with these as a prerequisite for the course. Students at the senior/graduate level in computer science should be up-to-date and multi-lingual. The projects are intended to be fairly easy but require you to learn as much of the languages as you need. I will give away much of the code.

Programs can be run on GW computers, but if you have access to the required languages at home or work, you are welcome to use them there. I will give where-to-find information on the languages.

Term Project

Most of your grade will be based on a project you design and implement yourself. I prefer active (design/program) projects to passive (read/regurgitate) ones--they are usually more fun for both of us.

Choose your own topic, as long as it can be shown to relate to the material in the course. I do not micro-manage the details of your project--you can choose your languages, tools, etc. If you are working and can relate your project to something you are doing at work, that's fine as long as you can "draw a box" around the project and turn it in (including source code) at the end. (Proprietary stuff is not very consistent with the academic tradition.)

By default, projects are individual; if a small team wants to work together, that's fine as long as the team is sure--and can persuade me--that one team project will be better than several individual ones.

Projects will be proposed orally; oral progress reports will be given toward the end of the term; final projects are due at the very end. I am not closed-minded about giving Incomplete grades, but in general I try to avoid them except for unusual circumstances. So should you; Incompletes are a hassle.

Final Exam

I may or may not give a final examination, but if there is one, it will be open book and cover everything in the course. You are responsible for a general understanding of the principles and of the languages in which you write programs. Obviously, writing one program doesn't make one a language expert, and so you will not be held responsible for picayune details or low-level syntax, but you should be prepared to "compare and contrast", perhaps illustrating with brief examples.

Finally

Life is too short for us to spend much time on dull, boring stuff. Let's have fun in this course!