Showing posts with label science. Show all posts
Showing posts with label science. Show all posts

Monday, 1 June 2020

Java programming and OOP

Either to revise or as additional sources, the followins resources may help you with Java programming and OOP.

 Hope they will be useful to you!

Friday, 3 April 2020

ROM and RAMs

I found this great article on the differences between BIOS (basic input/output system) and EFI/UEFI (Unified Extended Firmware Interface), which are the contents of the ROM, which is actually flash memory, non-volatile and writable.

Something to note is that in this context of flash ROM, we could say that ROM means read-only, or not writeable, but from a user perspective rather than a hardware limitation. Updating the (ROM) BIOS/UEFI is a process handled by special applications (BIOS updaters or flashers) that check and update it, or may even be an advanced option offered by the UEFI/BIOS itself.

Althogh the concept of RAM (Random Access Memory), the primary storage keeping instructions and data to be used by the processor, is not tough to grasp, the difference between static and dynamic RAM is a bit tougher. Watch this great video explaining below. Credits go to H3Vtux.



You may also want to watch TechQuickie's "Different Kinds of Memory as Fast As Possible":

And finally, this nice quizlet cards may help you revise the topic of Computer Organisation.

Tuesday, 3 December 2019

Lexicographical Order

This refers to the way strings and characters are alphabetised and compared.

In Java, you need to understand lexicographical order to properly implement (and debug) sorting algorithms.

The page below has the best, most concise and practical explanation I have found so far:

Monday, 22 April 2019

IB Final Papers Revision

Just a last reminder to help you prepare for your IB final papers.

Best luck in your revision and finals!

Sunday, 21 April 2019

Computer Networks

Best of YouTube videos on Computer Networks

Some of these links, rather than pointing to individual videos, will take you to YouTube channels containing many videos on the topic. Note that some videos or parts of a video may not be relevant to your specific syllabus or needs.

Big O notation

Best of YouTube videos and links on Big O notation

Hope these videos help. Remember to check your textbooks as well! You may also want to read chapter 14 of Big Java Late Objects (Horstmann) and chapter 15 of Java Illuminated (Anderson and Franceschi).

Monday, 31 December 2018

Warm up to Computer Science

These resources will help you practice and strengthen your Computer Science and practical programming skills. Multiple links are provided to cover a wider range of backgrounds, experience and needs.

Python is a great first programming language to learn for beginners, and Java is second to none to learn OOP and intermediate to advanced programming concepts. Java is a must for computer science students, and is also the prescribed programming language for the IB Diploma Programme Computer Science course with the Object Oriented Programming (OOP) option.

Good luck!

Theory/General Knowledge:
Practical aspect: Programming

Free eBooks recommended:
A few of the best reference sites about Java programming are

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

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.

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