Tuesday, 6 June 2017

Class Relationships

Please read these two resources to have a better understanding of class relationships
For more resources on the principles of OOP and UML diagrams, click here.

OOP Principles and UML

These are my favourite explanations (so far) regarding the principles of OOP: Abstraction, Encapsulation, Inheritance and Polymorphism. They are most important to understand and remember, so study and practice them well. The links have page names (at the end of the link) that are self-explanatory.
UML provides so many tools, that it can be overwhelming. So it is always useful to narrow it down and focus on what is useful for a specific task. The following resources are on UML class diagrams. You are also recommended to look into use-case diagrams, which are great for conceptual designs.
In terms of class relationships, you should know (according to the IBO syllabus content)
  • dependency (“uses”) -- [ some sources may call it composition ]
  • aggregation (“has a”) and
  • inheritance (“is a”).
You may find the following links useful to revise these concepts. Just focus on what IBO requires among all the detailed information provided.

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

Algorithms 2017

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:

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.)

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!
define A as array of size [ROWS][COLUMNS] or
define A as array of size (ROWS, COLUMNS)
define A as array of size [5][6]
define A as array of size (5, 6)
Usually IB papers will have defined it for you, or they may not ask you at all to define the size. You could define it (unknown size) as
define A as 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:

Class Relationships

Please read these two resources to have a better understanding of class relationships http://creately.com/blog/diagrams/class-diagram-rela...