Upon completion of the course, students will be able to: (i) Understand the entire software engineering project process, which consists of object-oriented analysis, design, programming and testing; (ii) Understand basic object-oriented programming concepts; (iii) Effectively use the main features of the object-oriented programming language Java; (iv) Gain experience in implementing object-oriented programs in Java; (v) Apply an iterative, use case-driven process to the development to faro bust design model; (vi) Use UML to represent the design model; (vii) Apply the OO concepts abstraction, encapsulation, inheritance, hierarchy, modularity, and polymorphism to the development of faro bust design model; and (viii) Design and implement a software system using object-oriented software engineering paradigm.