uiz Space

January 2025 term · Introduction to Big Data · BSDA5001

Introduction to Big Data End Term: 13 April 2025, Set 1-5 (January 2025 term)

The IIT Madras BS Introduction to Big Data (Intro to Big Data) End Term paper sat on 13 Apr 2025, in the January 2025 term, set 1-5: 19 questions for 50 marks in 180 minutes. Every question is below with its answer. Take it as a timed mock test to be marked, or read it through first.

Questions
19
Marks
50
Duration
180 min
MCQ
14
MSQ
5

Updated

Official paper: IIT M IMPROVEMENT FN EXAM QIM2 13 Apr · No negative marking.

Question 1

+2 marksOne correct option

At the onset of every festive season, there is a surge in quick commerce orders (i.e. orders delivered within 15 minutes) on Swiggy. The supply chain head at Swiggy for a city is interested in a real-time view of the inventory of her dark stores (i.e. stores without nameboards where the supplies are kept and used to fulfil app orders). She wants to see this be presented in a monitor mounted in her office wall that refreshes with the latest info on a city map every 1 minute. Along with the info, there also needs to be the current time so that she gets a visual confirmation that this is the latest data. This dashboard allows her to plan for new orders of specific supplies that she is running out of so that no customer is left unsatisfied. What solution option below best solves for the need?

  1. A

    Route a copy of every quick commerce item ordered to a Kafka topic, useSpark Structured Streaming to continuously read from this topic and update the current counts of supplies, and emit using output mode “Update”.

  2. B

    Route a copy of every quick commerce item ordered to a Kafka topic, useSpark Structured Streaming to periodically read from this topic every 1 minute and update the current counts of supplies, and emit all aggregates using the output mode “Complete”.

  3. C

    Route a copy of every quick commerce item ordered to a Kafka topic, useSpark Structured Streaming to periodically read from this topic every 1 minute and count the supplies ordered in that batch, and emit only all aggregates in that batch using the output mode “Append”.

Show answer

Correct answer

  • B

    Route a copy of every quick commerce item ordered to a Kafka topic, useSpark Structured Streaming to periodically read from this topic every 1 minute and update the current counts of supplies, and emit all aggregates using the output mode “Complete”.

Question 2

+2 marksOne correct option

You are given a Spark program that runs on a Google Dataproc cluster on a daily schedule starting execution at 7AM running typically for 2 hours, to produce as output the total amount spent on purchases made by every customer the previous day. The input data is coming into GCS every minute from a variety of sources as standalone files. Therefore, the business leader now feels that having to wait till 9AM the next day is no longer acceptable and instead ideally wants purchase information for each customer at least every 5 minutes during the day itself. What’s more, she wants to be able to change this time configuration later without involving you.
Which amongst the below represents the best option to achieve the above?

  1. A

    Change the schedule to run every 5 minutes, no other change required.

  2. B

    Change the code to leverage Spark Streaming with streaming window as “5minutes”, & let her manage the execution of the code on Google Dataproc

  3. C

    Change the code to leverage Spark Streaming with streaming window as “5minutes”, go from using Dataproc to Dataflow, & let her manage the execution of the code on Dataflow

  4. D

    Write a Cloud Function to move all incoming per-minute standalone files fromGCS to Pub/Sub, change the code to leverage Spark Streaming with streaming window as “5 mins”, convert from Dataproc to Dataflow, point source to Pub/Sub, & let her manage the execution of the code on Dataflow

Show answer

Correct answer

  • C

    Change the code to leverage Spark Streaming with streaming window as “5minutes”, go from using Dataproc to Dataflow, & let her manage the execution of the code on Dataflow

Question 3

+2 marksOne correct option

