Course Synopsis
CS *254 will provide students with a deep understanding of conceptual
and practical aspects of designing, implementing, and debugging
concurrent software apps using patterns and frameworks related to Java
and Android. Key topics
covered in this course include:
- Developing, documenting, and testing apps using
object-oriented frameworks and
functional programming features associated with
Java and Android.
- Reuse of patterns and software architectures
- Developing concurrent software using Java and Android.
Design and implementation based on patterns and frameworks are central
themes to enable the construction of reusable, extensible, efficient,
and maintainable concurrent software. In addition, abstraction based
on patterns, object-oriented, and functional programming techniques
(such as separation of interface from implementation) will be the
central concepts and principles throughout the course. These concepts
and principles will enable you to construct reusable, extensible,
efficient, and maintainable concurrent software.
Patterns will be taught so that you will have good role models for
structuring their own designs, as well as to clearly articulate the
tradeoffs of alternative methods for designing systems. OO techniques
will be taught so that you will learn by example how to build highly
decentralized concurrent software architectures that decouple
inter-dependencies between components. You are expected to be
familiar with Java and basic Android.
Course Contents
The following is a representative sample of the course contents, which
will undoubtedly change as the course progresses.
- Week 1
- CS *254 Overview and Logistics
- Background on Concurrency and Parallelism in Java
- Motivation for Java Concurrency and Parallelism
- Benefits of Concurrency in Java and Android: Performance and Responsiveness
- Week 2
- Benefits of Concurrency in Java and Android: Program Structure and Case Study
- Overview of Java Synchronizers
- Week 3
- Week 4
- Overview of Java Synchronizer Classes
- Overview of Java Atomic Operations and Variables
- Week 5
- Java Semaphores Parts
- Java Atomic Classes and Operations
- Week 6
- Overview of the Java Executor Framework
- Java Executor Interface
- Java ExecutorService Interface
- Week 7
- Java ReentrantLock
- Java Condition Object
- Week 8
- Java Barrier Synchronizers: Overview
- Java CountDownLatch
- Java CyclicBarrier
- Overview of Android Layers and Concurrency
- Week 9
- Overview of Android Frameworks
- Overview of Android Concurrency Frameworks
- Overview of the Android AsyncTask Frameworks
- Week 10
- Types of Frameworks in AsyncTask
- The Android AsyncTask Implementation
- AsyncTask Usage Considerations
- Week 11
- Java Readers-Writer Locks
- Week 12
- Java Built-in Monitor Objects: Overview and Motivating Example
- Java Built-in Monitor Objects: Synchronization
- Java Built-in Monitor Objects: Coordination
- Java Built-in Monitor Objects: Usage Considerations
- Week 13
- Implementing a Fair Semaphore with the Specific Notification Pattern
- Overview of Java Synchronized and Concurrent Collections
- Managing the Java Thread Lifecycle
- The Java FutureTask
- Week 14
- The Java ScheduledExecutorService
- The Java ExecutorCompletionService
Back to CS *254 home page.