Tuesday 25 April 2017

FDE Cycle

Fetch-Decode-Execute Cycle

Links with information about the FDE cycle, from simple & concise to deeper and more detailed:
An excellent flow chart depicting the FDE cycle (original source https://en.wikipedia.org/wiki/Instruction_cycle):


Plus a nice animation demonstrating how the fetch-decode-execute cycle works, made using Scratch:

I have also made my own, simplified version for study and revision purposes:

Monday 24 April 2017

Sorting and Searching Algorithms

Resources, animations and videos of sorting and searching algorithms:

The following links point to videos and video channels showing animations of different sorting algorithms. More than one video is provided so that you may pick the one you understand best. You could also build your understanding from a few sources as well.
Sequential (Linear) and Binary searches:
Bubble sort:
Selection sort:
Insertion sort:

https://www.geeksforgeeks.org/comparison-among-bubble-sort-selection-sort-and-insertion-sort/

Sunday 23 April 2017

Algorithms and Abstract Data Types HL

Resources about various algorithms - Higher Level:

  1. http://www.algolist.net/Algorithms/ - various algorithms (sort, binary search) and programming concepts (recursion) explained
  2. From this link, be sure to revise the sequential and binary searches, plus the chapters on sorting algorithms and recursion (code examples are on Python, which means it's close to pseudocode, but you can run it if you have the Python 3 interpreter)
  3. http://introcs.cs.princeton.edu/java/40algorithms/ - an excellent chapter on Algorithms and Data Structures; there was a performance question in a recent past paper, so it may be a good idea to read 4.1 (performance) as well. Don't obsess over Tilde notation and skip memory usage as well. Our focus is to be aware of how some algorithms are more efficient than others (as you can see by their classification into their order of growth: constant, logarithmic, linear, quadratic, cubic, exponential, etc.)
  4. Stacks and Queues
    Binary Search Trees

Resources about Abstract Data Types:


2D Arrays and IB Pseudocode

This brief post shows how to create a bi-dimentional array and describe it using IB pseudocode. It isn't stated in the IB Pseudocode in Examinations or Approved notation for developing pseudocode documents, so it's my answer to it, not an official one. Don't sue me if your examiner disagrees with me! O_o
declare A as integer array of size [ROWS][COLUMNS] or
declare A as integer array of size (ROWS, COLUMNS)
declare A as integer array of size [5][6]
declare A as integer array of size (5, 6)
Obviously, integer should be replaced by the appropriate data type.
IB papers may have defined it for you, or they may not ask you at all to define the size. You could define it (unknown size) as
declare A as integer array of size [ ][ ]
...then you'd use it like
loop ROW from 0 to 5
    loop COL from 0 to 6
        output A[ROW][COL]     or    output A(ROW, COL) 
    end loop
end loop
I'd recommend going for the [ ][ ] style as it'd be more consistent with the single dimensional arrays described in the IB pseudocode documents mentioned above.

Arrays and Java

Just a short post with pretty much all you need to know about arrays in Java:
Below are some additional links about arrays and 2D arrays:

Optimise Windows 10/11

How to optimise your Windows setup Just in case you need it. If you want a safe and conservative approach, just disable the background apps ...