You are asked to build a recommendation engine for an offline store at the checkout counter, using a combination of cloud and point-of-sale (PoS) terminal resources. Consider the following pipeline choices for effecting the same outcome, where Kubernetes is an open-source system for automating deployment, scaling and management of containerized applications, Google Datastore and HBase are both highly-scalable NoSQL database systems for interactive, real-time applications, and Google Vertex AI is a hosted platform that lets you train and deploy ML models
(i) Recommender model training on Python VM on GCP; Data publisher on VM in PoS → Kafka VM on GCP → Spark Streaming on Hadoop VMs on GCP -> Recommender hosted on Python VM on GCP → Relay recommendation to PoS (ii) Recommender model training on Vertex AI; Data publisher on VM in PoS → Kafka VM on GCP → Dataflow -> Recommender hosted on Vertex AI → Relay recommendation to PoS (iii) Recommender model training on Python VM on GCP; Data publisher on VM in PoS → Pub/Sub → Spark Streaming on Google Dataproc → Recommender hosted on Python VM on GCP -> Relay recommendation to PoS (iv) Recommender model training on Python VM on GCP; Data publisher on VM in PoS → Pub/Sub → Dataflow → Recommender hosted on Python VM on GCP → Relay recommendation to PoS (v) Recommender model training on Python VM on GCP; Data publisher on VM in PoS → Pub/Sub → Spark Streaming on Hadoop VMs on GCP → Recommender hosted on Python VM on GCP → Relay recommendation to PoS
Which option below represents the correct order of pipeline options that has the “most IaaS” entry to the left and the “most PaaS” entry to the right?

  1. A

    (i), (v), (iii), (iv), (ii)

  2. B

    (i), (ii), (iii), (iv), (v)

  3. C

    (ii), (iii), (i), (iv), (v)

  4. D

    (v), (iii), (i), (iv), (ii)

  5. E

    All are equally PaaS / IaaS

Show answer

Correct answer

  • A

    (i), (v), (iii), (iv), (ii)

Question 4

+2 marksOne correct option

Consider a file “data.bin” which is formatted as follows: every data record has 10 key-value pairs of the format “key,value”, with each pair separated by a comma, where the “key” is the name of a field and the “value” is the value for that field in that record. Every data record occurs in its own line. You are asked to write a data processing script using Python that scales with big data. Which of the following represents your approach?

  1. A

    Since data.bin is compliant with the RFC 4180, use PySpark’s read_csv() to readthe data as is.

  2. B

    Rename the file data.bin to data.csv to make it compliant with RFC 4180 andthen use PySpark’s read_csv() to read the data

  3. C

    The problem cannot be solved since the file cannot be converted to a validformat for reading consistently without additional information

  4. D

    Write PySpark code to read all lines in data.bin, use string split on “,” asdelimiter, and then collect all column names and corresponding values into a RDD for further processing

Show answer

Correct answer

  • D

    Write PySpark code to read all lines in data.bin, use string split on “,” asdelimiter, and then collect all column names and corresponding values into a RDD for further processing

Question 5

+2 marksOne correct option

You join the data engineering team at a company that has good big data expertise already. Your first assignment is to convert Spark code written by previous engineers that used Spark 1.0 to use newer features and best practices. None of those previous engineers work in the company anymore, and nobody in the present team can tell you what data files available in the company data lake today correspond to which part of the processing done then. Which of the following most accurately captures your ability to do the task at hand?

  1. A

    The task is impossible since Spark 1.0 used RDDs which cannot be convertedto Dataframes without the correct data schema.

  2. B

    The task is impossible since Spark core and syntax has changed so completelythat those data files it processed then can no longer be processed by current Spark versions.

  3. C

    The task is possible with multiple trial-and-error schema experimentsmatching data files with the older code.

  4. D

    The task is possible since Spark has backwards compability.

  5. E

    None of these,since not enough information is available.

Show answer

Correct answer

  • C

    The task is possible with multiple trial-and-error schema experimentsmatching data files with the older code.

Question 6

+2 marksOne correct option

What happens when a Spark Structured Streaming pipeline operating with Kafka as source and console output as target is subject to a failure of a machine in either of the Kafka cluster or the Spark cluster?

  1. A

    Failure of a machine in the Kafka cluster will result in an Exception in the Sparkpipeline which will then fail and halt.

  2. B

    The pipeline will be restarted automatically by Spark which is able to pick upthe exact data from Kafka which was being processed at the time of error, resulting in exactly-once semantics.

  3. C

    The Spark pipeline will not be able to start again from previously committedoffset by restarting itself, resulting in at least-once processing semantics

  4. D

    Irrespective of whatever machine fails, Spark will throw an error and halt.

  5. E

    Data that is being processed will not be processed again, resulting in at most-once semantics.

  6. F

    Spark will be able to pick up data from Kafka from exactly that offset whichfailed but may produce duplicate output on the target resulting in at least once semantics for the consumer of the output.

