To develop practical expertise in, and understanding of, concurrent programming in Java;
To explore a variety of different concurrency control mechanisms;
To substantially develop the knowledge of C gained during summer preparatory reading;
To develop the students' experience and understanding of programming in a low-level language;
To develop the ability to craft efficient and effective code in a pointer-rich language;
To introduce concurrent programming in C using the PThreads library;
To further develop the ability to select and re-use existing software components and libraries;
To enhance the students' skills in engineering software as interacting sub-systems, using interfaces and libraries to manage medium sized software development projects.