Finite Groups featured image

Finite Groups

In this post we provide the definition of finite groups and we show a few examples meaningful for cryptography and blockchain Def. Finite Groups Def. A group is a set together with an operation combining two elements of , which satisfies the following properties: Closeness: The group operation is closed: Read more…

Cryptography

This post is a collection of basic topics needed for a proper understanding of Cryptography. Cryptographic Systems Primal goal: allow two people to exchange confidential information even if they can only communicate via a channel monitored by an adversary Symmetric Cryptosystem A 5-tuple Where are sets of possible keys, messages, Read more…

Binary Search

Binary search is an algorithm to find the position of a target value within a sorted array by recursively halving the number of candidates. Assuming we have a sorted array with n elements, we can binary search a target element in logarithmic time, O(log(n)).  Binary Search Algorithm To perform a Read more…

Mergesort

Mergesort Mergesort is an efficient and widely used sorting algorithm. Stable sorting algorithm: preserves the order optimal time complexity: N log N in all cases suboptimal in space usage: usage of an extra array for merging Usage examples: Sorting Linked Lists when space is not a concern. Java default algorithm Read more…

Java Array Exercises

This article contains a series of exercises on java arrays, including resizing array implementation, merging sorted arrays, etc.. Resizing-array implementation A Java ArrayList is a resizable-array implementation of the List interface providing amortized-time for insertion of O(1). Exercise: implement a ResizingArray class providing O(1) amortized-time for insertion. Growing the array Read more…

Algorithms

Sorting, searching, and binary search Divide-and-conquer Dynamic programming and memorization Greedy algorithms Recursion Graph traversal, BFS and DFS Sorting Main algorithms presented Mergesort: Java sort for Objects Quicksort: Java sort for primitive types Heapsort Mergesort vs Quicksort vs Heapsort All these algorithms have O(N log N) average time complexity, though Read more…

Data Structures

Good knowledge of common data structures is needed in computer science. This article describes common data structures, and present cost and benefits. Lists A List is an abstract data type representing a finite collection of ordered elements. Typically, a List is allocated dynamically depending on the implementation. For example, Array-based Read more…

About Algorithms

Knowledge of algorithms and data structures is important for Software Engineers. To be good at solving problems you need practice. Here is some resource to make practice, and suggestions. Posts about Algorithms Below, you see the list of my posts about algorithms [catlist name=”algorithms”] Sites Sites to practice and learn Read more…