Show answer

Correct answer

  • F

    Spark will be able to pick up data from Kafka from exactly that offset whichfailed but may produce duplicate output on the target resulting in at least once semantics for the consumer of the output.

Question 7

+2 marksOne correct option

A big data streaming application that uses Kafka as source is observed to be really lagging behind currently live data. The Kafka cluster has 2 broker nodes and this application is reading from 1 topic that has 10 partitions. On closer investigation, it was found that Kafka is not scaling to the velocity of input data coming in. What can you first try to do to scale Kafka further while incurring minimal overall costs?

  1. A

    Add disks to each broker in the cluster, and disks are the cheapest computercomponent

  2. B

    Add new brokers to the cluster, even though this is more expensive than theother options this is the only foolproof way to scale.

  3. C

    Create more topics and change input application to reroute data to all topicsto be able to spread input data better. This is nearly the least expensive since only developer effort is required to change application.

  4. D

    Double the number of partitions for this single topic to be able to spread inputdata better. This is the least expensive since only administrator effort is required without changing application.

Show answer

Correct answer

  • B

    Add new brokers to the cluster, even though this is more expensive than theother options this is the only foolproof way to scale.

Question 8

+2 marksOne correct option

A company with headquarters (HQ) in the Middle East operates on a Sunday-Thursday weekday schedule with Friday & Saturday as weekend days. It computes end of week revenue numbers using an ETL pipeline by first computing sales for each day at 1AM local time of the next day, and then summing up the weekly sales every Sunday early morning at 3AM local time. This number gets reported to leadership every Sunday morning 9AM local time. Therefore, the ETL pipeline is scheduled to run every Sunday morning at 8AM local time. As a result of management change, the company has decided to shutdown its business in the Middle East and relocate all of its operations and business HQ to India. Which of the following changes will need to be done to its ETL pipeline to ensure the correct output continues to be produced?

  1. A

    The business time for the final weekly sum operation needs to be changed tothat of Monday 3AM India time instead of Sunday 3AM Middle East time.

  2. B

    There is zero change needed since neither event time nor business time ischanging whereas only the operational time is changing.

  3. C

    Since time zone has changed as well as week definition too, the definition ofbusiness time has changed. So, the ETL has to be rewritten entirely.

  4. D

    Nothing needs to change since daily sales is available at 1AM Middle East timewhich is anyway behind India time and so the numbers will be available before leadership comes in at 9AM.

  5. E

    Event time has changed since the event of week ending has changed indefinition, and so the ETL needs to be changed to consider the new event in the data.

Show answer

Correct answer

  • C

    Since time zone has changed as well as week definition too, the definition ofbusiness time has changed. So, the ETL has to be rewritten entirely.

Question 9

+2 marksOne correct option

You are appointed as a Data Engineer in a company that has a legacy reporting application written in Java which suffers from performance problems. The reporting application plots dashboards with daily refresh of key business indicators to help management take the best decisions. The application reads data directly from the source database of MongoDB, aggregates using simple counts and shows them visually in a UI. The performance problem of this application comes because the source database is at times overloaded and therefore the dashboard is not able to retrieve answers fast enough making the end user wait for the result. Choose the best option that gives the best performance with minimal maintenance effort:

  1. A

    Since MongoDB is OLTP, it is not able to support business reporting. So, bringthe data into Hadoop end of day, and run OLAP queries on it from the same UI.

  2. B

    Convert the application from using plain Java to using Spark Streaming in Java

  3. C

    Extract raw data from MongoDB using Change Data Capture (CDC) once everyminute into Kafka, and then use Spark Streaming to compute the KPIs and then populate into a NoSQL DB like Redis for the UI to consume.

  4. D

    Query MongoDB every 1 minute for new data using a check on documentinserted timestamp, use Spark Streaming to compute the KPIs with the queried data, and then populate into a NoSQL DB like Redis for the UI to consume.

  5. E

    Convert application to using Python along with a NoSQL database for storingand retrieving the aggregated counts.

Show answer

Correct answer

  • A

    Since MongoDB is OLTP, it is not able to support business reporting. So, bringthe data into Hadoop end of day, and run OLAP queries on it from the same UI.

Question 10

+2 marksOne correct option

