Advanced Programming Techniques
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Advanced Programming Techniques
COSC1076
1 Introduction
1.1 Overview
In this assignment you will implement a 2-player text-based version of the Board Game Qwirkle.
(a) Qwirle box and pieces (b) Example game state
For an explanation of the rules and gameplay:
• Rules: Available on Canvas.
However, this assignment will use a modified version of the rules, detailed in Section 2.5.
In this assignment you will:
• Practice the programming skills covered throughout this course, such as:
– ADTs
– Linked Lists
– Pointers
– Dynamic Memory Management
– File Processing
– Program State Management
– Exception Handling
• Practice the use of testing
• Implement a medium size C++ program:
– Use features of C++14
– Use elements of the C++ STL
• Work as a team
– Use group collaboration tools
This assignment is divided into four Milestones:
• Milestone 1 (Group work): Test Cases, to be developed to ensure your Qwirkle implementation is
correct.
• Milestone 2 (Group work): A fully functioning implementation of the base Qwirkle game play, which
pass Milestone 1 tests. The group work (milestone 1 & 2) is worth 30% of the course mark. The group
component (M1 & M2) is due 11.59pm, Friday 14 May 2021(Week 10).
• Milestone 3 (Individual work): You will individually extend upon your group’s implementation with
additional functionality (called enhancements). The individual work is worth 15% of the course mark.
The individual component (M3) is due 11.59pm, Friday 28 May 2021(Week 12).
• Milestone 4: Written report & demostration. The report analysing the design and implementation of
your software, and the use of your test cases. You will demonstrate your group and individual work. This
is where your final work will be graded. The report is due 11.59pm, Friday 28 May 2021(Week 12).
Group Progress Update (Group work): Your group will provide regular updates on your progress in this
assignment to your tutor during your weekly lab classes. This will require your group to have completed a list
of activities. Group Progress Update will not be marked directly, however, this will influence the final grade.
3
1.2 Group Work
The group work must be completed in groups of 4.
1. You may form groups with any student in the course.
2. We strongly recommend that you form groups from within your labs, because:
• Your tutor will help you form groups,but only within your lab.
• You will have plenty of opportunity to discuss your group’s progress and get help from your tutor
during the rest of the course. It will be extremely helpful for your whole group to be present, but
this can’t happen if you have group members outside the lab.
Groups for Assignment 2 must be registered with your tutor by week 8 lab1
. Your tutor “register” your
group on Canvas. If you are unable to find a group, discuss this with your tutor as soon as possible.
If at any point you have problems working with your group, inform your tutor immediately, so that issues may
be resolved. This is especially important with the online delivery of the course. We will do our best to help
manage group issues, so that everybody receives a fair grade for their contributions. To help with managing
your group work we will be requiring your group to use particular tools. These are detailed in Section 5.
There are important requirements about keeping your tutor informed if you have been unwell or
other wise unable to contribute to your group. Remember your actions affect everybody in your
group.
1.3 Learning Outcomes
This assessment relates to all of the learning outcomes of the course which are:
• 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++14 ISO language features.
• 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.
2 Base Program Game play & Functionality
The base Qwirkle program implements a 2-player text-based version of Qwirkle, using a reduced rule-set. In
the base game, the players take turns placing tiles from their hand onto the board. The rule changes for the
base Qwirkle game are described in Section 2.5.
This section details the behaviour of the base Qwirkle program. What is presented in this spec is a description
of the main functionality of your Qwirkle program. Some parts are left open for you to decide the best course
of action.
This spec does not give the rules of Qwirkle. Canvas contains a link to the rules.
!
Aspects of this specification are flexible and open to your interpretation. In general, where there is
flexibility, it is up to you to determine the best course of action. You may ask questions on the forum
for clarity. Make sure that your tests are written to ensure your program works correctly based on any
decisions you make.