Year
2016
Units
4.5
Contact
1 x 2-hour lecture weekly
1 x 2-hour tutorial weekly
Enrolment not permitted
ENGR4708 has been successfully completed
Assumed knowledge
A sound understanding of computer programming, preferably in the C programming language. Students without or unsure if they have the necessary assumed knowledge should contact the topic coordinator as to the background required, as there will be no additional assistance to compensate for missing background.
Topic description
Scalable Computing will introduce you to many of the issues that arise when scaling computational and data-intensive processes, such as internet search, e-commerce and web pages, financial modelling, bioinformatics, computational genomics, simulation and modelling, to the information-enterprise level. You will learn how to identify and rectify scale-inhibitors in software systems, enabling them to perform with greater environmental efficiency as well as greater ultimate scalability. You will gain hands-on experience with super-computing infrastructure, enabling you to learn about a number of methodologies for scalable processing, including one or more of: job based super-computing, coarse and fine grained parallel programming, cloud computing, distributed computing and general purpose GPUs.
Educational aims
This topic introduces students to a broad range of issues that arise when dealing with the processing of large data, and with large scale processing in general. It introduces students various ways to scale computation beyond a single computer, and many issues that can affect the efficiency of software, and hence ultimate limit of scalability. Students will gain a perspective of large-scale computing as employed by market leaders in the scalable computing space such as Google, that will equip them for productive employment either producing such software, or managing and supporting those who do.
Expected learning outcomes
At the completion of the topic, students are expected to be able to:

  1. Reason about and identify appropriate methods for scalable computational tasks, whether data intensive, processing intensive, or both
  2. Undertake simple scalable computational tasks, including marshalling and controlling use of appropriate computational resources
  3. Reason about and identify the macro and micro factors that limit the scalability and efficiency of a given piece of software, including through the use of appropriate tools
  4. Propose and justify architectural and/or specific improvements that can be made to a given piece of software to improve its scalability and efficiency
  5. Implement, or manage the implementation of improvements to a given piece of software to improve its scalability and efficiency
  6. Reason about and assess the impact and effectiveness of changes to a given piece of software, with respect to their effect on the scalability and efficiency of the software, including through the use of appropriate tools
  7. Awareness of, and experience with one or more scalable-computing methodologies for super-computing environments