Fielder on the midwicket boundary is wearing a smart watch. Unlike other smart watches, this one is unique in that it helps him field. Whenever the ball is headed his direction, the watch vibrates to alert him. When there is a chance of a catch by this fielder, the watch continually whispers every second to go forward, back, left or right thus improving his chances of settling under the ball and taking the catch. The watch is connected to the spider cam. The spider cam is itself a powerful ARM-based computer which has connectivity to the Cloud, an all-seeing AI-powered superbeing, through the wire on which it hangs. Using this connectivity, it can send as much or as little data as required and also receive instructions from the cloud. Your task is to design the data pipeline that enables such feedback to the fielder for every ball that comes his way with as much accuracy as possible throughout the match. You are given two ML models: a vision model that given a frame from the spider cam computes an alert if the ball is headed to him, and an adjustment model that helps adjust catch positioning of the fielder which takes as input a continuous video feed. Which of the following options best satisfies the requirements?

  1. A

    Ingest all spider cam data including video feeds into Pub/Sub, process usingGoogle Cloud Dataflow where you invoke the vision model and the adjustment model, relaying this output to the spider cam continuously.

  2. B

    Compress the vision model and adjustment model to fit into the spider cam’savailable resource, and write pipelines to execute the models in the spider cam itself

  3. C

    Compress the vision model and adjustment model to fit into the spider cam’savailable resource, and write pipelines to execute in the spider cam itself, with periodically data being sent to the cloud for retraining the vision model using Google Cloud ML and then redeploy the model to the spider cam.

  4. D

    Compress the data in the spider cam every 5 seconds, write to Pub/Sub thecompressed data, invoke the vision model and, if needed, the adjustment model, and then write back output from Cloud to the spider cam to relay to the fielder.

Show answer

Correct answer

  • B

    Compress the vision model and adjustment model to fit into the spider cam’savailable resource, and write pipelines to execute the models in the spider cam itself

Question 11

+2 marksOne correct option

Suppose there’s a new transformer model from Facebook that is orders of magnitude smaller than mobilenet_v2 and has a better F1 score. Will these lines of code still be required in the pipeline?

  1. A

    Yes, since they check the syntax of the model function so that there are noerrors

  2. B

    Yes, they invoke PyTorch libraries that have already been setup for modelscoring on GCP using APIs embedded within the function

  3. C

    No, since the primary function of these lines of code is to eliminate repeatedDL model loads as DL models are large in size

  4. D

    Yes, they are Map-style UDFs that make it an embarrassingly parallelcomputation thus making the execution parallelized and fast.

  5. E

    Yes, since the new model will potentially have large load times.

Show answer

Correct answer

  • C

    No, since the primary function of these lines of code is to eliminate repeatedDL model loads as DL models are large in size

Question 12

+2 marksOne correct option

You are given a Spark Streaming pipeline that invokes a pre-trained DL model for every image it receives as input and produces the classification result in quick time. The model with the best recall rate from the PyTorch library runs in under 3 seconds on an average, when executing on a GPU-powered Spark cluster. Your management has now instructed you to reduce the cost of AI projects significantly, and has given guidance that latency of execution is not a concern since the consumer for the model output is batch oriented, and also that they would be ok with a lesser recall rate provided the drop isn’t significant. What is the best option to explore first to meet the expectations?

  1. A

    Build a custom model that compresses the highest recall rate model justenough to be able to execute within a single Spark worker and thus reduce cost of the cluster.

  2. B

    Use a different DL model from PyTorch that has better efficiency at lesserrecall levels so that the cluster size can be minimized.

  3. C

    Remove complexity associated with Spark Streaming, remove GPUs to savesignificant costs, and convert the model execution pipeline into a single threaded Python application using traditional ML running on a CPU-only machine.

  4. D

    Change Spark machine to use CPUs and train a fresh pipeline to achieveobjectives.

Show answer

Correct answer

  • C

    Remove complexity associated with Spark Streaming, remove GPUs to savesignificant costs, and convert the model execution pipeline into a single threaded Python application using traditional ML running on a CPU-only machine.

Question 13

+2 marksOne correct option

