
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 antilock brake system in a car
-
the control system in an airliner
-
the signaling on a high-speed railway or metro system
-
a computer-controlled medical instrument like a radiation machine
-
the automated teller machine from which you draw money
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!