Module Specifications.
Current Academic Year 2024 - 2025
All Module information is indicative, and this portal is an interim interface pending the full upgrade of Coursebuilder and subsequent integration to the new DCU Student Information System (DCU Key).
As such, this is a point in time view of data which will be refreshed periodically. Some fields/data may not yet be available pending the completion of the full Coursebuilder upgrade and integration project. We will post status updates as they become available. Thank you for your patience and understanding.
Date posted: September 2024
| |||||||||||||||||||||||||||||||||||||||||||
None Make-up assignments are available during the summer months |
|||||||||||||||||||||||||||||||||||||||||||
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. Advanced embedded Linux based embedded systems are introduced in this module. Each student completes an assignment using a system-on-a-chip (SoC) device, such as the BeagleBone that involves TCP socket communications. | |||||||||||||||||||||||||||||||||||||||||||
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 types through the use of approaches such as STL and generics 4. explain the differences between and uses of different object-oriented languages; choose a correct implementation language for the engineering problem 5. discuss methodologies for applying object-oriented concepts to develop solutions for real-world software implementation challenges; choose the correct methodology for a given problem 6. design a software application for test and reliability 7. 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 8. discuss the use of embedded Linux under embedded systems devices and build high-level program code on an embedded Linux device; interface physical sensors/devices to the embedded Linux device, wrapping low-level electronics with high-level program code | |||||||||||||||||||||||||||||||||||||||||||
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)).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.Embedded SystemsDiscussion on the use of embedded systems. In-depth introduction to embedded Linux an an ARM SoC and practical application through the use of a client/server assignment that typically places the server on the embedded Linux SoC and a GUI client on the desktop machine. This architecture is described in the context of Internet of Things applications. | |||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||
Indicative Reading List
| |||||||||||||||||||||||||||||||||||||||||||
Other Resources None | |||||||||||||||||||||||||||||||||||||||||||