Assignment 4: Restructure your Go program

Restructure your Go program

Assignment 4

Overview

In this assignment, you will restructure your Go program and add a simple Artificial Intelligence (AI) to make choices for the white (computer) player. The AI will use a technique named one-step lookahead, in which it considers each possible action, assigns a score to each, and then chooses the action with highest score. In our case, the actions are the places where the white player can place a stone for that move. The score used in the one-step lookahead will be the score for the game if it were to end immediately afterwards. After the AI has scored the possible moves, it will sort the moves by score and choose the highest one. If several moves are tied for the highest score, the AI will choose one at random.

You will also add the suicide rule to your game. This rule forbids players from placing a stone where it would be immediately removed again.

The purpose of this assignment is to give you more practice with classes, including composition and implementation inheritance. For Part A, you will refactor your program to move much of the functionality from main.cpp into a new Game module. For Part B, you will update your game to use the Game class. For Part C, you will create a Move module to represent a single possible move. For Part D, you will modify your Search module to search and sort moves. For Part E, you will develop an ArtificialIntelligence module. For Part F, you will update your Game module to use it. For Part G, you will document your ArtificialIntelligence module.

Requirements

Copy the code and data files of your Assignment 3. Do not just modify Assignment 3.

(If you are using Visual Studio, you must start by creating a new project for Assignment 4. Do NOT copy the whole folder including the .sln file or massive confusion will result!)

Part A: The Game Class [Marked with Part B]

Create a Game class to handle some of the functionality from main.cpp. It should be an encapsulated class, i.e., all its member variables should be private. Wherever possible, you should copy code from the existing main function into the functions of the Game class. Input handling will stay in main.cpp. The Game class will not store a list of the player’s moves.

By the end of Part A, your Game type class have the following public member functions:

  • Game ();
  • Game (const std::string& filename_in);
  • void printBoard () const;
  • void printWinner () const;
  • const Board& getBoard () const;
  • void blackPass ();
  • bool blackPlay (int row_in, int column_in);
  • bool whiteAi ();

The Game class will also have a private member function:

  • void printRemoved (const StonesRemoved& removed_in) const;

Perform the following steps:

  • Add a header file for your Game module. Add whatever #pragma, #include, and using

lines you need. You should have an #include for your Board module.

  • Declare the Game class, which has a Board as its only member variable. Add the function prototypes listed above.
    • Note: This class is using composition.
    • Reminder: In an encapsulated class, all member variables should be private.
  • Add a default constructor to the Game class. The function body will be empty.
  • Add the second constructor to the Game class, which takes a file name as a parameter. It has a precondition that the filename is not the empty string. After checking the precondition, the function should load the board from that file.
  • Add an implementation for the printBoard function. It should print the board.
    • Hint: In the implementation, you should call one function in the Board class.
  • Add an implementation for the printWinner function. It should calculate the player scores and print who won.
    • Hint: Copy and adapt your code from main.cpp.
    • Note: This function does not need to print the game board.
    • Reminder: The Game class does not store a list of the player’s moves. You do not have to print the analysis of them.
  • Add an implementation for the getBoard function. It will return a constant reference to the game board.
    • Note: You will use this function in Part E.
  • Add an implementation for the whiteAi function. For now, it will just print a message saying that white passed.  Then it should return whether or not white played a stone.
    • Note: You will expand the whiteAi function in part E.
  • Add an implementation for the blackPass function. It should print a message saying that black passed.
  • Add an implementation for the blackPlay function. If row_in and column_in specify a place outside the game board, print that that play is forbidden. Otherwise, if that place is not empty, print that it is forbidden. Otherwise, play the stone there, print a message saying the

stone was placed, and call the printRemoved function to print which stones were removed. If the player successfully placed a stone, the function should return true. Otherwise, it should return false.

  • Hint: You already have this functionality in main.cpp. You can copy the code in and adapt it.
  • Add an implementation for the printRemoved function. If stones were captured or lost to suicide, it should print how many.
    • Hint: You already have this functionality in main.cpp as well. It may already be a function there.
  • Improve your blackPlay function to implement the suicide rule. Do not simply place the stone on the board. Instead, create a copy of the board and place the stone on the copy. Then check if any stones are lost to suicide. If so, print “Forbidden: Suicide rule”. Otherwise, set your game board to the copy and print messages as before.
    • Hint: You can create a copy of a Board using the assignment operator:

Board copied = my_board;

Similarly, you can use the assignment operator to set one Board to another:

