Registry
Module Specifications
Archived Version 2012 - 2013
| |||||||||||||||||||||||||||||||||||||||||
Description Object-oriented Programming is a software methodology that is vital in the engineering workplace. This module will allow students to gain further experience in advanced aspects of object-oriented programming through implementation of design concepts in both the C++ and Java programming languages. It will examine the languages from the bottom-up and top-down, and will introduce data structures and algorithms that are necessary in the design of engineering systems. | |||||||||||||||||||||||||||||||||||||||||
Learning Outcomes 1. analyse unseen real-world software systems challenges and develop structured solutions, involving the design of object-oriented classes and class hierarchies using formal object-oriented analysis and design models 2. implement such solutions in the C++ and Java programming languages with attention to future design needs and robust operation 3. design solutions that abstract data type through the use of approaches such as STL and generics 4. apply low-level and high-level software algorithms in the design of engineering systems 5. explain the differences between and uses of different object-oriented languages; choose a correct implementation language for the engineering problem 6. discuss methodologies for applying object-oriented concepts to develop solutions for real-world software implementation challenges; choose the correct methodology for a given problem 7. design a software application for test and reliability 8. develop threaded network applications from first principles that use object-oriented concepts to communicate packaged data over TCP/IP; Solve the synchronization issues associated with network computing and design network computing frameworks and solutions | |||||||||||||||||||||||||||||||||||||||||
All module information is indicative and subject to change. For further information,students are advised to refer to the University's Marks and Standards and Programme Specific Regulations at: http://www.dcu.ie/registry/examinations/index.shtml |
|||||||||||||||||||||||||||||||||||||||||
Indicative Content and
Learning Activities Brief re-introduction to object-oriented programmingDiscuss the concept of objects and classes in object-oriented programming languages. Discuss other concepts such as encapsulation, inheritance, polymorphism. It will quickly refresh the differences and similarities between C++ and Java related to the object-oriented paradigm.Advanced programmingCorrect usage of advanced control structures and programming concepts such as exceptions, interfaces, dynamic binding, multiple inheritance, garbage collection (Java and C++). Time will be spent on low-level data structures and algorithms in C++ to ensure that students can make the connection between embedded systems skills and high-level programming skills.Generic ProgrammingDiscussion on C++ STL and Generics in Java. Examine STL containers, iterators, algorithms and functors, and apply them to some software data structure problems (e.g. recursive tree traversal). Operator overloading. Combining Generics and Templates. Algorithms and the design of algorithms when working with C++ data structures will be covered in detail.Software Design MethodologiesDiscuss methodologies for applying object-oriented concepts to develop solutions for real-world software implementation challenges. Examine object-oriented design methodologies in detail – in particular a detailed discussion on Agile Processes (including Extreme Programming (XP)).Design for TestDiscuss software testing models, testing methods and associated tools. Examine practical software testing tools such as log4j, unit testing etc.Java Network ProgrammingDevelop network client applications that communicate to any server. Extend this work by designing servers that use network sockets to serve data to clients. Develop network computing frameworks. Ensure that these frameworks are capable of handling large volumes of requests simultaneously. Deal with the synchronization issues that arise. Students must develop a large-scale client-server application that is designed using discussed software development methodologies, generic programming concepts and correct testing. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
Indicative Reading List
| |||||||||||||||||||||||||||||||||||||||||
Other Resources None | |||||||||||||||||||||||||||||||||||||||||
Programme or List of Programmes | |||||||||||||||||||||||||||||||||||||||||
Archives: |
|