Course Title: Software Architecture: Design and Implementation

Part A: Course Overview

Course Title: Software Architecture: Design and Implementation

Credit Points: 12.00

Terms

Course Code

Campus

Career

School

Learning Mode

Teaching Period(s)

COSC1135

Bundoora Campus

Undergraduate

140H Computer Science & Information Technology

Face-to-Face

Sem 1 2006

COSC2391

City Campus

Undergraduate

140H Computer Science & Information Technology

Face-to-Face

Sem 1 2006,
Sem 1 2007,
Sem 2 2007,
Sem 1 2008,
Sem 2 2008,
Sem 1 2009,
Sem 1 2010,
Sem 2 2010,
Sem 1 2011,
Sem 2 2011,
Sem 1 2012,
Sem 2 2012,
Sem 1 2013,
Sem 1 2014,
Sem 2 2014,
Sem 1 2015,
Sem 2 2015,
Sem 1 2016

COSC2391

City Campus

Undergraduate

140H Computer Science & Information Technology

Face-to-Face or Internet

Sem 2 2009

COSC2391

City Campus

Undergraduate

171H School of Science

Face-to-Face

Sem 1 2017,
Sem 1 2018,
Sem 2 2018

COSC2401

City Campus

Postgraduate

140H Computer Science & Information Technology

Face-to-Face

Sem 1 2006,
Sem 1 2007,
Sem 2 2007,
Sem 1 2008,
Sem 2 2008,
Sem 1 2009,
Sem 2 2009,
Sem 1 2010,
Sem 2 2010,
Sem 1 2011,
Sem 2 2011,
Sem 1 2012,
Sem 2 2012,
Sem 1 2013,
Sem 1 2014,
Sem 1 2015,
Sem 2 2015,
Sem 1 2016

COSC2401

City Campus

Postgraduate

171H School of Science

Face-to-Face

Sem 1 2017,
Sem 1 2018,
Sem 2 2018

COSC2440

RMIT University Vietnam

Undergraduate

140H Computer Science & Information Technology

Face-to-Face

Viet2 2008,
Viet3 2008,
Viet1 2009,
Viet2 2009,
Viet3 2009,
Viet1 2010,
Viet3 2010,
Viet2 2012,
Viet1 2013,
Viet3 2013,
Viet3 2015,
Viet2 2016

COSC2440

RMIT University Vietnam

Undergraduate

171H School of Science

Face-to-Face

Viet3 2017,
Viet2 2018

COSC2447

Taylors College KL

Undergraduate

140H Computer Science & Information Technology

Face-to-Face

Offsh 3 10,
Offsh 1 11

Course Coordinator: Dr. Caspar Ryan

Course Coordinator Phone: +61 3 9925 9775

Course Coordinator Email: caspar.ryan@rmit.edu.au


Pre-requisite Courses and Assumed Knowledge and Capabilities

Enforced Prerequisite: Advanced Programming OR Programming 1 or Programming Techniques

Note it is a condition of enrolment at RMIT that you accept responsibility for ensuring that you have completed the prerequisite/s and agree to concurrently enrol in co-requisite courses before enrolling in a course.

For your information the RMIT Course Requisites policy can be found at Course requisites – 7.29.1.6: http://www.rmit.edu.au/browse;ID=twx09y07zi1c


Course Description

This course provides students with an advanced understanding of Object-Oriented software development with an emphasis on architecture and design and how this relates to programming and implementation. This course builds upon existing programming knowledge using Java as the implementation platform and assumes students already have a basic understanding of Java programming and basic OO concepts. Students will explore advanced OO concepts such as inheritance and polymorphism; abstract classes and interfaces; the Java Collection Framework (JCF), and generics/parameterized types. These topics will emphasise structural software quality evidenced through high cohesion and low coupling. This course will also cover Streams/Serialisation/Files and provide an introduction to parallel programming using threads. Students will also explore common OO design patterns such as MVC, Observer and Decorator and their application in User Interface Programming. This course serves as a pre-requisite for more specialized Java courses such as eCommerce, Web Services, Enterprise Architectures, and Mobile Application Development.