my_board = copied;

C++ will just copy the values of the member variables.

  • Reminder: This function should return false if the player did not place a stone. In particular, it should return false if the player did not place a stone due to the suicide rule.

Part B: Use the Game class [45% = 15% stability + 30% output, includes Part A and 5% for Part F]

In Part B, you will change your main function to use the refactored Game class. Perform the following steps:

  1. In main.cpp, update the program to use the Game class. Replace the Board variable with a Game variable. Remove the variables for storing player moves. Then update the main function to use the Game member functions from Part A.
    1. Hint: If you have any other functions in main.cpp, they are probably no longer needed.
    • Hint: You can copy a Game with the assignment operator, just like you can copy

Boards. To load a game, set your existing Game to a new one created from the file:

my_game = Game(filename);

  • When the user enters a “load” command, first print out the scores and winner for the current game. Then ask the player for the file name and load the game.
    • Hint: Use the same function as when printing the scores and winner at the game end.
  • When the black (human) player passes, check whether white also passed. If so, end the main loop just as if the player entered the “quit” command.
  • Reminder: The whiteAi function returns true if white played a stone and false

otherwise.

  • Add “new” as a new command to your game. When the user enters this command, print out the scores and winner and then replace the current Game with one created by the default constructor.
  • Test your program with the same tests as for Assignment 3. They should still work (example output).
    • Hint: g++ PlaceString.cpp BoardSize.cpp BoardValue.cpp Board.cpp Game.cpp main.cpp -o game
    • Note: Right now, you do not need to compile Search.cpp. However, you will need it again when compiling the game in Part F.

Part C: The Move Module [10% test program]

In Part C, you will create the types you will need to represent possible moves and choose between them. You will also add two overloaded operators. The Move type will represent a move. The SortableMove type will inherit from the Move type and also store the net score. The net score is the score for this player minus the score for the other player.

By the end of Part C, your Move module will have overloaded operators with the following prototypes:

  • bool operator== (const SortableMove& lhs_in,

const SortableMove& rhs_in);

  • bool operator< (const SortableMove& lhs_in,

const SortableMove& rhs_in);

Reminder: All overloaded operators are functions. They are declared like functions and can be used as functions in all cases. They are different because they can also be called using operator syntax (e.g. move1 < move2).

Perform the following steps:

  1. Create an appropriate header file for the for the Move module.
  2. Declare a record (struct) named Move to represent a move in the game. It should have a bool member field named is_played for whether the player placed a stone and int member fields named row and column for where the stone was placed.
  3. Declare another record (struct) named SortableMove that inherits from Move using public inheritance. A SortableMove should have all the fields of a Move and an additional float member named net_score.
    1. Hint: Since SortableMove mentions Move, it must be declared after Move.
    • Hint: Inheritance for records (structs) works exactly the same as inheritance for classes. Move has no member functions, but the member variables will be inherited into SortableMove as with classes.
  • Note: You must use the name net_score so the test program will work.
    • Note: By default, the member variables of a record (struct) have public access, which is what is wanted in this assignment. It is possible to make them protected or private, but doing so is generally a bad idea.
  • Add the function prototypes. They should be declared after the end of the Move type.
  • Add an appropriate source file.
  • Add an implementation for operator==. It should return true if the net_score fields of the two SortableMoves are equal. Otherwise it should return false.
  • Add an implementation for operator<. It should return true if the net_score field of lhs_in is strictly less than the net_score field of rhs_in. Otherwise it should return false.
    • Note: In this context, lhs_in and rhs_in refer to the terms on the left-hand side and right-hand side of the operator. Which side is which didn’t matter for operator==, but it does for operator<.
  • Test your Move module with the TestMove4.cpp program provided. You will need the TestHelper.h and TestHelper.cpp files. The resulting program should give you full marks (example output).
    • Hint: g++ Move.cpp TestMove4.cpp TestHelper.cpp -o partc

Part D: Modify the Search Module [5% test program]

In Part D, you will modify your Search module to search and sort an array of SortableMoves instead of an array of strings. The comparisons will be done using the overloaded operators from Part C.

