Monday 30 October 2017

Technology and ethics

A very interesting article on drones... What price progress indeed.

http://www.bbc.com/news/business-41737300

The comments and reflection are up to you. Pros and cons as it is usual with technology.

Friday 6 October 2017

Wednesday 4 October 2017

UML Class Diagrams in a Nutshell

...A really small nutshell.

This webpage contains a nice, short and sweet explanation and side-be-side comparison between a class diagram and its corresponding Java code. Priceless.

Source: http://pages.cs.wisc.edu/~hasti/cs302/examples/UMLdiagram.html

Sunday 10 September 2017

Get back the command prompt in Windows 10

If you've updated your Windows 10 system to the Creators Update (or newer), you may have noticed that the contextual menu (shift+right click) inside a folder has changed.

PowerShell has replaced the command prompt by default, which was an issue for me as I (still) rely heavily on the old command line interface.
The instructions I followed to fix this issue can be found at

Hope you find this as useful as I did.

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”)
  • 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

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:

Wednesday 22 March 2017

Network and security

A very comprehensive glossary of network terms, obviously not all required for our examinations and syllabus, but they are extremely valuable.
Also, links to how stuff work's networking and security.

Although you don't need to memorise the OSI reference model, awareness of the layered nature of networks is very important.
And finally, a slideshow on error detection and correction:


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