Consider a Structured Streaming application running on Google Dataproc firing up every 10 seconds, consuming any number of records from Kafka available since last read, and emitting some computed answers to a NoSQL DB. Consider also that apart from the functional logic, the same application is also emitting into a file some log statements for debugging purposes meant for use by the developer of the application only in the event that something goes wrong but is otherwise not intelligible.
Assume there is a failure in one of the Dataproc machines that results in a failure of a specific run. For anybody consuming the NoSQL DB outputs, will they see any change in output as a result of the failure at all, or will the only visible impact of failure be of slower performance for the failed-and-retried run?

  1. A

    No, the failure is not visible to the consumers of NoSQL DB outputs, asStructured Streaming retries the mini-batch that failed thus taking maybe twice as much time as normal.

  2. B

    No, the failure is not visible since Structured Streaming uses transactions andidempotence to achieve exactly-once processing.

  3. C

    No, the failure is not visible since Structured Streaming can process the samedata in a retry resulting in the same outputs again.

  4. D

    Yes, the failure is visible because the side effect of logging for debugging willbe visible as repeated entries when Structured Streaming retries the failed batch.

  5. E

    Yes, the failure is visible since the logs in the backend of Spark StructuredStreaming are also logging the state of the machine.

Show answer

Correct answer

  • A

    No, the failure is not visible to the consumers of NoSQL DB outputs, asStructured Streaming retries the mini-batch that failed thus taking maybe twice as much time as normal.

Question 14

+2 marksOne correct option

Let us say we are using structured streaming for continuously reading data from Kafka and storing the results back into a Kafka topic using window function aggregates. Due to various reasons, the job did not run for 1 month. Now, we need to again continue the runs without compromising on the correctness of the results. What can you do that will take the least effort?

  1. A

    Code up a new batch processing job and process the 1 month of missed dataas a standalone job. Then, reactivate the structured streaming job once the latest date is caught up.

  2. B

    Code up a new batch processing job and process the 1 month of missed dataas a standalone job. Then, reactivate the structured streaming job once the latest date is caught up. But copy the code over from the current structured streaming job where the read and write commands will remain the same, but the remaining code will need to be modified, as operations on streaming dataframes are not supported on static dataframes.

  3. C

    Launch the structured streaming job using starting offset as that lastsuccessfully processed before the job went on hiatus, and launch in a streaming mode with a very high time frequency of repetition. This simulates a batch execution of the same logic so as to catch up for 1 month of data processing. Once done, relaunch the structured streaming using the earlier-used configuration parameters.

  4. D

    Code up a new batch processing job and process the 1 month of missed dataas a standalone job. Then, reactivate the structured streaming job once the latest date is caught up.But copy the code over from the current structured streaming job where the read and write commands need to be modified to specify that it’s a batch operation. Further, the specific logic of window functions will also need to be modified since there are no time windows anymore in batch processing.

  5. E

    Code up a new batch processing job and process the 1 month of missed dataas a standalone job. Then, reactivate the structured streaming job once the latest date is caught up. But copy the code over from the current structured streaming job where only the read and write commands need to be modified to specify that it's a batch operation.

Show answer

Correct answer

  • C

    Launch the structured streaming job using starting offset as that lastsuccessfully processed before the job went on hiatus, and launch in a streaming mode with a very high time frequency of repetition. This simulates a batch execution of the same logic so as to catch up for 1 month of data processing. Once done, relaunch the structured streaming using the earlier-used configuration parameters.

Question 15

+4 marksOne or more correct options

Observe the below image showing a possible implementation of Kafka or Google Pub/Sub and select the options that are true.

Observe the below image showing a possible implementation of Kafka or Google Pub/Sub and select the options that are true.

Select all that apply.

  1. A

    Each of the Consumers 1,2,3 and 4 gets all messages published into Topic.

  2. B

    Publisher 1 can safely send data only for Consumer Group 1’s consumptionwhile preventing access to Consumer 3 & 4.

  3. C

    Consumers 1 & 2 may not get every message published into Topic.

  4. D

    Each Publisher is able to have the guarantee that its messages are reliablystored in Topic and made available to every consumer / consumer group that needs it.

  5. E

    Consumer 3 gets all messages published into Topic.

  6. F

    Consumer Group 1 gets all messages published by Publisher 1.

Show answer

Correct answers

  • C

    Consumers 1 & 2 may not get every message published into Topic.

  • D

    Each Publisher is able to have the guarantee that its messages are reliablystored in Topic and made available to every consumer / consumer group that needs it.

  • E

    Consumer 3 gets all messages published into Topic.

  • F

    Consumer Group 1 gets all messages published by Publisher 1.