By the end of Part D, your Search module will have functions with the following prototypes:

  • int linearSearch (const SortableMove data_in[],

int count_in,

const SortableMove& value_in);

  • int unsortedFindSmallest (const SortableMove data_in[],

int count_in);

  • int unsortedFindLargest (const SortableMove data_in[],

int count_in);

  • void mySort (SortableMove data_in[],

int count_in);

  • bool isSorted (const SortableMove data_in[],

int count_in);

  • int sortedFindSmallest (const SortableMove data_in[],

int count_in);

  • int sortedFindLargest (const SortableMove data_in[],

int count_in);

  • int binarySearch (const SortableMove data_in[],

int count_in,

const SortableMove& value_in);

  • int binarySearchFirst (const SortableMove data_in[],

int count_in,

const SortableMove& value_in);

Perform the following steps:

  1. Change the function prototypes to take a SortableMove parameter instead of a string. You will need a new #include.
  2. Change the function implementations to replace all of the strings with SortableMoves. There will be at least one local string variable in a function body that needs to be replaced.
  3. If you used any comparison operators on data other than == and <, your program will not compile. Either change your code to use only those operators, or add the necessary operators to the Move module.
    1. Hint: A greater than comparison (a > b) can be rewritten as (b < a). An inequality comparison such as (a != b) can be rewritten as (!(a == b)). Similarly, (a >= b) can be rewritten as (!(b < a)).
    • Note: Starting in C++20, if you write an equality comparison (a == b), the compiler will automatically generate an inequality comparison (a != b) for you. It just returns

!(a == b).

  • Test your BoardValue module with the TestSearch4.cpp program provided. You will need the TestHelper.h and TestHelper.cpp files. The resulting program should give you full marks (example output).
    • Hint: g++ Search.cpp Move.cpp TestSearch4.cpp TestHelper.cpp – o partd

Part E: The ArtificialIntelligence Class [30% = 28% test program + 2% output]

In Part E, you will write an ArtificialIntelligence class to contain the code that plays against the human player. The class will also store the colour of the stones that the AI plays. To use the AI, the client will repeatedly call a function in the class to choose the next move.

By the end of Part E, your ArtificialIntelligence class will have the following public

member functions:

  • ArtificialIntelligence (char us_value_in);
  • Move chooseMove (const Board& board_in) const;

Your ArtificialIntelligence class will have the following private member functions:

  • float calculateNetScore (const Board& board_in) const;
  • MoveResult getPlayResult (const Board& board_in,

int row_in, int column_in) const;

  • bool isInvariantTrue () const;

Perform the following steps:

  • Add an appropriate header file for your new module.  Do not put an #include for Game.h. Instead, put a forward declaration:

class Game;

This will allow you to refer to the Game type as a reference. It will not allow you to create a

Game or pass it by value.

  • Note: A forward declaration for a class is analogous to a prototype for a function.
    • Note: We are using a forward declaration here because Game.h will have to include ArtificialIntelligence.h in Part F. If ArtificialIntelligence also included Game.h, we would have circular includes, which is a Very Bad Thing. Circular includes typically cause a compiler to fail with obviously-incorrect error messages. E.g. saying a type is not declared on the exact line that declares it.
    • Note: You can use a forward declaration or an #include for Board. Both will work.
  • Add a record (struct) named MoveResult to store the result of a move. It should have two member variables: a boolean variable that tells whether the move was legal and a floating point value for the net score.
  • Add a class named ArtificialIntelligence. It should have one member variable, which will represent the board value for the stones it plays. The class should also have the function prototypes.
  • Add the constructor. It has one precondition, which is that the parameter is a player board value.
    • Reminder: You have a BoardValue function that will help you here.
  • Add the isInvariantTrue function, which should return true if the class invariant is true and false otherwise. The class invariant requires that the member variable holding the board value contains a player board value.
  • Use an assert to ensure the class invariant is true at the end of the constructor.
    • Reminder: Do not check the class invariant at the beginning of the constructor.
  • Add the calculateNetScore function. It should start by determining the board value for the other player besides the “us” player. Then the function should call a function to determine the score for the “us” player. When making the function call, the calculateNetScore function should use its parameter, which is of the Board type. Then it should determine the score for the other player in a similar manner. Finally, it should calculate the difference between the scores of the two players, convert the difference value to a float, and return it.
    • Reminder: You can use a function in the BoardValue module to find the board value for the other player.
  • Note: If you do not explicitly typecast the result to a float, you may get a warning on some compilers.
  • Add the getPlayResult function. It should return whether or not the proposed move is legal and, if so, what the board would look like after. First, check if the specified place is both on the board and empty. If not, the move is not legal. Next, make a copy of the board and play the stone at the specified place. If any stones are lost to suicide as a result, the move is not legal. Otherwise, the move is legal. In the case of a legal move, do the following: (i) calculate the net score for the board with the added stone, and (ii) return a value indicating that the move is legal and also return the net score.

