You are on page 1of 3

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911 Engineering Design in Computing


Overview and Course Outline

Student Resources
Textbook: Horstmann, C. Object-Oriented Design and Patterns. Wiley, 2006. Additional References: Liskov, B. & Guttag, J. Program Development in Java. AddisonWesley, 2001. Gamma, E., Helm, R., Johnson, R. & Vlissides, J. Design Patterns. Addison-Wesley, 1995. Java Documentation Available online and browsable in Eclipse Eclipse IDE (Interactive Development Environment) Download link from course home page, help and tutorials online Violet UML Editor Download link from course home page (not necessary to use)

Wayne Wobcke Room K17-307 wobcke@cse.unsw.edu.au

COMP2911

c UNSW, 2014

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

Course Objectives
Object-Oriented Design Object-Oriented Programming Java Language Problem-Solving Algorithms Changes for this semester Textbook Reduced assignment workload (2 assignments + project) Graphical user interface (GUI) programming

Software Engineering in General


Requirements Specication Not covered in COMP2911 Analysis Some aspects of UML methodology Design Object-Oriented Design and Patterns Implementation Java development using Eclipse Testing Test Driven Development, JUnit Documentation Important, but not focus of COMP2911 Maintenance How much in practice? Large-scale software development requires teamwork, project management, design, code reuse (reuse does not mean stealing . . .)

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

Why Object-Oriented?
Distribute programs over collections of objects Each object includes own data and methods for data manipulation Systems can be distributed over multiple machines (client-server) Enables concurrent programming at a high level of abstraction Separate interface from implementation: abstraction, modularity c.f. Abstract Data Types (not distributed, not concurrent) Code reuse through interfaces and code library APIs Paradigm suitable for GUI programming Method(ologies) applicable to large-scale development projects
COMP2911 c UNSW, 2014 Generated: 14 February 2014

Why GUI Programming?


If GUI design is so easy, why are there so many bad interfaces? Does my interface pass the grandmother test? Broader notion of design, not just algorithm/system design Additional motivation for design patterns Strengthen the programming component of the course More relevant skills required in industry Coming to prominence (again!) with iPhone/Android apps Lots of fun!

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

Why Java?
Write once, run everywhere. Write once, debug everywhere. Object-oriented suitable for large projects Highly portable: EE (Enterprise), SE (Standard), ME (Mobile) Vast, well documented, software libraries Excellent for GUI (graphical user interface) programming Highly efcient implementations (how comparable to C, C++?) Warning: Make sure references are up to date (at least Java 5.0) Warning: Java looks like C, but is different . . .
COMP2911 c UNSW, 2014 Generated: 14 February 2014

Problem-Solving Algorithms
Reinforce ADTs from COMP1927: Abstraction and implementation Reimplement (some) ADTs in object-oriented context Apply to problem solving of puzzles search techniques Assume understanding of algorithm time/space complexity Assess in one assignment and nal exam

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

10

Teamwork
What employers say they want most from our graduates . . . Teamwork is about: Adopting common goals Management, planning and coordination Communication and sharing information Monitoring progress and helping out others Putting the team rst (ahead of individual interests) You have to adjust your mindset! Guidance will be provided

Course Schedule
1 2 3 4 5 6 7 8 9 10 11 12
COMP2911

Introduction Object-Oriented Design Process Class Design and Programming by Contract Interface Types and Polymorphism Patterns and GUI Programming Problem-Solving Algorithms Informed Search Algorithms Inheritance and Abstract Classes Java Object Model, Frameworks Multithreading More Design Patterns Review
c UNSW, 2014 Generated: 14 February 2014

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

COMP2911, Tuesday 4 March, 2014

Engineering Design in Computing

11

Assessment
Tutorial/Lab Participation: 10% Individual Programming Assignments: 2 10% Team-Based Project: 25% (10% individual, 15% team-based) Final Exam: 45% Attendance at tutorials/labs is essential!

Feedback from Previous Students


Workload was about right (mean 4.6/6) Textbook/slides were helpful for understanding (mean 4.3/6) GUI programming should be part of this course (mean 4.9/6) . . . taking this course has convinced me that it is possible, with practice, to produce a design that changes very little through the course of implementation

COMP2911

c UNSW, 2014

Generated: 14 February 2014

COMP2911

c UNSW, 2014

Generated: 14 February 2014

You might also like