Objectives/Learning Outcomes/Capability Development

This course contributes to development of the following capabilities


Enabling Knowledge: knowledge and experience of software architecture design and implementation and how this is supported by modelling tools and integrated development environments; Understand the concept of software quality and how this can be a trade-off (e.g. performance versus reliability, coupling versus cohesion); Understand simple parallelism in multi-threaded systems and the challenges this poses in terms of implementation and testing.

Problem Solving: Ability to apply patterns and architectures to a variety of applications, taking into account domain specific requirements and constraints. Ability to perform iterative development from the design stage through to implementation and testing using commonly available platforms and tools. Ability to develop software that meets specific quality constraints by understanding the impact of architecture, design and implementation techniques on such properties.


At the conclusion of this subject, the student should be able to:

  • CLO1: Explain the purpose of OO design and apply the following OO concepts in Java code: inheritance, polymorphism, abstract classes, interfaces and generics.
  • CLO2: Describe and Document Diagrammatically the OO design of the Java Collection Framework (JCF) and apply this framework in Java code.
  • CLO3: Describe and Document Diagrammatically the OO design of the Java AWT/Swing APIs and apply these APIs to create graphical user interface (GUI) code.
  • CLO4: DemonstrateProficiency using an integrated development environment such as Eclipse for project management, coding and debugging.
  • CLO5: Describe and Document Diagrammatically common OO design patterns such as Model View Controller (MVC), Observer, Decorator and apply in Java code.
  • CLO6: Describe how streams are used for I/O in Java, and apply in code with different types of files (text, binary, random access).
  • CLO7: Design and implement simple multithreaded Java programs solving synchronization issues and addressing testing challenges. 


Overview of Learning Activities

Learning activities include presentation of concepts and demonstrations in the lecture, design issues, programming assignments and group discussions in the practical tutelabs. Regular feedback will be provided during the tutelab sessions. Java Helpdesk sessions provide help with programming tasks.

Attendance:
While a minimum attendance standard is not compulsory, non-attendance may seriously jeopardise the chances of success in this course. Clearly, non-attendance at an assessment will result in failure of that assessment. Where visa conditions apply, attendance is compulsory.
 

Total study hours

A total of 120 hours of study is expected during this course, comprising:   Teacher-directed hours (48 hours): lectures, tutorials and laboratory sessions. Each week there will be 2 hours of lecture plus 2 hours of practical work in a computer laboratory. You are encouraged to participate through asking questions, commenting on the material based on your own experiences and by formulating solutions to provided exercises. The tutorial/laboratory sessions will introduce you to the tools and techniques necessary to undertake the assignment work.   Student-directed hours (72 hours): You are expected to be self-directed, studying independently outside class.


Overview of Learning Resources

Course notes, recommended references and Java software development tools.

You will make extensive use of computer laboratories and relevant software provided by the School. You will be able to access course information and learning materials through Canvas. Lists of relevant reference texts, resources in the library and freely accessible Internet sites will also be provided.


Overview of Assessment

The assessment for this course comprises a practical programming assignment component (assignments part 1 and 2) and a written exam component. The assignment work will be evaluated in terms of functional correctness as well as analysis of your source code and documentation. The exam will take place under standard exam conditions.

Note: This course has no hurdle requirements.

 

Assessment tasks

 

Assessment 1: Assignment part 1

This assessment task supports CLOs 1,2 & 4

In Assignment part 1 you will implement supplied Java interfaces according to a precise specification. Your implementation will be based on console I/O.

Weighting 25%

 

Assessment 2: Assignment part 2

This assessment task supports CLOs 1-6

In Assignment part 2 you will write a graphical user interface (GUI) using AWT/Swing which integrates with the interface based code written in assignment part 1.

Weighting 25%

 

Assessment 3: End-of-semester Examination

This assessment supports CLOs 1-3, 5-7

Weighting 50%