Over steps 9-13, you will add an implementation for the chooseMove function. Overall, it will construct a list of all valid moves, sort them, and then choose one of the highest-scoring moves at random.

  • First, the chooseMove function should declare an array of the SortableMove type to hold all the possible moves that are valid. Declare a constant for the array size. The constant should be equal to the number of places on the game board plus 1 (for passing). This constant says the maximum number of moves that will ever be stored in the array. You will also need a variable to store how many moves are currently stored in the array.  It should start at 0.
    • Note: Normally, there will be fewer valid moves than the maximum because there will be stones on the board blocking some places. However, if black passes as the first move, the AI will need to store moves in every position in the whole array.
  • Secondly, the chooseMove function should add the legal moves to the array. Start by adding the “pass” move. Set is_played to false and calculate net_score based on the current game board. Then, for each place on the board, determine the MoveResult for playing there. If the move is legal, add it at that place to the next spot in the array. Set all the member variables for the SortableMove.
    • Hint: When you add a move to the array, use the number of valid moves as the index. Then increment the number of valid moves.
    • Note: If no stone was player, it doesn’t matter what you set the row and column to. Nothing will ever look at them.
  • Thirdly, the chooseMove function should sort the moves in the array.
  • Fourthly, the chooseMove function should determine the maximum net score. Then it should find the first element in the array with that score. The elements from there to the end are tied for highest net score.
    • Reminder: The array is sorted in ascending order, so the highest-scoring elements are at the end.
    • Hint: There is a function in the Search module that will help you.
  1. Finally, the chooseMove function should choose one of the highest-scoring moves at random and return it. You can generate a random number using the rand() function declared in the

<cstdlib> library.

  • Hint: You can convert the values returned by rand() into the range you want using the modulus (%) operator.  If you want a random value in the interval [0, n), you can use:

my_value = rand() % n;

For example, rand() % 4 can return 0, 1, 2, or 3.

  • Note: The array elements are SortableMoves, but the chooseMove function returns a Move. This works because SortableMove inherits from Move, so all SortableMoves are also Moves. When converting a SortableMove to a Move, the extra fields are sliced off and only the Move fields are returned. The same thing happens when passing parameters by value.
    • Note: Each time you run your program, you will get the same “random” numbers in the same order. This can be very useful for debugging. If you want your random numbers to be different each time, you can seed the random number generator with the current time. Do this by calling the srand function once at the start of your main function:

srand((unsigned int)(time(nullptr)));

You will need to #include <ctime>. You do not have to seed the random number generator for this assignment.

  • FYI: rand() returns numbers in the interval [0, RAND_MAX], where RAND_MAX is a constant with a value of at least 215-1 = 32767. On POSIX systems (including replit, Mac, and Linux), RAND_MAX is always 231-1 = 2147483647.
  • Test your ArtificialIntelligence module with the TestArtificialIntelligence4.cpp program provided. You will need the TestHelper.h and TestHelper.cpp files and the 19to5.txt data file. The resulting program should give you full marks (example output).
    • Hint: g++ BoardSize.cpp BoardValue.cpp Board.cpp Move.cpp Search.cpp ArtificialIntelligence.cpp TestArtificialIntelligence4.cpp TestHelper.cpp -o parte
    • Note: The remaining 2 marks for Part E are for whether the moves are chosen randomly.

Part F: Add AI to the Game [5%, marked with Part B]

In Part F, you will improve your Game class to play stones instead of always passing. Your Game type class will still have the following public member functions:

  • Game ();
  • Game (const std::string& filename_in);
  • void printBoard () const;
  • void printWinner () const;
  • const Board& getBoard () const;
  • void blackPass ();
  • bool blackPlay (int row_in, int column_in);
  • bool whiteAi ();

The Game class will also still have the same private member function:

  • void printRemoved (const StonesRemoved& removed_in) const;

Perform the following steps:

  • In the declaration of the Game class, add an ArtificialIntelligence member variable. You will need another #include.
    • Reminder: You must not have an #include for Game.h in

ArtificialIntelligence.h, or you will get circular includes. See Part E, Step 1.

  • In the implementation for the Game default constructor, initialize your new member variable using an initializer list. You must use an initializer list because ArtificialIntelligence does not have a default constructor.
    • Hint: An initializer list starts with a colon (‘:’) and goes between the first line of the function and the opening curly brace. For example:

