- http://creately.com/blog/diagrams/class-diagram-relationships/ focus on association, composition/aggregation (depends on your IA), multiplicity and inheritance. http://www.infoworld.com/article/3029325/application-development/exploring-association-aggregation-and-composition-in-oop.html (link title explains itself)
Mostly Computer Science-related topics and resources, especially Linux and education (IB, IGCSE).
Tuesday, 6 June 2017
Class Relationships
Please read these two resources to have a better understanding of class relationships
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.
- http://codebetter.com/raymondlewallen/2005/07/19/4-major-principles-of-object-oriented-programming
- http://beginnersbook.com/2013/03/oops-in-java-encapsulation-inheritance-polymorphism-abstraction/
- http://www.javaworld.com/article/2076204/core-java/understanding-constructors.html
- http://pages.cs.wisc.edu/~hasti/cs302/examples/UMLdiagram.html
- http://etutorials.org/Programming/UML/Chapter+4.+Class+Diagrams+The+Essentials/
- http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Aggregation+and+Composition/
- http://www.uml-diagrams.org/class-diagrams-overview.html
- http://creately.com/blog/diagrams/class-diagram-relationships/
- http://www.infoworld.com/article/3029325/application-development/exploring-association-aggregation-and-composition-in-oop.html
- http://pages.cs.wisc.edu/~hasti/cs302/examples/UMLdiagram.html
- http://www.tutorialspoint.com/uml/uml_class_diagram.htm
- http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
- dependency (“uses”)
- aggregation (“has a”) and
- inheritance (“is a”).
- http://www.conceptdraw.com/How-To-Guide/uml-class-diagram-notation
- https://en.wikipedia.org/wiki/Class_diagram
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:- GCSE Bytesize (Instructions)
- The Fetch–Execute cycle and the role of registers within it (A level Computing WikiBook)
- Also known as the Instruction cycle (Wikipedia article)
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.- https://visualgo.net/ - excellent interactive animated sorting algorithms out there
- http://www.sorting-algorithms.com - sorting algorithm animations, discussed
- https://www.geeksforgeeks.org/fundamentals-of-algorithms/ self-explanatory
- http://xoax.net/comp_sci/crs/algorithms/ - concise and well illustrated videos about different algorithms.
- http://www.cs.armstrong.edu/liang/animation/ - animations on algorithms, plus data structures and other topics.
- https://www.youtube.com/user/AlgoRythmics/videos - algorithms illustrated with European traditional folk dances
- https://www.geeksforgeeks.org/linear-search/
- https://www.geeksforgeeks.org/binary-search/
- https://youtu.be/wNVCJj642n4 (Both)
- https://youtu.be/vZWfKBdSgXI (Linear search only)
- https://youtu.be/CX2CYIJLwfg (Linear search only)
- https://youtu.be/5xlIPT1FRcA (Binary search only)
- https://youtu.be/D5SrAga1pno (Binary search only)
- https://www.geeksforgeeks.org/bubble-sort
- https://www.programiz.com/dsa/bubble-sort
- https://youtu.be/yIQuKSwPlro
- https://youtu.be/UnK5ueUgc88
- https://youtu.be/y_Nuui4Qf-k
- https://youtu.be/P00xJgWzz2c
- https://www.geeksforgeeks.org/selection-sort
- https://www.programiz.com/dsa/selection-sort
- https://youtu.be/f8hXR_Hvybo
- https://youtu.be/79AB11J5BqU
- https://youtu.be/TW3_7cD9L1A
- https://youtu.be/Aq2E47uU2ao
- https://youtu.be/6nDMgr0-Yyo
- https://www.geeksforgeeks.org/insertion-sort
- https://www.programiz.com/dsa/insertion-sort
- https://youtu.be/c4BRHC7kTaQ
- https://youtu.be/JU767SDMDvA
- https://youtu.be/OGzPmgsI-pQ
- https://youtu.be/OxN2Jqb8S9s
- https://youtu.be/Fr0SmtN0IJM
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:
- http://www.algolist.net/Algorithms/ - various algorithms (sort, binary search) and programming concepts (recursion) explained
- 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)
- 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.) Stacks and Queues
Binary Search Trees
Resources about Abstract Data Types:
- http://www.webopedia.com/TERM/A/abstract-data-type.html
- http://www.csanimated.com/animation.php?t=Abstract_data_type
- http://www.csanimated.com/animation.php?t=Stack
- http://www.csanimated.com/animation.php?t=Queue
- http://www.csanimated.com/animation.php?t=Linked_list
- http://visualgo.net/en/list.html - animated ADTs (linked list implementations)
- Chapter on Linked Lists, from the same site as #2 in the previous list of links ;-)
- http://www.algolist.net/Data_structures/ - well explained and clear diagrams
- HackerRank's algorithms YoutTube playlist
- HackerRank's data structures YoutTube playlist
-
mycodeschool's YouTube playlist on data structures. Examples are in C/C++, but their explanations and diagrams are great!
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
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
Obviously, integer should be replaced by the appropriate data type.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)
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
...then you'd use it likedeclare A as integer array of size [ ][ ]
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:
- http://javabeginnerstutorial.com/core-java-tutorial/java-array-tutorial/ to start with
- http://www.homeandlearn.co.uk/java/java_arrays.html excellent site, from start to end; includes 2D arrays and much more
- http://introcs.cs.princeton.edu/java/14array/ great resource with many examples, but more complex
- Also, it is highly recommended to study Big Java Late Objects (Horstmann, 2013) - chapter 6: Arrays and Array Lists
- http://www.willamette.edu/~gorr/classes/cs231/lectures/chapter9/arrays2d.htm
- http://math.hws.edu/javanotes/c7/s5.html
Subscribe to:
Posts (Atom)
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 ...
-
Lenovo Ideapad S10-3 If you have a Lenovo Ideapad S10-3 (depicted above), and you want to test or install shiny new Ubuntu 10.10 on it,...
-
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 ...
-
In order to program in Java, you may want to follow the instructions and videos that I have prepared. They are simle and straightforward, an...

