Problem Solving Discussion

Task: How can you drop an egg from a height of 3 meters without breaking it?

Steps taken in solving the problem

Information gathering

What are the constraints?

The ground must be hard, no adding of sand

No use of Drones

No use of Parachutes.

Definition of problem : Drop an uncooked egg from 3m high onto hard ground without breaking it.

Brainstorming

The process of generating ideas to solve the problem

Identification of resources

Determine what is needed for EACH solution. e.g rubber bands, string , balloons etc.

Evaluation of pros and cons of multiple solutions

Compare each solution across similar criteria:

e.g. availability of resources, cost, how well each solution is expected to solve the problem, the complexity of the solution.

Determining most feasible solution.

After we have thoroughly evaluated the solutions, we choose one of them and implement it.

© 2021  Vedesh Kungebeharry. All rights reserved. 

Relational Operators – A practical Exercise

Pre-Requisite : Read (Campbell, Information Technology for CSEC – 3rd Edition, 2020, pp. 272-273)

Observe the attached flowgorithm file, or the pseudocode below:


Start 
    // Here we set up 2 numbers to experiment with our relational operators....
    FirstNum = 7
    SecondNum = 5
    
    // Comparison: First number is greater than second number
    greaterThan = FirstNum > SecondNum
    output "' " + FirstNum + " is greater than " + SecondNum + " ' evaluates to " + greaterThan
    
    // Comparison: First number is greater or equal to second number
    greaterThanOrEqualTo = FirstNum >= SecondNum
    output "' " + FirstNum + " is greater than or equal to " + SecondNum + " ' evaluates to " + greaterThanOrEqualTo
    
    // Comparison: First number is equal to second number
    equalTo = FirstNum = SecondNum
    output "' " + FirstNum + " is equal to " + SecondNum + " ' evaluates to " + equalTo
    
    // Comparison: First number is not equal to second number
    notEqualTo = FirstNum ≠ SecondNum
    output "' " + FirstNum + " is not equal to " + SecondNum + " ' evaluates to " + notEqualTo
    
    // Comparison: First number is less than second number
    lessThan = FirstNum < SecondNum
    output "' " + FirstNum + " is less than " + SecondNum + " ' evaluates to " + lessThan
    
    // Comparison: First number is less than or equal to second number
    lessThanOrEqualTo = FirstNum <= SecondNum
    output "' " + FirstNum + " is less than or equal to " + SecondNum + " ' evaluates to " + lessThanOrEqualTo
Stop

The flowgorithm file or the pseudocode above should output:

‘ 7 is greater than 5 ‘ evaluates to true
‘ 7 is greater than or equal to 5 ‘ evaluates to true
‘ 7 is equal to 5 ‘ evaluates to false
‘ 7 is not equal to 5 ‘ evaluates to true
‘ 7 is less than 5 ‘ evaluates to false
‘ 7 is less than or equal to 5 ‘ evaluates to false

Task:

In your notebook or personal notes, determine the output of the algorithm when FirstNum and SecondNum Is updated as follows:

  1. FirstNum=6 , SecondNum=7
  2. FirstNum=7 , SecondNum=7
  3. FirstNum=7 , SecondNum=6
  4. FirstNum= -6 , SecondNum= -7

© 2021  Vedesh Kungebeharry. All rights reserved. 

Scheduling Algorithms

First Come First Serve or Non-pre-emptive Scheduling.

The CPU can run processes in the process queue (in  ready state) one at a time for a  “burst” at a time in a first come first serve fashion.  This is known as non pre-emptive scheduling, since no determination is made into the most efficient order to run processes on the CPU.

It should be noted that the amount of time that a process might stay on the CPU could be very long when compared to others in the queue. This is because a “burst” might  a sequence of CPU and IO instructions the process executes without interruption form the CPU scheduling algorithm .  The process is only moved from execution on the CPU when a I/O operation occurs that causes the process to be put in wait mode, or, it terminates.

Having other processes wait exceedingly long is not desirable, and todays modern operating systems do not implement FCFS. 

FCFS scheduling does have the advantage of being easier to program and implement; but this advantage does not outweigh the performance of an efficient process scheduler.

FCFS scheduling is also prone to race conditions, where 2 processes need to read from the same section in memory and end up producing inconsistent data.  See here for a good explanation:

https://stackoverflow.com/questions/3130079/difference-between-racearound-condition-and-deadlock

Shortest Job First or Pre-Emptive scheduling

This scheduling algorithm examines each process to determine the length of time that is needed for on the CPU.  The algorithm then places processes with the shortest estimated time to be executed as priority.

Round Robin Scheduling

This is very similar to FCFS scheduling , only this time each process is given a fixed maximum time to be executed on the CPU.  If the process exceeds the time, it is put in wait mode and added to the end of the queue.

© 2021  Vedesh Kungebeharry. All rights reserved. 

Algorithms

Definition: An algorithm is a set of finite, well defined steps which outlines the solution to a specific problem.

Alternative Definition : WHAT IS AN ALGORITHM? – DEFINITION

We use algorithms every day to solve problems, weather we’re conscious of it or not.

When we cook a new dish we follow a recipe, when we solve a math problem we follow a procedure.

In our case, we’d like to document the solution to a specific problem using an algorithm so that we can communicate it to a programmer , or create the tool  as a program itself.

We use algorithms, but what are the properties of a good algorithm?

I’m sure you’ve come across bad algorithms already –

  • Vague recipe instructions, what exactly is 2 cups of flour?
  • A videogame walkthrough that isn’t descriptive enough
  • A video tutorial that talks  a lot about becoming a youtuber , but the steps aren’t outlined in order.

What are the properties of good instructions, good algorithms?

Properties of good algorithms

  • Has a  finite number of steps ( a definite beginning and an end)
  • Is precise,
  • Is unambiguous (not subject to interpretation)
  • Shows the flow of control from one sub-process to another
  • Must output results
  • It must terminate.

© 2021  Vedesh Kungebeharry. All rights reserved.