MyClass::MyClass ()

: member_variable(argument1, argument2)

{

// constructor body stuff

}

  • Reminder: The Board member is automatically initialized using its default constructor. You can add it to the initializer list with no parameters, but that will have no effect.
  • In the other constructor, initialize the new member variable in an analogous manner.
  • Improve the implementation for the whiteAi function. It should start by choosing a move. If the move was to not play a stone, it should print that white passed and return false. Otherwise, it should print “White placed a stone at row RRR, column CCC“, where RRR is the row and CCC is the column. Then it should play a stone there, print the stones removed, and return true.
    • Reminder: The whiteAi function should return true if white played a stone and

false otherwise.

  • Test your program before handing it in. The white AI should be smart enough to choose moves that capture stones, surround territory, and invade the other player’s territory. It should be smart enough not to fill in its own eyes, but it will not be smart enough to deliberately construct them.
    • Hint: g++ PlaceString.cpp BoardSize.cpp BoardValue.cpp Board.cpp Move.cpp Search.cpp ArtificialIntelligence.cpp Game.cpp main.cpp -o game
  • Hint: Testing will be easier if you load the ear.txt or simple.txt board. The shapes.txt board will not work because some of the stones start surrounded and therefore the game will reject every move as violating the suicide rule.
    • Note: The ko rule is not yet implemented, so the AI can sometimes “undo” moves that capture a single stone by capturing it back. This will be fixed in Assignment 6.

Part G: Document Board functions [10% documentation]

In Part G, you will write documentation for your ArtificialIntelligence module in the style described in Section 4 of the online notes. You will write documentation for each public member function and for the class invariant. The format for function documentation is as follows (no bold-face in code):

//

// functionName

//

// Purpose: Explain why would you call this function.

// Parameter(s):

//    <1> parameter1: What it does

//    <2> parameter2: What it does

//    …

// Precondition(s):

//    <1> some precondition

//    <2> another precondition

//    …

// Returns: The meaning of the value the function returns.

// Side Effect: Anything the function does besides return

//               a value.

//

As in Part E, your ArtificialIntelligence class should have the following public member functions:

  • ArtificialIntelligence (char us_value_in);
  • Move chooseMove (const Game& game_in) const;

Perform the following steps:

  1. Document the constructor. Consider how many parameters and preconditions it has. All constructors have a side effect but no return value.
    1. Reminder: Documentation is written for programmers who want to call your functions. Assume the audience can see your header (.h) file but not your source (.cpp) file. Function documentation must be placed in the header file.
    1. Reminder: You do not have to document the data types for your parameters. Your audience can see the function prototype. Instead, describe the purpose of each parameter.
    1. Reminder: The preconditions are normally just the contents of your assert

statements. Copy-paste will be helpful.

  • Reminder: Don’t include the class invariant as a precondition. The class invariant is part of the module implementation, so it is hidden as part of data encapsulation.
  • Document the chooseMove function.
  • Immediately before the class definition, write general documentation for the class. Start with one or two sentences describing the purpose of the class (what it is used for). Then document the class invariant. If possible, use code instead of sentences to describe what the class invariant requires.
    • Hint: The documentation for you class could look something like the following:

//

// FruitTracker

//

// A FruitTracker compares the quality of different types

//    of fruits, such as apples to oranges. Client code

//    can query the best and worst types so far.

//

// Class Invariant:

//    <1> worst_score >= 0.0f

//    <2> best_score >= worst_score

//

  • Test that your program still compiles. It is easy to accidentally damage function prototypes while adding documentation around them.
    • Reminder: g++ PlaceString.cpp BoardSize.cpp BoardValue.cpp Board.cpp Move.cpp Search.cpp ArtificialIntelligence.cpp Game.cpp main.cpp -o game

Formatting [ 10% if not done]

  1. Neatly indent your program using a consistent indentation scheme.
  2. Put spaces around your arithmetic operators:

x = x + 3;

  • Use symbolic constants, such as BOARD_SIZE, when appropriate.
  • Include a comment at the top of main.cpp that states your name and student number.
  • Format your program so that it is easily readable. Things that make a program hard to read include:
    • Very many blank lines. If half or more of your lines are blank, you have too many. Put a blank line between logically distinct sections of your program.
    • Multiple commands on the same line. In general, do not do this. You can do it if it makes the program clearer than if the same commands were on separate lines.
    • Uninformative variable names. For a local variable that is only used for a few lines, the name does not really matter. However, if a variable is used over a larger area (including any global or member variable), it should have a name that documents its purpose.

