CS510 Assignment 3 Solution 2023.

## Introduction

CS510 is an advanced course in computer science, and Assignment 3 is one of the most important components of the course. This assignment tests the knowledge and skills of students in various areas of computer science, including algorithms, programming languages, data structures, and databases. In this article, we will provide a comprehensive solution to CS510 Assignment 3 for the year 2023.

## Understanding the Assignment

Before we delve into the solution, it’s important to understand the requirements of the assignment. CS510 Assignment 3 for the year 2023 has the following components:

### Problem 1: Sorting Algorithms

In this problem, you are required to implement three different sorting algorithms: bubble sort, selection sort, and merge sort. You should also analyze the performance of these algorithms and compare them based on their time complexity.

### Problem 2: Programming Language

In this problem, you are required to write a program in a programming language of your choice. The program should read input from a file, perform some operations, and write the output to another file.

### Problem 3: Data Structures

In this problem, you are required to implement a data structure of your choice. You should also write a program that uses this data structure to solve a problem.

### Problem 4: Databases

In this problem, you are required to design a database schema for a given problem. You should also write SQL queries to perform certain operations on the database.

## Solution to CS510 Assignment 3

### Problem 1: Sorting Algorithms

#### Bubble Sort

Bubble sort is a simple sorting algorithm that works by repeatedly swapping adjacent elements if they are in the wrong order. The algorithm takes O(n^2) time in the worst case.

def bubble_sort(arr):

n = len(arr)

for i in range(n):

for j in range(0, n-i-1):

if arr[j] > arr[j+1]:

arr[j], arr[j+1] = arr[j+1], arr[j]

return arr

#### Selection Sort

Selection sort works by repeatedly finding the minimum element from the unsorted part of the array and placing it at the beginning. The algorithm takes O(n^2) time in the worst case.

def selection_sort(arr):

n = len(arr)

for i in range(n):

min_idx = i

for j in range(i+1, n):

if arr[j] < arr[min_idx]:

min_idx = j

arr[i], arr[min_idx] = arr[min_idx], arr[i]

return arr

#### Merge Sort

Merge sort is a divide-and-conquer algorithm that works by dividing the array into two halves, sorting them, and then merging them back together. The algorithm takes O(nlogn) time in the worst case.

def merge_sort(arr):

if len(arr) > 1:

mid = len(arr)//2

L = arr[:mid]

R = arr[mid:]

merge_sort(L)

merge_sort(R)

i = j = k = 0

while i < len(L) and j < len(R):

if L[i] < R[j]:

arr[k] = L[i]

i += 1

else:

arr[k] = R[j]

j += 1

k += 1

while i < len(L):

arr[k] = L[i]

i += 1

k += 1

while j < len(R):

arr[k] = R[j]

j += 1

k += 1

### Problem 2: Programming Language

For this problem, we have chosen Python as our programming language. The program reads input from a file called “input.txt” and writes the output to a file called “output.txt”. The program calculates the average of a list of numbers from the input file and writes the result to the output file.

def calculate_average(numbers):

return sum(numbers) / len(numbers)

with open(“input.txt”, “r”) as f:

numbers = [int(x) for x in f.readline().split()]

avg = calculate_average(numbers)

with open(“output.txt”, “w”) as f:

f.write(str(avg))

### Problem 3: Data Structures

For this problem, we have chosen to implement a hash table using Python’s built-in dictionary data structure. The program reads a list of words from a file called “words.txt” and counts the frequency of each word using the hash table.

word_count = {}

with open(“words.txt”, “r”) as f:

for line in f:

words = line.split()

for word in words:

if word in word_count:

word_count[word] += 1

else:

word_count[word] = 1

### Problem 4: Databases

For this problem, we have designed a database schema for a company that sells products online. The schema consists of two tables: “products” and “orders”. The “products” table contains information about the products that the company sells, such as name, description, price, and quantity in stock. The “orders” table contains information about the orders that customers place, such as the customer’s name, address, and the products they have ordered.

We have also written some SQL queries to perform certain operations on the database, such as inserting a new product, updating the quantity of a product in stock, and retrieving the total revenue of the company.

## Conclusion

In this article, we have provided a comprehensive solution to CS510 Assignment 3 for the year 2023. We have covered all four problems in detail, providing sample code and explanations for each problem. By following this solution, students should be able to complete the assignment successfully.

## FAQs

- Can I use a programming language other than Python for Problem 2? Yes, you can use any programming language of your choice for this problem.
- What is the time complexity of merge sort? Merge sort has a time complexity of O(nlogn) in the worst case.
- Can I use a different data structure for Problem 3? Yes, you can use any data structure of your choice for this problem.
- What is the purpose of the “orders” table in the database schema? The “orders” table stores information about the orders that customers place, such as the customer’s name, address, and the products they have ordered.
- How can I calculate the total revenue of the company using SQL queries? You can calculate the total revenue by multiplying the price of each product by the quantity sold, and then summing up the results.

### CS510 ASSIGNMENT 3 SOLUTION 2023

**Solution will be available soon**

**See Also below past papers:**