Advanced Programming Techniques
Undergraduate
RMI-CPT225 2024Previously RMI-CPT224
Enrolments for this course are closed, but you may have other options to start studying now. Book a consultation to learn more.
- Study method
- 100% online
- Assessments
- 100% online
- Entry requirements
- Part of a degree
- Duration
- 13 weeks
- Start dates
- 27 May 2024
- Loan available
- HECS-HELP and FEE-HELP available
Advanced Programming Techniques
About this subject
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
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).
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 96,000 students study with RMIT, and many of their degrees are available through Open Universities Australia.
Learn more about RMIT University.
Explore RMIT courses.
- QS Ranking 2024:
- 11
- Times Higher Education Ranking 2024:
- 16
Entry requirements
To enrol in this subject, you must be admitted into a degree.
Prior study
You must have successfully completed the following subject(s) before starting this subject:
Equivalent subjects
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 (Not currently available)
RMI-CPT220 (Not currently available)
Others
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.
Additional requirements
- 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).
- Other requirements - Stable internet (NBN) connection capable of streaming (and optionally downloading) podcasts / videos, as well as participating in live web conferencing sessions via Collaborate Ultra or similar. Mobile broadband connections are not recommended especially for live web conferencing sessions. Direct access to reasonably current PC or laptop is also required. It is not recommended to rely on shared facilities such as library PC's or laptops, as limited access to such shared facilities may not be sufficient to complete coursework and it may not be possible to install necessary software packages on such machines.
Study load
- 0.125 EFTSL
- This is in the range of 10 to 12 hours of study each week.
Equivalent full time study load (EFTSL) is one way to calculate your study load. One (1.0) EFTSL is equivalent to a full-time study load for one year.
Find out more information on Commonwealth Loans to understand what this means to your eligibility for financial support.