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…

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…