Program and Library Class Source Code

Programs/Classes

Program/Class 2.1: Compute Factorials.
Program/Class 2.2: Sort Numbers.
Program/Class 2.3: N-Queens Problem.
Program/Class 2.4: Two Class Factorial Program.
Program/Class 2.5: Reading Keyboard Input.
Program/Class 2.6: File Input and Output.
Program/Class 2.7: Tokenizing Input Data.
Program/Class 2.8: Neighborhood Banks.
Program/Class 2.9: Commercial Banks.
Program/Class 2.10: A Simple Genetic Algorithm.
    Debug.java
    Defaults.java
    Globals.java
    MyRandom.java
    ShellSort.java
    Chromosome.java
    BitChromosome.java
    DoubleChromosome.java
    BitCountChromosome.java
    ByteCountChromosome.java
    SinesChromosome.java
    XtoTenthChromosome.java
    MyChromosome.java
    Crossover.java
    OnePointCrossover.java
    UniformCrossover.java
    NPointCrossover.java
    SelectionException.java
    FitnessSumZeroException.java
    Selection.java
    ProportionalSelection.java
Program/Class 2.11: ``Hello, world!'' using XtangoAnimator.
Program/Class 2.12: Animated Bubble Sorting.
Program/Class 3.1: A Multiple Thread Simulation.
Program/Class 3.2: Test for Time Slicing of Threads.
Program/Class 3.3: Fibonacci Numbers and Stop Button.
Program/Class 3.4: Sending Each Thread Output to a Different File.
Program/Class 3.5: A Race Condition.
Program/Class 3.6: A Different Kind of Race Condition.
Program/Class 3.7: A Queue Race Condition.
Program/Class 3.8: Busy Waiting Bounded Buffer for Producer and Consumer.
Program/Class 3.9: Producer and Consumer Driver.
Program/Class 3.10: Testing the Attempts.
Program/Class 3.11: First Attempt: Strict Alternation.
Program/Class 3.12: Second Attempt: Check Other's Flag Variable, Then Set Own.
Program/Class 3.13: Third Attempt: Set Own Flag Variable, Then Check Other's.
Program/Class 3.14: Fourth Attempt: Back Off.
Program/Class 3.15: Dekker's Solution: Take Turns Backing Off.
Program/Class 3.16: Peterson's Shorter Solution.
Program/Class 3.17: Lamport's Bakery Algorithm: Two Threads Only.
Program/Class 3.18: Lamport's Bakery Algorithm: Arbitrary Number of Threads.
Program/Class 3.19: Suspend/Resume Bounded Buffer for Producer and Consumer.
Program/Class 4.1: A Semaphore Prevents the Race Condition.
Program/Class 4.2: A Semaphore Prevents Another Race Condition.
Program/Class 4.3: Semaphores Synchronize Three Threads.
Program/Class 4.4: Bounded Buffer for Producer and Consumer.
Program/Class 4.5: Unbounded Buffer for Producers and Consumers.
Program/Class 4.6: Producers and Consumers Driver.
Program/Class 4.7: Pipeline Using Bounded Buffers.
Program/Class 4.8: The Sleeping Barber.
Program/Class 4.9: The Dining Philosophers Server.
Program/Class 4.10: The Dining Philosophers Driver.
Program/Class 4.11: The Dining Philosophers Where Each Fork is a Semaphore.
Program/Class 4.12: The Dining Philosophers Where One is ``Odd''.
Program/Class 4.13: The Database Server for the Readers and Writers.
Program/Class 4.14: The Readers and Writers Driver.
Program/Class 4.15: Animated Dining Philosophers with AWT.
Program/Class 4.16: Jurassic Park Safari Simulation for Exercise 11.
Program/Class 5.1: Bounded Buffer Pseudocode Monitor.
Program/Class 5.2: Starvation-Free Dining Philosophers Pseudocode Monitor.
Program/Class 5.3: Starvation-Free Readers and Writers Pseudocode Monitor.
Program/Class 5.4: Java Monitors Use Signal-and-Continue.
Program/Class 5.5: Bounded Buffer Monitor.
Program/Class 5.6: Starvation-Free Dining Philosophers Monitor.
Program/Class 5.7: Starvation-Free Readers and Writers Monitor.
Program/Class 5.8: Lock Example.
Program/Class 5.9: Bounded Buffer Notification.
Program/Class 5.10: Dining Philosophers Notification.
Program/Class 5.11: Readers and Writers Notification.
Program/Class 6.1: Simple Message Passing Example.
Program/Class 6.2: Bounded Buffer Producer and Consumer Using Message Passing.
Program/Class 6.3: Producers and Consumers Using a ``Bag of Tasks.''
Program/Class 6.4: Distributed Mutual Exclusion.
Program/Class 6.5: Producers with ``Picky'' Consumers.
Program/Class 6.6: Distributed Dining Philosophers.
Program/Class 6.7: Client-Server Rendezvous.
Program/Class 6.8: Multi-Machine Dining Philosophers.
Program/Class 6.9: Measure Rendezvous Time.
Program/Class 6.10: Dining Philosophers Using Conditional Rendezvous.
Program/Class 6.11: Bank Deposits and Withdrawals.
Program/Class 6.12: Remote Method Invocation Example.
Program/Class 6.13: Animated Distributed Dining Philosophers.
Program/Class 6.14: Animated Quicksort.
Program/Class 7.1: Parallel Sieve of Eratosthenes.
Program/Class 7.2: Pipeline Sort.
Program/Class 7.3: Data Parallel N-Queens Program.
Program/Class 7.4: Master/Worker N-Queens Program.
Program/Class 7.5: Master/Worker N-Queens Program on a Cluster of Workstations.
Program/Class 7.6: Matrix Multiplication with a Barrier Semaphore.
Program/Class 7.7: Matrix Multiplication with join().
Program/Class 7.8: Data Parallel Quicksort.
Program/Class 7.9: Iterative Grid Computation Using a Barrier.
Program/Class 7.10: Parallel Radix Sort.
Program/Class 7.11: Iterative Grid Computation Without a Barrier.
Program/Class 7.12: Heartbeat or Systolic Matrix Multiplication.
Program/Class 7.13: Compare/Exchange Sort Skeleton for Exercise 4.

