Advanced Programming Techniques
Your upfront cost: $0
- 29 May 2023
- 27 Nov 2023
One of Australia's largest dual-sector institutes, offering both TAFE and higher education, RMIT University proudly delivers work-related education and practical research relevant to current business and community needs. More than 95,000 students study with RMIT, and many of their degrees are available through Open Universities Australia.
Learn more about RMIT.
QS Ranking 2022
Times Higher Education Ranking 2022
Our student advisors are here to guide you with:
- Enrolling and eligibility
- Fee and loan information
- Credit and recognition for prior learning
Upon successful completion of this subject, students should be able to:
- Analyse and Solve computing problems; Design and Develop suitable algorithmic solutions using software concepts and skills both (a) introduced in this course, and (b) taught in pre-requisite courses; Implement and Code the algorithmic solutions in the C++ programming language.
- Discuss and Analyse software design and development strategies; Make and Justify choices in software design and development; Explore underpinning concepts as related to both theoretical and practical applications of software design and development using advanced programming techniques.
- Discuss, Analyse, and Use appropriate strategies to develop error-free software including static code analysis, modern debugging skills and practices, and C++ debugging tools.
- Implement small to medium software programs of varying complexity; Demonstrate and Adhere to good programming style, and modern standards and practices; Appropriately Use typical features of the C++ language include basic language constructs, abstract data types, encapsulation and polymorphism, dynamic memory management, dynamic data structures, file management, and managing large projects containing multiple source files; Adhere to the C++11/C++14/C++17 ISO language definition and features.
- Develop skills for further self-directed learning in the general context of software engineering and computer science, including decision-making about guided design of software; Adapt programming experience and language knowledge to and from other programming language contexts.
- Demonstrate and Adhere to the standards and practice of Professionalism and Ethics, such as described in the ACS Core Body of Knowledge (CBOK) for ICT Professionals.
- Week #1 Module 1: Getting Started with C++
- Introduction, Course Road-map, Keyboard I/O, Arrays, Functions, Types
- Week #2 Module 2: String, Classes, Pointers & References
- Character arrays, Classes, Pointers, References, Arrays Pointers
- Week #3 Module 3: Dynamic Memory Management I
- Dynamic Memory Allocation
- Week #4 Module 4: Managing and Debugging C++ Programs
- Unit Testing, GDB, Valgrind, Multi-file programs, Makefiles
- Week #5 Module 5: Version Control & Program I/O
- Version Control (git), Files, Command line arguments
- Week #6 Module 6: Abstraction & Containers
- ADTs, Structs, C++ STL, auto type
- Week #7 Module 7: Error Free Software
- Asserts, Programming methodologies, C++ language features
- Week #8 Module 8: Dynamic Memory Management II
- Object Ownership, smart pointers, move semantics
- Week #9 Module 9: Data Structures & Recursion
- Linked Lists, Recursion
- Week #10 Module 10: Advanced Polymorphism and Typing
- Enumerated Types, Generics, Templates, Operator Overloading
- Week #11 Module 11: Advanced Topics
- Potential Topics include: Lambda functions, macros, iterations, multi-threading
- Week #12: Revision
You won't be able to enrol into this subject if you've already successfully completed or currently enrolled in the following subject(s) as they are considered anti-requisites due to the similarity of the content.
- RMI-CPT323-Object-Oriented Programming in C++ (No longer available)
- RMI-CPT220-Programming Principles 2A (No longer available)
You must have successfully completed the following subject(s) before starting this subject:
All students will be expected to have solid practical experience in and theoretical grasp of underlying programming concepts such as compiling / running programs, I/O, program structure, control structures, procedural and object-oriented programming, programming design including interpreting program requirements and is expected of all students entering into this course. For students who have had a significant break between prior programming studies and undertaking this option course it is strongly recommended that you undertake thorough revision of the learning materials covered in your prior studies, including getting some practice in with programming, prior to commencing this course. A basic understanding of UNIX operating system use and commands may also be required and tutorials on working in a UNIX operating system will be provided in the course learning materials.
- Software requirements - Access to a program such as putty or macOS terminal to enable connection to remote UNIX Server. Other software such as compilation / runtime / library packages, code editors or an Integrated Development Environments (IDE) may also be required (check learning materials for more information).
This course teaches programming principles, skills and practices for modern software development, continuing the study of software design and development in pre-requisite courses. Concepts in this include dynamic memory management, advanced typing and polymorphism, automated build systems, defensive programming, debugging, testing, and adherence to modern coding standards and practices. This course uses the C++ programming language for the practical implementation and practice of these concepts. This course may serve as a foundation for further studies in Information Technology, Computer Science and Software Engineering.
The assessment for this course comprises practical work involving the development and analysis of computer programs for two assignments. The assessment also includes a final exam. Across all assessment tasks you will be required to demonstrate your analysis, problem solving, and software development concepts and skills. You will demonstrate this using the C++ programming language.
- Memory Management with Pointers (15%)
- Group Project (45%)
- Mid-Semester Test (20%)
- Final Exam (20%)
For textbook details check your university's handbook, website or learning management system (LMS).