welcome everyone to topic seven algorithm design and problem solving this is video one and this starts us on our journey through paper two in the igcse and all-level computer science course for this first video we're going to be looking at ways to understand the program development life cycle but we're going to limit this to the analysis the design the coding and the testing what do i mean by that this is the program development life cycle and as you can see it's broken up into six stages we've got the program definition we've got the problem analysis we've got the algorithm development coding and documentation testing and debugging and maintenance but we're going to break this down into four we're going to be focusing on number two number three number four and number five so first of all we are going to look at analysis problem analysis which is basically the abstraction the decomposition of the problem the identification of the problem and the requirements basically we're going to be computational thinking then we're going to look at the design the decomposition but we're going to produce structure diagrams flow chart pseudo code to enable us to think about how exactly we're going to code this we're going to move on to coding whereby we're writing the program code itself we're going to carry out some testing in this case some iterative testing to ensure it's working correctly then we move on to the testing and debugging section whereby we're testing the program code with the use of specific test data pertinent to the actual problem so let's take this first step we're going to be looking at the problem analysis before any problem can be solved it must be clearly defined so that everyone working on the solution understands what is needed this is called problem definition or requirement specification and for the program so we'll look in number one this is called computational thinking in terms of the problem analysis phase we're going to be using abstraction pattern recognition and decomposition tools to identify exactly what is required of the program so what is abstraction let's have a little bit of a recap what is abstraction this is a process of filtering out ignoring the characteristics of patterns that we don't need in order to concentrate on those that we do it is also the filtering out of specific details this allows us to create a general idea of what the program is and how to solve it the process instructs us to remove all specific detail and any patterns that will not help us that will not help us solve our problem this helps us form our idea of the problem well what does that mean let's have a little look i'm going to take for example a little subject here a dog okay so what are specific details or characteristics in pattern recognition we're looking at the problem of having to draw a series of dogs we noted that all dogs have general characteristics which are common to all dogs eg their eyes a tail fur a liking for sniffing other dog's bottoms and the ability to make barking sounds in addition each dog has specific characteristics such as black fur a long tail green eyes a love of fetching sticks a loud bark these details are known as specifics in order to draw a basic dog we do need to know that it has eyes a tail fur because these characteristics are relevant we don't need to know what sound a dog makes or that it likes chasing cars and retrieving sticks these characteristics are irrelevant and can be filtered out we do need to know that a dog has a tail fur and eyes but we don't need to know what size and color these are these specifics can again be filtered out from the general characteristics we have tail fur eyes we can build a basic idea of a dog i.e what a dog basically looks like once we know what a dog looks like we can describe how to draw a basic dog not that this tug there we go i put a little eye on for the dog there decomposition this does form part of the computational thinking and the problem analysis decomposition breaks down a complete problem into smaller parts basically you may have come across the term chunking and this is what we're doing here which can then be broken down into even smaller parts that can be easily solved each daily task can be divided into individual parts such as getting ready for school we get out of bed we get dressed we clean our teeth we go and have breakfast we make sure our school bag is packed we get the school bus and we go to school we move on then to number three which is the design the algorithm development a program specification from the problem analysis stage is used to show how the program should be developed when the design stage algorithm development is complete the programmer should know what is to be done i.e all the tasks that need to be completed and how each task is to be performed including how the tasks will work together this can be formally documented using structured charts flowcharts and pseudo code so once we've got all that established once we've got a basic structure of what the program is going to look like we think we can then move on to the coding and the documentation at this stage program or set of programs is developed each module or part of the program is written using a suitable programming language and then it will be tested to see if it works iterative testing is done which means that modular tests are conducted code is amended and tests repeated until the program performs as it is required we then move on to testing and debugging so we've got a working program but the now completed program or set of programs is run over and over again many times with different sets of test data this ensures that the task or rather all the tasks are debugged and work is completed in line and are specified in the program design so we've gone from here all the way around to here we now have a final program that works and has been tested and meets the requirements of the specification that's all i'm going to cover in this video that is it we have tackled the program development life cycle okay thank you very much indeed for watching i will see you again next time in video 2. please continue to ask questions leave your comments hit notifications and please subscribe and finally if you wish to buy me a coffee i'd be truly grateful please visit buy me a coffee.com forward slash learning zone thank you very much indeed see you next time bye for now