Introduction | Notes c_const_test.c |
Declarative Model |
Outline |
Exceptions |
Exceptions |
Unification |
Unification |
Declarative Programming Techniques- Tail
Recursion, Follow. the grammar |
declarative- programming |
Declarative Concurrency - Introduction, Semantics | declarative-concurrency
Thread.oz |
Declarative Concurrency-Threads | |
Erlang - Sequential Programming, Concurrent Programming | erlang |
Erlang - Concurrent Programming (contd.) | |
Object-Oriented Programming | oop Java 1.4 Polymorphism |
Type Inference | tinf |
Creating computer software is always a demanding and painstaking process -- an exercise in logic, clear expression, and almost fanatical attention to detail. It requires intelligence, dedication, and an enormous amount of hard work. But, a certain amount of unpredictable and often unrepeatable inspiration is what usually makes the difference between adequacy and excellence.
Tuesday, 11 June 2013
Concepts, Techniques and Models of Computing
Some fact about Complexity, Algorithms, Cryptography
Computational Complexity
- Do we need an exponential number of states to simulate a two-way nondeterministic finite automaton by a deterministic one?
- What is the minimum parallel time required to solve some specific problems using a given number of processors?
Algorithms
I am working on designing new sequential and parallel algorithms, and improving existing ones, to solve various computational problems such as: graph isomorphism, membership in permutation groups (generalized Rubik's Cube), network flow, matching in graphs, Boolean matrix multiplication, and connectivity of graphs.
Recently, I have been concentrating on the following problems.
Dynamic graph algorithms. These are algorithms which solve problems in which the input graph keeps changing; e.g. edges are inserted and deleted or weights are increased or decreased. The goal is to maintain the solution in such a way that the changes in it can be found faster than resolving the problem from scratch.
String processing algorithms with applications to molecular biology. There exist computational problems associated with the human genome project where algorithmic improvements are possible. An area were considerable progress has already been achieved is the speed up of various dynamic programming techniques.
Cryptography
Various number theoretic problems, such as factoring of integers, primality testing, discrete logarithms and quadratic residuocity, are used as a basis for public key cryptosystems. The security of such crpytosystems therefore depends on the complexity of these problems. A deeper understanding of the complexity of these problems can help in reasoning about the security of the cryptosystems.
Currently, proving the correctness and security of cryptoprotocols is hard. I am working on general techniques that can be applied to constructing protocols for which it is possible to prove things about.
Automaton Simulator
Finite State Automation Applet is an automaton simulator, similar
to JFLAP. Requires Java.
Analysis of Algorithm
Introduction, RAM model, Worst-case complexity I Asymptotics | Note 1 | ||
Asymptotics, Induction, Divide and conquer, Merge sort Recurrence, Recursion tree |
Note 2 | ||
Binary search, Powering, Matrix multiplication, Strassen's algorithm, Master theorem |
Note 3 | ||
Randomized algorithms, Quicksort and its analysis |
Note 4 | ||
Randomized Quicksort | Note 5 | ||
Selection in linear time, and Lower bound on comparison sorts |
Note 6 | ||
Counting sort and Radix sort Hash tables and hash functions |
Note 7.1 Note 7.2 |
||
Universal hashing | Note 8 | ||
Perfect hashing and Binary search trees |
Note 9.1 Note 9.2 |
||
Red-Black trees | Note 10 | ||
Augmenting data structures Order statistics, Interval trees |
Note 11 | ||
Greedy algorithms Activity selection |
Note 12 | ||
Greedy: Huffman trees, Dynamic programming: Rod cutting |
Note 13 | ||
Dynamic programming: Longest common subsequence |
|||
Midterm in class | |||
Dynamic programming: Optimal binary search tree; midterm problems |
Note 14 | ||
Amortized analysis | Note 15 | ||
Graphs and Breadth-first search | Note 16 | ||
Breadth-first search and its correctness | See Note 16 | ||
Depth-first search and Topological sort | Note 17 | ||
Strongly connected componentsMinimum spanning tree: the generic method | Note 18 | ||
Minimum spanning trees: Kruskal and Prim |
Note 19 | ||
Single-source shortest path: Bellman-Ford and Dijkstra |
Note 20 | ||
All-pairs shortest paths | Note 21 | ||
Maximum Flow: Ford-Fulkerson | Note 22 | ||
Edmonds-Karp, and Maximum bipartite matching |
Note 23 | ||
NP-completeness | Note 24 | ||
NP-completeness | Note 25 | ||
Subscribe to:
Posts (Atom)