Routing/Approval:
(chair’s initials/date)

                    
Department

                    
Division

                    
APC

                    
Senate

PROPOSAL FOR A NEW COURSE

Date of proposal: 4/10/06

Title: Threaded Programming

Department and Course Number: CSCI 211

Crosslisted?   Yes   No X     If yes, crosslisting department and number:

Credit: 1/2   Hours/week: 6 in one module

One-time:     or    Permanent Offering: X

Instructor: Darrah Chavey

How will this course be taught, given present staffing, without creating a course overload?

This course proposal is part of a comprehensive change to the computer science curriculum. The course load under this proposal will not create an overload.

Are there any course fees? If so, specify what the course fees are intended to cover.

None

Prerequisite(s):

Computer Science 131

Catalog description (50-150 words, please):

If applicable, include the following language at the end:  “May be repeated for credit if topic is different.”

Most computer systems, and even simple computer programs, contain several "threads", or computer processes, functioning simultaneously to achieve a common goal. Such threads may involve many remote users accessing a common web site, a program running in one thread while buttons and menus are waiting for possible commands ("events") in other threads, or a graphical animation program with several screen objects moving simultaneously. This course introduces the basic techniques for creating such threaded programs, communicating between such threads, and handling concurrency problems, such as the equivalent of every car at a 4-way stop waiting for everyone else to go first (or none of them waiting for anyone!). Topics are discussed in a general context, but using event-driven interfaces and graphical animation as concrete programming examples.

Additional course content description (aims, purposes, etc.) beyond the catalog description:

Threads are essential to modern programming, but learning to use them effectively is a nontrivial task. This class takes full advantage of Java's threading facilities to provide a thorough, step-by-step approach to threads programming.

Java's threading system is simple relative to threading systems in other languages, or on other operating systems. Recent versions of Java include essentially all of the advanced features available in other languages, and provides a large number of thread-related classes that make the task of writing multi-threaded programs much easier.

Students will learn where to use threads to increase efficiency, how to use them effectively, and how to avoid common mistakes. The class discusses problems like deadlock, race conditions, and starvation in detail.

Topics include:

The lettered/numbered lines below come from CC2001. Underlined items are considered essential to a basic curriculum in computer science. Numbers in () indicate minimum number of hours to cover in a lecture style according to CC2001.
Items with a * indicate we plan to cover them in multiple courses.
Other lines include additional topics we plan to cover or clarification of topics we will cover within a CC2001 topic.

Course goals/objectives/outcomes: 

Course structure. Check all that apply:

 Lecture/Discussion X      Studio     Lab/Workshop X    Other (Specify)

If current library or equipment holdings are inadequate, estimate the cost of additional holdings required.

adequate.

Please attach names of a proposed text and/or core readings.

"Java Threads", 3rd edition, by Scott Oaks & Henry Wong.

Form revised 11/04