Question 16

+4 marksOne or more correct options

You are given the task of improving the performance of a Spark SQL program that is doing a simple count after a series of transformations. You suspect that the culprit is the main transformation job in the program. When you run EXPLAIN on that SQL, you see that Spark wrongly estimates that there are only 10 values for the key on which the main transformation job is hinged upon, whereas in reality the underlying data has a million values for that key. What actions would you perform from the below to increase the estimation accuracy?

Select all that apply.

  1. A

    Create all tables as external tables.

  2. B

    Ensure cost based optimizer (CBO) is ON.

  3. C

    Partition all tables on the same key on which the aggregate is happening.

  4. D

    Run ANALYZE on all tables to ensure the right estimates are available to theoptimizer.

  5. E

    Cache the table in a step with actions ahead of the SQL statement that is theculprit.

Show answer

Correct answers

  • B

    Ensure cost based optimizer (CBO) is ON.

  • D

    Run ANALYZE on all tables to ensure the right estimates are available to theoptimizer.

  • E

    Cache the table in a step with actions ahead of the SQL statement that is theculprit.

Question 17

+4 marksOne or more correct options

Which of the following are best practices associated with Streaming applications?

Select all that apply.

  1. A

    Use a message store that supports message replay so that no data is lost inprocessing.

  2. B

    In order to get “exactly once” data processing, it is sufficient that the messagestore supports transactional semantics of all-or-nothing operations.

  3. C

    Hadoop is best suited for executing Streaming applications.

  4. D

    Use checkpointing when faced with mission-critical workloads that require100% accuracy.

  5. E

    Handle state pollution by restarting the persistent store software periodically.

Show answer

Correct answers

  • A

    Use a message store that supports message replay so that no data is lost inprocessing.

  • D

    Use checkpointing when faced with mission-critical workloads that require100% accuracy.

Question 18

+4 marksOne or more correct options

What are some capabilities common to both “streaming processing” & “batch processing” when using Spark for big data?

Select all that apply.

  1. A

    Batch operates on data that typically has a static schema but can adjust tochanges in schema, and the same syntax will also help in streaming mode

  2. B

    Batch operates on a set of data elements taken together while streaming canalso operate on a set of data elements as determined by the window

  3. C

    Batch processing can assume data as fully specified and complete whilestreaming cannot make that assumption

  4. D

    Batch processing is typically high latency while streaming processing isnecessary for real-time latencies

  5. E

    Batch can operate on massively large data sets, while streaming can alsooperate on massively large data but expressed as streams

Show answer

Correct answers

  • A

    Batch operates on data that typically has a static schema but can adjust tochanges in schema, and the same syntax will also help in streaming mode

  • B

    Batch operates on a set of data elements taken together while streaming canalso operate on a set of data elements as determined by the window

  • E

    Batch can operate on massively large data sets, while streaming can alsooperate on massively large data but expressed as streams

Question 19

+4 marksOne or more correct options

Which of the following is true?

Select all that apply.

  1. A

    Subscribers to Google Pub/Sub can decide at what rate they want to consumedata without depending on or informing the publisher of the data.

  2. B

    Snapshots of source systems can be created using an event capture tool likeCDC and then replaying the events in sequence for that time period.

  3. C

    A shared-memory algorithm for a ML problem is one where the algorithmassumes that the memory available to it is shared with multiple other processes that run on the same machine.

  4. D

    A data lake is a collection of data to be provided as input for data sciencealgorithms.

  5. E

    Zookeeper is a library for ensuring that critical services used in big data areable to stay in sync with each other as to the health of those services.

  6. F

    Distributed model training is not practical since reducing estimation errorsrequires constant exchange of enormous information across the machines in the cluster.

  7. G

    Spark has support for declarative programming, functional programming aswell as procedural programming

Show answer

Correct answers

  • A

    Subscribers to Google Pub/Sub can decide at what rate they want to consumedata without depending on or informing the publisher of the data.

  • B

    Snapshots of source systems can be created using an event capture tool likeCDC and then replaying the events in sequence for that time period.

  • E

    Zookeeper is a library for ensuring that critical services used in big data areable to stay in sync with each other as to the health of those services.

  • G

    Spark has support for declarative programming, functional programming aswell as procedural programming