Asymptotic, best-case, worst – case, average – case analysis of algorithms. Algorithm design techniques: Greedy techniques, amortized
analysis. Complexity classes P and NP, NP – completeness, approximation algorithms, cryptographic algorithms, distributed algorithms.
The study of the functional programming paradigm, procedural versus functional paradigm; efficient function handling, structured
memory. Heap management, garbage collection. Limitations of conventional von Neuman machines on functional programming. Laboratory
exercises in a functional programming language.