Unit 19 Data Structures and Algorithms - BTEC Higher National Diploma (HND) in Computing

You are strongly advised to read "Preparation guidelines of the Coursework Document" before answering your assignment.

Learning Outcome 1: Examine abstract data types, concrete data structures, and algorithms

Learning Outcome 2: Specify abstract data types and algorithms in a formal notation

Learning Outcome 3: Implement complex data structures and algorithms

Learning Outcome 4: Assess the effectiveness of data structures and algorithms

ASSIGNMENT

Aim & Objective

This coursework is designed to demonstrate the broad understanding and knowledge of the module, assessing, and evaluating the student`s strength and level of analysis; divided into 4 Section. The coursework should be submitted as one document in a report format in final submission.

Assignment Scenario

Data structures provide a means to manage large amounts of data efficiently for uses such as large databases and internet indexing services. Usually, efficient data structures are key to designing efficient algorithms. Some formal design methods and programming languages emphasize data structures, rather than algorithms, as the key organizing factor in software design. Data structures can be used to organize the storage and retrieval of information stored in both main memory and secondary memory. Primitive data structures like int, float, char, etc. are simple ways for programming languages to represent basic values but to store multiple values in a single variable, there is a need for nonprimitive data structures which include arrays, lists, stacks, trees, and so forth. The use of these data structures can also be employed using object-oriented programming languages like C# or Java, a class is a data structure that organizes attributes and functions in such a way that they can be easily replicated. In each case, the way the data is "structured" makes it easy to retrieve or manipulate.

You have been asked to write a report covering the points stated below in relation to ADTs and their management. You must also present your programming skills related to abstract data types using C#.

LO1

The implementation of a data structure usually requires writing a set of procedures that create and manipulate instances of that structure. The different form of data structure and its operations gives rise to the different application like Arrays, Stack, Queue, Linked Lists, graph data structure, Tree, Hash tables, etc. Understanding the above nature of data structure, you are required to produce a design specification for any three data structures explaining the valid operations that can be carried out on the structures. To implement and make use of Stack, you need to define its common operations and how it is used to implement function calls in a computer. To further test the use of Queue, you need to illustrate with an example of a concrete data structure for "First in First out" (FIFO) Queue and its common operations.

Sorting is a common operation in many applications, but efficient algorithms are selected and made used to develop the programs, therefore you are required to compare the performance of any two types of Sorting.

Visualizations are a powerful way to simplify and interpret the underlying patterns in data. The use of graphs is one such visualization technique. It is incredibly useful and helps businesses make better data-driven decisions. To present your understanding of the concepts of graphs, you need to present your findings on "Graph theory", by analysing any two networks` shortest path algorithms from Bellman Ford`s Algorithm, Dijkstra`s Algorithm & Floyd-Warshall`s Algorithm.

LO2

In many modern days applications, Stacks are used for the undo buttons. The recent most changes are pushed into the stack. Even the back button on the browser works with the help of the stack where all the recently visited web pages are pushed into the stack. Making a note of the above concepts on the stack, you need to Identify an abstract data type for a First in Last out (FILO) - stack and its different associated functions and support with some programming examples. Based on the application of OOPS in data structures, you need to examine the advantages of encapsulation and information hiding when using an ADT. Present your views along with justification on why imperative ADTs is considered a basis for object orientation.

LO3

A college has asked you to produce a console-based application to store Student`s information and the course in which they are working. The application should have the following functionalities:

a) Add new student (student id, first name, last name, and mobile number, email, course name, and course start date.)

b) Add 3 departments (e.g., Business, Health Care and Computing, etc). You should have options to add other departments.

c) Remove student`s record based on ID or Phone number

d) Search student record based on phone number, ID, or course name.

e) Display all student`s ID, first name, last name based on the course enrolled in.

f) Update any student`s details.

Create your own data structure for the above problem and using Array, List, or Linked list as a base data storage, create and develop the application in C#. Your built application could implement encapsulation, Inheritance, and polymorphism.

In your built application, you should implement error-handling measures in your programming code and demonstrate its use in your assignment. To further support your findings, you should demonstrate your implementation of the data structure and the methods for solving the above problem by providing screenshots and test cases of each output. Once you have implemented the above program, you need to critically evaluate the complexity of your implemented ADT/algorithm.

LO4

To evaluate your built application, you need to first discuss how Asymptotic analysis can be used in understanding the complexity of algorithms with an example. To measure the efficiency of your developed application, determine two ways in which you can measure its efficiency, illustrating your answer with an example. While writing code on any problem, sometimes we need to sacrifice time over space or vice versa, you need to Interpret "what is trade-off" with one example to support your answer (you can take any part/ section of your programming code in your built application to justify your arguments). In addition, you could also evaluate three benefits of using and implementing independent data structures in your built applications to present your overall understanding of ADT.