# Developing algorithms does not always require you to write something from nothing. A significant por

Developing algorithms does not always require you to write something from nothing. A significant portion of the time, you will adapt existing algorithmic work, interpreting what other software engineers have done before you, breaking down the purpose of each instruction, in the algorithm, they developed. Moreover, since every software engineer tends to have a unique style of problem-solving, the deciphering of existing functions can vary from algorithm to algorithm.

Though interpreting another’s algorithm can be challenging, cultivating skills in reverse engineering algorithms is invaluable, as it always has the potential of showing you new ways to solve problems. For this Hand-In Assignment, your task is to solve the following problem:

Suppose f is a function that returns the result of reversing the string of symbols given as its input, and g is a function that returns the concatenation of the two strings given as its input. If x is the string abcd, what is returned by g(f(x),x)?

To prepare for this Assignment:

·         Review your Weekly Learning Resources with a focus on programming concepts and paradigms.

·         Carefully analyse each part in the presented program.

·         Identify a programming paradigm, and write the problem out using pseudo-code that would support that paradigm.

To complete this Assignment:
Submit a 2-3 paragraph paper in which you address the following:

·         Based on the information provided in the presented problem, identify what is returned by g(f(x),x) if x is the string ‘abcd’.