In this module we introduce Graphical User Interfaces (GUIs), and Java's support for building GUI applications. We also introduce the Model-View-Controller (MVC) design pattern and how it is typically used when developing GUI applications.

We conclude this module with an introduction to concurrency in Java using threads and processes. We discuss some of the issues that arise with concurrent programs along with Java's support for concurrenty and synchronization.

  1. Draw the UML sequence diagram for the Model-View-Controller design pattern.
  2. Given a set of Java classes, change the code to use the Model-View-Controller design pattern.
  3. Draw the UML class diagram for the Model-View-Controller design pattern.
  4. List the three Java AWT top level containers.
  5. Explain the difference between a Java Thread and a Java process.
  6. Explain the difference between the two ways of defining a Java Thread.
  7. Use the synchronize keyword to ensure non-interference between threads.
  8. Use the synchronize keyword to implement exclusive access to a resource.