41012 Programming for Mechatronic Systems
Warning: The information on this page is indicative. The subject outline for a
particular session, location and mode of offering is the authoritative source
of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.
Subject handbook information prior to 2025 is available in the Archives.
Credit points: 6 cp
Subject level:
Undergraduate
Result type: Grade and marksRequisite(s): ( 48623 Mechatronics 2 OR (48622 Embedded Mechatronics Systems AND (41039 Programming 1 OR 48430 Fundamentals of C Programming OR 37171 Introduction to Programming OR 48221 Engineering Computations OR 48023 Programming Fundamentals)))
Recommended studies:
knowledge of the C language and digital systems is essential for this subject
Description
The subject presents the theoretical foundations of object-oriented programming and design using C++ and provides students with skills in the design and implementation of a code base for mechatronics systems of moderate complexity. This subject familiarises students with approaches to design and implement code that is modular, re-usable, reliable and maintainable.
Working on an individual project that requires the design and implementation of part of a mechatronic system allows students to apply their knowledge to a real-life problem.
Topics include: objects, classes, abstraction, inheritance, polymorphism, run-time instantiation, threading, thread communication, event handling, use of generic features of C++ such as the STL and utilising APIs, middleware, documentation and testing.
Subject learning objectives (SLOs)
Upon successful completion of this subject students should be able to:
1. | Design classes that are reusable, reliable and maintainable. (C.1) |
---|---|
2. | Apply theoretical knowledge of sensors and control to practical programming problems. (D.1) |
3. | Select appropriate class structures and data handling methods for task at hand. (D.1) |
4. | Implement and test object-oriented applications of moderate complexity. (D.1) |
5. | Communicate programming design decisions, dependencies, interconnections, use cases and testing procedures in a written document. (E.1) |
Course intended learning outcomes (CILOs)
This subject also contributes specifically to the development of the following Course Intended Learning Outcomes (CILOs):
- Design Oriented: FEIT graduates apply problem solving, design and decision-making methodologies to develop components, systems and processes to meet specified requirements. (C.1)
- Technically Proficient: FEIT graduates apply abstraction, mathematics and discipline fundamentals, software, tools and techniques to evaluate, implement and operate systems. (D.1)
- Collaborative and Communicative: FEIT graduates work as an effective member or leader of diverse teams, communicating effectively and operating within cross-disciplinary and cross-cultural contexts in the workplace. (E.1)
Contribution to the development of graduate attributes
Engineers Australia Stage 1 Competencies
This subject contributes to the development of the following Engineers Australia Stage 1 Competencies:
- 1.2. Conceptual understanding of the mathematics, numerical analysis, statistics, and computer and information sciences which underpin the engineering discipline.
- 1.3. In-depth understanding of specialist bodies of knowledge within the engineering discipline.
- 2.2. Fluent application of engineering techniques, tools and resources.
- 2.3. Application of systematic engineering synthesis and design processes.
- 3.2. Effective oral and written communication in professional and lay domains.
- 3.4. Professional use and management of information.
Teaching and learning strategies
The subject uses a model of brief interactive lectures followed by class activities to support student learning. The students are expected to go through online materials and videos before coming to class as instructed in the program so they are prepared for class activities. These activities include collaborative discussions, problem solving and hands on activities. Students will be guided and assisted to reach learning objectives through a series of milestones with deliverables strategically set throughout the session. A code review mechanism enables students to gain a wider appreciation of applying theoretical knowledge on given tasks and the merits of appropriate technical solutions.
During the first part of the session, students build and practice fundamental object-oriented C++ skills. In the second half of the session, using the tool ROS (Robot Operating System) in Linux, students apply these skills to an individual projectthat reinforces the theoretical content and culminates in a formal submission of code and appropriate documentation for evaluation.
Content (topics)
The following topics will be covered:
• The Objected Orientated Paradigm: objects, classes, abstraction, inheritance, polymorphism
• Basics of initialization and memory handling: compile time / run-time initialisation, heap and stack
• Basics of multi-threading, cross thread communication and error handling: synchronizing threads, sharing data across threads, mutexes/semaphores, exclusive locking, asynchronous events
•The use of generic features of C++ such as the STL containers and data structures, selection of appropriate structures for effective programming
• Basics of libraries, using APIs demonstrated on state of the art Open Source Software. Designing, Developing and Documenting an API.
• Basics of the Component Based Software Engineering approach, with the Robotics Operating System (ROS) as an example
• Basics of utilisng code automation and auto documentation generation tools (CMake and Doxygen)
Each of these topics addresses an important aspect in programming modern Mechatronics systems. The intention is that, as you work your way through the subject, your learning will be cumulative. That is, the content you cover in one section should directly help you to understand the topics that follow. For each of the above topics, a separate list of sub-topics and weekly learning schedule is given in the Program.
The students' existing knowledge of sensor and control, combined with activities to understand and appreciate the object oriented paradigm is leveraged to complete a final individual project.
Assessment
Assessment task 1: Programming Assessment 1
Intent: | Students apply programming skills utilising: classes functions, pointers, abstraction, encapsulation, inheritance, and polymorphism |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 2, 4 and 5 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1, D.1 and E.1 |
Type: | Laboratory/practical |
Groupwork: | Individual |
Weight: | 15% |
Assessment task 2: Programming Assessment 2
Intent: | Students apply programming skills utilising: classes, abstraction, data structures, threading, data synchronisation and documentation |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 2, 4 and 5 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1, D.1 and E.1 |
Type: | Laboratory/practical |
Groupwork: | Individual |
Weight: | 25% |
Assessment task 3: Programming Assessment 3
Intent: | Students analyse a set of specifications, design, test, document and practically evaluate code to perform analysis of sensor data and simple actions based on data on a simulated robotic platform. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1, 3, 4 and 5 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1, D.1 and E.1 |
Type: | Project |
Groupwork: | Individual |
Weight: | 35% |
Assessment task 4: Review Exercises
Intent: | Test the student’s knowledge on Object Oriented Programming with C++, in an incremental manner. Provide feedback to students throughout the session. |
---|---|
Objective(s): | This assessment task addresses the following subject learning objectives (SLOs): 1 and 3 This assessment task contributes to the development of the following Course Intended Learning Outcomes (CILOs): C.1 and D.1 |
Type: | Exercises |
Groupwork: | Individual |
Weight: | 25% |
Minimum requirements
In order to pass the subject, a student must achieve an overall mark of 50% or more.
Recommended texts
Elliot B. Koffman & Paul A.T. Wolfgang, Objects, Abstraction, Data Structures and Design Using C++, John Wiley & Sons, Inc
ISBN 0-471-46755-3
References
Roberts, E., Programming abstractions in C++, Pearson, 2014
D. Ryan Stephens; Christopher Diggins; Jonathan Turkanis, Jeff Cogswell, C++ Cookbook, O'Reilly Media, Inc., 2005
Lippman, Stanley B, C++ primer, Addison-Wesley, 2005
Other resources
Canvas provides online access to notes in PDF format, links to online lectures, examples and a Discussion Board. Faculty Linux Computer Laboratories in Building 11 have been set up with Linux Ubuntu which will be used to deliver content.