Similarly, parameters should have self-documenting names because the function will be called from elsewhere in the program.

  • No variable names in function prototypes. Function parameters should have the same name in the prototype as in the implementation. Doing so makes calling the function much less confusing. (Contrary to some CS 110 training.)

Submission

  • If you are working with replit, download your project as a .zip file. Check that it contains all your .cpp and .h files.
  • Submit a complete copy of your source code to UR Courses. You should have the following files with exactly these names:
  • ArtificialIntelligence.h
  • ArtificialIntelligence.cpp
  • Board.h
  • Board.cpp
  • BoardSize.h
  • BoardSize.cpp
  • BoardValue.h
  • BoardValue.cpp
  • Game.h
  • Game.cpp
  • main.cpp
  • Move.h
  • Move.cpp
  • PlaceString.h
  • PlaceString.cpp
  • Search.h
  • Search.cpp
    • Note: A Visual Studio .sln file does NOT contain the source code; it is just a text file.

You do not need to submit it. Make sure you submit the .cpp files and .h files.

  • Note: You do not need to submit the test programs. The marker has those already.
  • If possible, convert all your files to a single archive (.zip file) before submitting them to UR Courses
  • Do NOT submit a compiled version
  • Do NOT submit Visual Studio intermediate files, such as:
    • Debug folder
    • Release folder
    • ipch folder
    • *.ncb, *.sdf, or *.db files
  • Do NOT submit a screenshot
Order Now

Get expert help for Restructure your Go program and many more. 24X7 help, plag free solution. Order online now!

Universal Assignment (February 21, 2024) Assignment 4: Restructure your Go program. Retrieved from https://universalassignment.com/assignment-4-restructure-your-go-program/.
"Assignment 4: Restructure your Go program." Universal Assignment - February 21, 2024, https://universalassignment.com/assignment-4-restructure-your-go-program/
Universal Assignment March 12, 2023 Assignment 4: Restructure your Go program., viewed February 21, 2024,<https://universalassignment.com/assignment-4-restructure-your-go-program/>
Universal Assignment - Assignment 4: Restructure your Go program. [Internet]. [Accessed February 21, 2024]. Available from: https://universalassignment.com/assignment-4-restructure-your-go-program/
"Assignment 4: Restructure your Go program." Universal Assignment - Accessed February 21, 2024. https://universalassignment.com/assignment-4-restructure-your-go-program/
"Assignment 4: Restructure your Go program." Universal Assignment [Online]. Available: https://universalassignment.com/assignment-4-restructure-your-go-program/. [Accessed: February 21, 2024]

Please note along with our service, we will provide you with the following deliverables:

Please do not hesitate to put forward any queries regarding the service provision.

We look forward to having you on board with us.

Categories

Get 90%* Discount on Assignment Help

Most Frequent Questions & Answers

Universal Assignment Services is the best place to get help in your all kind of assignment help. We have 172+ experts available, who can help you to get HD+ grades. We also provide Free Plag report, Free Revisions,Best Price in the industry guaranteed.

We provide all kinds of assignmednt help, Report writing, Essay Writing, Dissertations, Thesis writing, Research Proposal, Research Report, Home work help, Question Answers help, Case studies, mathematical and Statistical tasks, Website development, Android application, Resume/CV writing, SOP(Statement of Purpose) Writing, Blog/Article, Poster making and so on.

We are available round the clock, 24X7, 365 days. You can appach us to our Whatsapp number +1 (613)778 8542 or email to info@universalassignment.com . We provide Free revision policy, if you need and revisions to be done on the task, we will do the same for you as soon as possible.

We provide services mainly to all major institutes and Universities in Australia, Canada, China, Malaysia, India, South Africa, New Zealand, Singapore, the United Arab Emirates, the United Kingdom, and the United States.

We provide lucrative discounts from 28% to 70% as per the wordcount, Technicality, Deadline and the number of your previous assignments done with us.

After your assignment request our team will check and update you the best suitable service for you alongwith the charges for the task. After confirmation and payment team will start the work and provide the task as per the deadline.

Yes, we will provide Plagirism free task and a free turnitin report along with the task without any extra cost.

No, if the main requirement is same, you don’t have to pay any additional amount. But it there is a additional requirement, then you have to pay the balance amount in order to get the revised solution.