Library Classes

Library Class 2.1: Class GetOpt Helps Parse Command Line Options.
Library Class 3.1: Utility methods in Class MyObject.
Library Class 3.2: A Class for Pseudo Time Slicing of Threads.
Library Class 5.1: Base Semaphore Class.
Library Class 5.2: Binary Semaphore Monitor.
Library Class 5.3: Counting Semaphore Monitor.
Library Class 5.4: Named Condition Variable.
Library Class 5.5: XtangoAnimator Class.
Library Class 6.1: Synchronous Message Passing Channel.
Library Class 6.2: Asynchronous Message Passing Channel.
Library Class 6.3: Message Passing Interface.
Library Class 6.4: Message Passing Base Class.
Library Class 6.5: Controlled Capacity Asynchronous Message Passing Channel.
Library Class 6.6: Message Passing Through a Pipe or Socket.
Library Class 6.7: Message Passing of Serialized Objects.
Library Class 6.8: Message Passing Exception.
Library Class 6.9: Not Implemented Method Exception.
Library Class 6.10: Send-Only Message Passing Filter.
Library Class 6.11: Receive-Only Message Passing Filter.
Library Class 6.12: Conditional Message Passing Interface.
Library Class 6.13: Condition Interface.
Library Class 6.14: Asynchronous Conditional Message Passing Channel.
Library Class 6.15: Synchronous Conditional Message Passing Channel.
Library Class 6.16: Rendezvous Interface.
Library Class 6.17: Establish a Rendezvous.
Library Class 6.18: Extended Rendezvous.
Library Class 6.19: Rendezvous Condition.
Library Class 6.20: Conditional Rendezvous.
Library Class 7.1: Barrier Implementation.

SJH
shartley@mcs.drexel.edu