Course Title: Advanced Programming Techniques
Part A: Course Overview
Course Title: Advanced Programming Techniques
Credit Points: 12.00
Terms
Course Code |
Campus |
Career |
School |
Learning Mode |
Teaching Period(s) |
COSC1076 |
City Campus |
Undergraduate |
140H Computer Science & Information Technology |
Face-to-Face |
Sem 1 2006, Sem 2 2006, Sem 1 2007, Sem 2 2007, Sem 1 2008, Sem 2 2008, Sem 2 2009, Sem 1 2010, Sem 2 2010, Sem 1 2011, Sem 2 2011, Sem 1 2012, Sem 2 2012, Sem 1 2013, Sem 2 2013, Sem 1 2014, Sem 2 2014, Summer2015, Sem 2 2015, Sem 1 2016 |
COSC1076 |
City Campus |
Undergraduate |
140H Computer Science & Information Technology |
Face-to-Face or Internet |
Sem 1 2009 |
COSC1076 |
City Campus |
Undergraduate |
171H School of Science |
Face-to-Face |
Sem 2 2017, Sem 1 2018, Sem 2 2018, Sem 1 2019, Sem 2 2019, Sem 1 2020, Sem 2 2020, Sem 1 2021 |
COSC1076 |
City Campus |
Undergraduate |
175H Computing Technologies |
Face-to-Face |
Sem 1 2022, Sem 1 2023, Sem 1 2024 |
COSC2082 |
RMIT University Vietnam |
Undergraduate |
140H Computer Science & Information Technology |
Face-to-Face |
Viet2 2007, Viet3 2007, Viet2 2008, Viet3 2008, Viet1 2009, Viet2 2009, Viet3 2009, Viet1 2010, Viet2 2010, Viet3 2010, Viet1 2011, Viet2 2011, Viet3 2011, Viet1 2012, Viet2 2012, Viet3 2012, Viet1 2013, Viet2 2013, Viet3 2013 |
COSC2082 |
RMIT University Vietnam |
Undergraduate |
171H School of Science |
Face-to-Face |
Viet1 2018, Viet3 2018, Viet3 2020, Viet3 2021 |
COSC2082 |
RMIT University Vietnam |
Undergraduate |
175H Computing Technologies |
Face-to-Face |
Viet1 2022, Viet3 2022, Viet2 2023, Viet3 2023, Viet2 2024, Viet3 2024 |
COSC2136 |
Open Learning Australia |
Non Award |
171H School of Science |
Distance / Correspondence |
OUASP2UG21, OUASP4UG21 |
COSC2136 |
Open Learning Australia |
Non Award |
175H Computing Technologies |
Distance / Correspondence |
OUASP4UG23 |
COSC2207 |
City Campus |
Postgraduate |
140H Computer Science & Information Technology |
Face-to-Face |
Sem 1 2006, Sem 1 2007, Sem 2 2007, Sem 1 2008, Sem 2 2008, Sem 1 2009, Sem 2 2009, Sem 1 2010, Sem 2 2010, Sem 1 2011, Sem 2 2011, Sem 1 2012, Sem 2 2012, Sem 1 2013, Sem 2 2013, Summer2015, Sem 2 2015 |
COSC2233 |
Taylors College KL |
Undergraduate |
140H Computer Science & Information Technology |
Face-to-Face |
Offsh 3 10, Offsh 1 11 |
COSC2721 |
RMIT Vietnam Hanoi Campus |
Undergraduate |
175H Computing Technologies |
Face-to-Face |
Viet2 2024 |
Flexible Terms
Course Code |
Campus |
Career |
School |
Learning Mode |
Teaching Period(s) |
COSC2696 |
OUA CSP |
Undergraduate |
171H School of Science |
Internet |
OUACSP2021 (All) |
Course Coordinator: Xiaodong Li
Course Coordinator Phone: -
Course Coordinator Email: xiaodong.li@rmit.edu.au
Course Coordinator Location: 14.08.14
Course Coordinator Availability: By email
Pre-requisite Courses and Assumed Knowledge and Capabilities
Enforced Pre-requisite courses
Successful completion of:
- COSC1073 / COSC2081 / COSC2135 / COSC2681 - Programming 1 (Course ID 004065)
OR - COSC2395 - Programming 1 (Course ID 038974)
OR - COSC2801 - Programming Bootcamp 1 (Course ID 054079)
OR - COSC2799 - IT Studio 1 (Course ID 054074)
Note: it is a condition of enrolment at RMIT that you accept responsibility for ensuring that you have completed the prerequisite/s and agree to concurrently enrol in co-requisite courses before enrolling in a course.
For your information go to RMIT Course Requisites webpage.
If you have completed prior studies at RMIT or another institution that developed the skills and knowledge covered in the above course/s you may be eligible to apply for credit transfer.
Alternatively, if you have prior relevant work experience that developed the skills and knowledge covered in the above course/s you may be eligible for recognition of prior learning.
Please follow the link for further information on how to apply for credit for prior study or experience.
Course Description
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 Computer Science and Software Engineering.
Objectives/Learning Outcomes/Capability Development
Program Learning Outcomes
This course contributes to the program learning outcomes for the following program(s):
BH101CS - Bachelor of Science (Dean's Scholar, Computer Science) (Honours)
PLO 1 Enabling Knowledge
PLO 2 Critical Analysis
PLO 3 Problem Solving
PLO 4 Communication
PLO 6 Responsibility
BH119 - Bachelor of Analytics (Honours)
PLO1 Personal and Professional Awareness
PLO2 Knowledge and Technical Competence
PLO3 Problem Solving
PLO7 Ethics
For more information on the program learning outcomes for your program, please see the program guide.
On successful completion of this course you 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.
Overview of Learning Activities
Learning activities may include:
- Pre-recorded lecture videos and preparation materials that outline the core programming concepts and skills, and discuss techniques for both developing and analysing software design and implementation. These concepts, skills, and techniques are implemented in the C++ programming language, with source provided code examples.
- Online webinars that focus on practical analysis and problem-solving exercises in C++ which build your software design and development skills. These webinars allow exploration of concepts, and give feedback opportunities on your progress and understanding.
- Tutorials and Labs focus on practical analysis and problem-solving exercises which build your software design and development skills. These tutorials and labs allow exploration of concepts, and give feedback opportunities on your progress and understanding.
- Assessed actives provides the opportunity to further develop and demonstrate your understanding of the skill and concepts taught in this course. These will be demonstrated in the C++ programming language through (a) practical programming tasks, and (b) written evaluation and analysis of code.
- Self-directed private learning and study is essential. This should include working through the content as presented in classes and other learning materials outside of allocated course-work hours, and gaining practice at solving conceptual and technical problems. It is essential to keep up to date with provided class exercises as well as doing your own broader reading on the topics covered.
Overview of Learning Resources
You may make use of computer laboratories, remote school servers, and relevant provided software. You may also provide your own computing resources and will be supported in the use of specified C++ development resources. However, the marking of assessment tasks will be conducted using School resources, thus you must ensure your code correctly compiles and runs using the School resources.
You will be able to access course information and learning materials through the RMIT Canvas learning management system.
Lists of relevant reference texts, resources in the library and freely accessible Internet sites will be provided.
Overview of Assessment
Note: This course has no hurdle requirements.
The assessment tasks are in two schedules: A and B. You will be advised at the start of the teaching period which of the two schedules apply for any given teaching period and location.
Schedule A
Assessment Task 1: Programming Assignment (individual)
Weighting: 30%
Learning outcomes: CLOs 1, 2, 3, 4, 6
Assessment Task 2: Programming Assignment (a group of 4 max)
Weighting: 45%
Learning outcomes: CLOs 1, 2, 3, 4, 5, 6
Assessment Task 3: Programming Exercise (individual)
Weighting: 25%
Learning outcomes: CLOs 1, 2, 3, 4
Schedule B
Assessment Task 1: Programming assignment (individual)
Weighting: 35%
Learning outcomes: CLOs 1, 2, 3, 4, 6
Assessment Task 2: Programming assignment (a group of 4 max)
Weighting: 40%
Learning outcomes: CLOs 1 ,2, 3, 4, 5, 6
Assessment Task 3: Programming Exercise (individual)
Weighting: 25%
Learning outcomes: CLOs 1, 2, 3, 4
If you have a long-term medical condition and/or disability it may be possible to negotiate to vary aspects of the learning or assessment methods. You can contact the program coordinator or Equitable Learning Services if you would like to find out more.