The Fees are as minimum as $10 per page(1 page=250 words) and in case of a big task, we provide huge discounts.

We accept all the major Credit and Debit Cards for the payment. We do accept Paypal also.

Popular Assignments

Solution: Scenario 1, Mirror therapy in patients post stroke

Title: Scenario 1, Mirror therapy in patients post stroke Part 1 : Summary Ramachandran and colleagues developed mirror therapy to treat amputees’ agony from phantom limbs. Patients were able to feel their amputated limb without experiencing any pain by presenting them a mirror image of their healthy arm. Since then,

Read More »

Solution: Exploring the Dominance of Silence

Slide 1: Title – Exploring the Dominance of Silence The title, “Exploring the Dominance of Silence,” sets the stage for a deep dive into the portrayal of silence in Philip K. Dick’s “Do Androids Dream of Electric Sheep?” Our presentation will dissect the literary techniques used by the author to

Read More »

Solution: Assessment: Critical Reflection S2 2023

The policies that hampered the cultural survival of Indigenous groups have a major effect on their health (Coffin, 2007). Cultural isolation can cause an identity crisis and a sense of loss, which can exacerbate mental health problems. Indigenous people have greater rates of chronic illness and impairment due to historical

Read More »

Solution: The Market – Product and Competition Analysis

Section 1: The Market – Product and Competition Analysis Industry and Competition Analysis: The baking mix market is very competitive, but My Better Batch is entering it anyhow. The prepackaged baking mixes sold in this market allow busy people to have bakery-quality products on the table quickly without sacrificing quality

Read More »

Solution: PDCA model for Riot

Student Name: Student ID: University Name: Date: Learning Outcome 1: Engage actively in recognizing a new product/service for Riot and detect the vital tasks required for its effective growth. In this comprehensive learning outcome, Riot’s progress towards innovation superiority is characterized by a deliberate scheme that draws on components from

Read More »

Solution: EDEN 100 – ASSIGNMENT 1

Part 1: Reflections on the Register Variables Use the questions in Column 1 and analyse the sample oral interactions provided under the assessment tile. The transcript for Viv’s conversation is provided on pages 4-5. Probe Questions  Link to readings and theory Interaction 1 Interaction 2 PART 1 – ANALYSING THE

Read More »

Solution: TCP/IP Questions

Table of Contents Question 1. 1 1. IPSec datagram protocol 1 2. Source and destination IP addresses in original IP datagram.. 1 3. Source and destination IP addresses in new IP header 2 4. Protocol number in the protocol field of the new IP header 2 5. Information and Bob.

Read More »

Solution: Fundamentals of Employment Assistance Program and Counselling

ASSESSMENT 3 Subject: Fundamentals of Employment Assistance Program and Counselling Case study Question 1 a)     Major Issues for Theo that could be addressed in counselling: b)    Issues to Address First in Short-Term Counselling:             The cognitive processes of memory, focus, and decision-making are all impacted by insufficient sleep. Such cognitive

Read More »

Solution: EQUITY AND INCLUSION IN EARLY CHILDHOOD IN AUSTRALIA

Written Policy Recommendation Name: Student Number: Email: Date: Introduction: The early years of a child’s life are important for their holistic development, making early childhood education a foundation for their future accomplishments. Nevertheless, guaranteeing equality and inclusion in early childhood education stays a major problem in our society. This policy

Read More »

Solution: Report Health Issue

Table of Contents Executive Summary                                                                                                   3 Introduction                                                                                                                5 Examination of the Chosen Health Issue in the Context of Lambeth                        5 Application of Health Inequality Framework and Analysis of Determinants: Psychotropic Drug Use in Lambeth                                                                           6 Exploration and Discussion of Strategies to Manage Psychotropic Drug Use in Lambeth                                                                                                                        7 Conclusion                                                                                                                  8

Read More »

Solution: Section III: Marketing

Section III: Marketing Channels for Advertising: Understanding Who Makes Baking Product Purchase Decisions is Crucial for My Better Batch’s Business Success (Sampson et al, 2017). Home bakers may make up a disproportionate share of the decision-makers in the UK. As a result, My Better Batch has to target people, especially

Read More »

Solution: Analytics Project Project Management Plan

Analytics Project Project Management Plan Date: 22-10-2023 Author: Name Here Version: 2.0 Project Management Plan (PMP) This project management plan will outline the strategies and plans used to manage ‘analytics project’ for the Style-Hub organization. It will include the tasks such as project governance, management, planning, budget and controlling. It

Read More »

Solution: Report Health Issue

Table of Contents Executive Summary                                                                                                   3 Introduction                                                                                                                5 Examination of the Chosen Health Issue in the Context of Lambeth                        5 Application of Health Inequality Framework and Analysis of Determinants: Psychotropic Drug Use in Lambeth                                                                           6 Exploration and Discussion of Strategies to Manage Psychotropic Drug Use in Lambeth                                                                                                                        7 Conclusion                                                                                                                  8

Read More »

Solution: Mirror therapy in patients post stroke

Title: Scenario 1, Mirror therapy in patients post stroke Part 1 : Summary Ramachandran and colleagues developed mirror therapy to treat amputees’ agony from phantom limbs. Patients were able to feel their amputated limb without experiencing any pain by presenting them a mirror image of their healthy arm. Since then,

Read More »

Solution: Case Study – HR Activities

Cover Page Case Study – HR Activities title of assessment unit code unit name semester and year assignment title student name student number tutor name and word count Executive Summary The research suggests two main HR initiatives to help Actualise Health deal with its workforce issues: acquiring and developing talent,

Read More »

Solution: Building a Foundation for Equity and Inclusion

Script – Slide 1: Title and Introduction Greetings, everyone. My name is…, and I would like to discuss a vital concern in early childhood education – equality and inclusion. At present, I’m going to explain why this matter is so important and what research and guidelines indicate about it. Slide

Read More »

Solution: EQUITY AND INCLUSION IN EARLY CHILDHOOD IN AUSTRALIA

Written Policy Recommendation Name: Student Number: Email: Date: Introduction: The early years of a child’s life are important for their holistic development, making early childhood education a foundation for their future accomplishments. Nevertheless, guaranteeing equality and inclusion in early childhood education stays a major problem in our society. This policy

Read More »

Expression of Interest (EOI)

The focus of this Expression of Interest is to demonstrate why you are a good fit for the selected project based on your learning in IKC101.Context:You are submitting an Expression of Interest (EOI) to lead a project connected to the organisation you have chosen. You are required to explain your

Read More »

COM10007 Professional Communication Practice

Assignment 3: PresentationWord/time limit: Five minutes (+/- 10%)Weighting: 15% (Presentation + reference list)Assignment detailsFor this assignment, you are required to consider those who work in the following sectors and describe the key responsibilities of a professional communicator in a particular context—including types of audiences, key messages and delivery modes. You

Read More »

ELT2014 Special Educational Needs and Disabilities

ELT 2014 Assessment 1 – Case Study Module code ELT2014 Module title Special Educational Needs and Disabilities Submission date, time 27/2/24 @ 5pm: Group Presentation slides for part (a) uploaded to TurnItIn 28/2/24 : Group Presentations in class for part (a) – ALL MUST ATTEND 22/3/24 @ 9pm: Suggested deadline

Read More »

Applied Pathobiology Assessment 2 – case study

This assessment covers 30% of the marks for this module. Instructions   Case 1 Vivienne A. (mother) and Isabel A. (daughter) go to the GP for prolonged fatigue in the last four months. Vivienne is a retired 74-year-old teacher, who reports fatigue, tingling and numbness in her hands and feet,

Read More »

Assignment Legislative Framework for Governance

It’s now time to complete your assessment. At Level 5, you must demonstrate that you can follow academic writing standards, including checking your writing for spelling and grammar, referencing using Harvard referencing (or similar) guidelines and utilising critical analysis skills. If you are unsure about these, speak to your Advanced

Read More »

BIK0028/BIH2014 Tips for Individual report assessment

Guidance document: Tips for Individual report assessment BIK0028/BIH2014 Individual report Assessment Assessment brand of your choice. rarity, extraordinariness and a high degree of non-functional associations” (Heine, 2012, p.62). Your work should include the following •       A brief introduction to the selected brand characteristics etc.) •       Your analysis of consumers’ behaviour

Read More »

1008GBS Business Decision Making Assessment 3

1008GBS Business Decision Making Assessment 3 50 Marks (worth 50% of total assessment) Business Decision-Making Take Home Assignment. The deadline is 6 pm 5th February 2024. Notes – read these carefully! The report should be prepared based on the five questions below. For each question, include a separate subheading. The

Read More »

Can't Find Your Assignment?

Open chat
1
Free Assistance
Universal Assignment
Hello 👋
How can we help you?