Computer Science Notes

Warning

Rough Notes

GRE Scores and Academia

  • General Test Scores: Verbal: 530. Quants: 780. AWA: 4.0
  • TOEFL Scores: Reading: 29, Listening: 28, Speaking: 28, Writing: 22, Total: 107
  • Bachelor of Engineering, Computer Science. 1998-2002. Final Percentage: 77.3%

GRE General Test Scores:

  • Date: 05-08
  • Registration # 6634-905

Verbal : 530 - Below 68% Quantitative: 780 - Below 90% Analytical Writing: 4.0 - Below 33%

Test Scores:

TOEFL Internet Based Test:

Registration: 0000 0000 0587 7817 Test Date: 03 August 2008

TOEFL iBT Scaled Scores:

Reading 29 Listening 28 Speaking 28 Writing 22

Total 107

GRE Subject Test

Test Date: 11/08.08 COMPUT SCI

Score Recipients Requested

Graduate Institution Department

4833 0402 5248 0402 2074 1201 4704 0402

Score: 530. Percentile: 08%

http://edulix.com/infobank/index.php Edulix Info Banks

Nov 09

Registration Number 4614110 Test Center Number 10044 Test Date: 11/07/09

Name: Senthil Kumaran

Deadlines

  1. University of Washington - December 15 http://www.cs.washington.edu/education/grad/prospective.html
  2. University of California - Jan 15 http://www.ics.uci.edu/grad/admissions/index.php
  3. Carnegie Mellon University - Software Engineering

All applications must be submitted by midnight on Dec. 15 EST. No exceptions will be made.

http://www.cmu.edu/prospective/graduate.shtml https://www.ece.cmu.edu/prospective/graduate/application/ - Dec 15

  1. MIT - Media Lab and Algorithms Group - Dec 15 https://apply.eecs.mit.edu/ http://web.mit.edu/admissions/graduate/how_to_apply/application_deadlines.html http://www.pmg.lcs.mit.edu/ Media Lab - Dec 15 https://www.applyweb.com/apply/mitg/menu.html

  2. University of Toronto - 7 December 2009. http://web.cs.toronto.edu/Page4.aspx https://apply.sgs.utoronto.ca/home.aspx

  3. Texas A & M - (Tentative - 15 Dec 2009)

  4. Rochester Institute of Technology - July 1

    http://www.rit.edu/emcs/ptgrad/grad_admission.html

    http://www.nssa.rit.edu/?q=node/33

  5. University of Delware - Fall: February 1 & July 1 http://www.udel.edu/gradoffice/apply/index.html

  6. University of Masachusetts Armhest http://www.umass.edu/gradschool/prospective_students_deadlines_for_application.htm

  7. Universtiy of Portland - February 1. http://www.up.edu/admissions/default.aspx?cid=8079&pid=2171

  • California Institute, Parsadena, CA
  • Univ of CA, Santa Barbara.
  • Univ of C, Davis.
  • OSU

Statement of Purpose

  1. New way of expressing things is research.
  2. Teaching - I have conducted a number of programming contests and provided rigourous feedback to students, who attended the programming contests.
  3. Listened to Lectures of Shai Simonson and was inspired by his way of teaching computer science which essentially focussed on getting an insight and getting the right intuition of the problem and then spending time on the problems and coming up with solutions.
  4. Self Study of number of subjects. For e.g, I had undertaken solving all problem in K&R and published those code in a website and constantly improved them.
  5. Self Study of Computer Science in aduni.org, especially Prof Shai Simonson’s lectures in Algorithms, Theory of Computation and Discrete Maths.
  6. Interest in mathematics and problem solving. I have been constantly improving my topcoder ratings. I got to know about Univeristy of Toronto from topcoder winner only.
  7. Gerry Sussman’s lectures on Computer Science. The kind of thought process which is required to be an outstanding educator like Dr. Sussman.
  8. Researched on concurrency concepts and selected a deferred based concurrency system for implementing a multi-threaded server as part of my work at Akamai.
  9. Understanding the nature of knowledge. This interest was due my close association as a mentor for many students from Spastics Society of Karnataka and I could help them identify areas they were good at. I taught Lego Mind Storms NXT kit and Alice Programming.
  10. Research on technologies that are helpful to people. I have studied and used Dasher for an alternative text input system. Researched a lot in Voice Recognition and have used it for providing a good computing interface for people which disability and who could operate computers which voice.
  11. Interests in different programming languages. C, C++. The languages that I have taught myself includem Python ( which I have gained sufficient expertise to become a core-contributor), Java, Perl, lisp, vim-script, shell script, brainfuck and Alice. Common denominators within all the languages and the subtle differences in the languages.
  12. Learnings from Python include - Be respectful of others and be honest. There are many technical skills I have learnt from the developers of Python, but following the Guido Van Rossum, lead in the project and his direction for other developers, these soft-skills come to an utmost important for working with a diverse group of developers.
  13. Invention of Languages from historical perspective and listening to Dr.Gerry Sussman, I learn that development of language is the very essence of human advancement.
  14. I have known some Industry researches who have decided to puruse PhD after a brief stint at work. They have returned back to Industry to contribute a lot to development of technologies. I am interested in research and like to understand more on topics concerning multiple industries, try to understand some of the problems and come up with satisfying solutions that could be helpful to many people.
  15. Study of Certificate Courses at Indian Institute of Science, that gave me time to do an sincere work with problems and solutions, have an idea on how Cryptography is used in Industry and work out the mathematics behind the Cryptography Problems as part of the course also utilize my programming skills to implement two person games using AI algorithms.
  16. I have stood 8th in the class of 65 and what I remember most of my college is, I stood first in many programming contests and all my programming assignments were correct.
  17. I have earned four Patent assignments related to my work. The technologies were devised/Invented 3-4 years before any of the base technology ever reached the mainstream media.
  18. Used accessibility software like sceen magnifier.
  19. Uthcode is project which is part of my life and working on it for than 6 years.
  20. Patent on Distributed Download mechanism in Blu Ray is a techology adoptation in Blu-ray with a some of exsiting networking algorithms.
  1. A Good Computer Scientist will combine both practise and theory to explore the truth.
  2. Career devoted to the development of Computer Science.
  3. I find the distinct relationship between the various areas of computer science and I specifically find interests in Algorithms, Theory of Computation, Distributed Systems and Networking.
  4. My specific areas of interests are Theory of Computation, Discrete Mathematics and Algorithms. I find that Theory of Computating and Discrete Mathematics are very related and it is the underlying topics to understand which thread across in many of the higher level subjects in Computer Science.
  5. The various practical problems that we face in text processing, in programming, writing text parsers are easily modelled in theory of computation. The Regular expressions were common fields for person working on text processsing problems, and understandin the regex engines helps model the regular languages and Finite Statement automata.
  6. Even while writing prototypes for good concurrent systems, the theory of computations comes handy where we tend to write distinct finite state automata machines and try to follow the logic in the model and when satisfied with the model, we go ahead with the implementation in the program.
  7. I have seen the real world application of the Open Shortest Path first algorithm in the packet routing.
  8. Very interesting to note the power of dynamic programming in effectively solving the problem of diffs in version managemnt systems.
  9. Finite automata and their probablistic counter parts. Markov chains are used in speech recognition systems.
  10. How exponential time complexity programs can be brought down to polynomial time complexity using Dynamic programming strategies. It is further realzied while participating in the programming contests, where if you could identify the problem strategy and the trick involved, then the solution becomes incredibly simple.
  11. Graduation problem - Bipartite match problem using mincut max flow strategy.
  12. Being firm on the theoritical concepts, and learning the latest technologies and relate them both.
  13. Research and teaching on how to make better software.
  14. I like finding solutions to problems that are both practical and elegant.
  15. As an undergraduate, I attended National Engineering College in India where I majored in Computer Science, I secured 78% as the aggregate percentage had won many programming contests.
  16. One benefit of working in the Industry is that it provided a good environment to study software systems and software engineer. The training to build a releasable working software with plan and good team communication.
  17. Graph algorithms in computer networking and routing. They become all the more important as distributed systems are growing and efficient communications between the computer systems invariably have some good graph theory associated with it.
  18. Debugging and Path profiling algorithms use Graph algorithms.
  19. Are two graphs equal, it is a graph iso-morphism problem.
  20. Presented a topic on “Algorithms in Python” where I demonstrated all the common algorithm problems in Python, explaining the complexity of each solution. I studied the kind of sorting algorithm, timsort, that is going inside the language interpretor for sorting the elements in the language while providing higher level sort interface to the programmer.
  1. Multi threading programming, asynchronous networking programming, threading.
  2. Interest in Global Interpretor lock of the Python and presented a topic on “understand gil” to the scientific python community.

3. I have an inclination towards research and occupying myself with interesting fundamental problems, and I also have certain ability to translat the answers to the fundamental problems to more concrete ones in the products and come out with new innovations. This is supported by four inventions that have been filed with USPTO by my former employer Dell. They were important contributions even in the business, because only 4 out of 600 people in the group had a track recording of having 4 or more patents.

  1. I plan to contribute to python language further through out the period of my graduate studies. One the areas which I have recognized I will be working on is the networking library modules that would handle ipv6 protocols effectively and url parsing modules for Non English URLS as the IRI (Internationalized Resource Identifiers are becoming common), I would like gain understanding of the Interpretor core and enhancements to it, making improvements to it to make a Python a suitable language for distributed computing tasks.
  2. Interests and teaching using Visual Programming Languages like Alice and Mindstorms NXT. The concepts of programming are same, but it increases the ease of programming systems. It affects the way we approach programming.
  3. Mentored and led developers in modern design patterns, implementation, debugging, documentation, and testing practices.
  4. Developed various configuration management, simulation, and testing tools utilizing a variety of technologies.
  5. I was awarded “Co-Inventor for the Year 2007” for my Invention disclosures in the Blu-Ray media, which were filed with USPTO.
  6. I was honored with best teacher award by Spastics Society of Karnataka, for teaching Robotics to the students, in the year 2008.
  7. Who Dares wins! An algorithm game where I studied the A* algorithms from Peter Norvig’s books, studied the lisp implementations for N puzzle game, and converted them into a two player game using Python and Pygame, SDL library in python. This visulaization of the algorithm helped the players appreciate the computer moves.
  8. The Content Search in Blu-Ray is an efficient search algorithm using small moemory because it is an embeded media, it uses the nature data for implmenting the search. The results which of interest to the end user are obtained in an indirect and an effecient by indexing subtitles rather than then video frames.
  9. I, Senthil Kumaran, am applying to University of Toronto, for the admission to Masters program, in Computer Science and Engineering with specialization in the field of algorithms.
  10. Deep interests in specific fields in computer science and language design, working with smart people and desire to work on hard problems in computer science has motivated me to apply for PhD program.
  11. My academic record has been consistently good and secured top position in my class through out the engineering education.
  12. At Akamai, I have seen a really good implementation of a standard computer science algorithms and theories. As this company was formed by theoretical computer science experts, I see the implementation of the algorithms like Open Shortest Path first implemented for finding an effective route for packets across the systems.
  13. Cryptography systems and Security architecture to prevent any attacks on the Internet. It is standard model in the text books, but understood and implemented very clearly within the company.
  14. Cache Oblivious Algorithms has developed a good load balancing algorithms for distributed systems.
  15. I would be dependent on finantial aid for my graduate studies, and PhD program with its research assistance stipend will help to meet financial demands.
  16. Akamai, is not a content cache network or CDN, but interesting algorithms in effective path finding (OSPF), and challenges in handling software management and deployment on a distributed network (consisting of 50,000 computers) play a major role. I have studied the design behind software and have found solid theoritical underpinnings for the design.
  17. For my own project of desinging an asynchronous requesting handling server to for distributed log collection from the network, I used a very standard programming model, a reactor pattern, and asynchornous programing using deferreds. The twisted framework provided a neat implmentatin of these has been very stable.
  1. I have had several opportunities to do research.
  2. My career after graduate school is to pursue research in academedia or in Industrial Labs. I would like to solve the persisting problems and also see through the application of the solutions for larger benefit.
  3. I take up a particular problem and pursue it till I find a satisfying logical solution to the problem.
  4. Research Interest in design and implmentation of advanced programming systems, incorporating expressive programming languages, efficient implementations and supportive programming environments.
  5. I am specifically interested in Programming Languages, Programming Language development. I have gained expertise in certain programming languages like Python and C have studied a other many programming languages like C++, Alice and esoteric languages.
  6. Independent thinking experimentation and deriving results.
  7. Being a Python Core developer, I have the value of mutual respect and being honest in the code from the fellow python developers and Guido van Rossum who is a the lead of the project.
  8. I have been a volunteer for Spastics Society of Karnataka for more than 4 years, I got engaged with students and got interested that I could utitlize my technical expertise in developing solutions for them. That project took more than 4 years to complete, where I first tried the different solutions in Voice Recognition and Dasher. I was able to successfully design a solution students who could operate their computer independently using Voice. The technology of voice recognition has improved a lot over past 3 years, I know how certain technologies can be helpful as an assistive technology. I have also studied the kind of research work that is involved in developing those technologies, like Brown university is involved with Camera Mouse and the Dasher which is a product of Inference Group, UK uses Statistical Markov chain processes in word prediction.
  9. Practise the State of art in Software engineering at a leading university such as yours.
  10. I find the problems in the field of ____ as challenging areas for research.,
  11. As a computer science student, I had a final percentage of 76% in my University exams and stood 8th in my class of 60.
  12. Python Standard Library work involved the research of Internet Standards, understanding the RFC specifications for developing Internet libraries and working with expertise to implement those specifications.
  13. I initiated the Robotics club and taught design of robotics and programming to students.
  14. Pursing a PhD at ____ would enable me to study and contribute to the research in the field of ____.

GRE Scores and Academia

  • General Test Scores: Verbal: 530. Quants: 780. AWA: 4.0
  • TOEFL Scores: Reading: 29, Listening: 28, Speaking: 28, Writing: 22, Total: 107
  • Bachelor of Engineering, Computer Science. 1998-2002. Final Percentage: 77.3%

GRE General Test Scores:

  • Date: 05-08
  • Registration # 6634-905

Verbal : 530 - Below 68% Quantitative: 780 - Below 90% Analytical Writing: 4.0 - Below 33%

Test Scores:

TOEFL Internet Based Test:

Registration: 0000 0000 0587 7817 Test Date: 03 August 2008

TOEFL iBT Scaled Scores:

Reading 29 Listening 28 Speaking 28 Writing 22

Total 107

GRE Subject Test

Test Date: 11/08.08 COMPUT SCI

Score Recipients Requested

Graduate Institution Department

4833 0402 5248 0402 2074 1201 4704 0402

Score: 530. Percentile: 08%

http://edulix.com/infobank/index.php Edulix Info Banks

Nov 09

Registration Number 4614110 Test Center Number 10044 Test Date: 11/07/09

Name: Senthil Kumaran

Preparation Notes

  • If thoughts are properly handled, then you can study more and be tired less too - 8th Aug.
  • If you keep a problem prolonged without doing something about it, you might keep missing it and it might ‘tend’ to become harder than it was initially.

Physical Science Monologues

This is the list of twelve best physical sciences monologue of the 20th century according to American Scientist. Found this at `TAOCP<http://www-cs-faculty.stanford.edu/%7Euno/taocp.html>`_ page.

  • Dirac on Quantum
  • Einstein on relativity
  • Mandelbrot on fractals
  • Pauling on the chemical bonds
  • Russell and whitehead on Foundations of Mathematics
  • von Neumann and Morgenstein on Game Theory
  • Wiener on Cybernetics
  • Woodward and Hoffman on Orbital Symmetry
  • Feynman on Quantum Electrodynamics
  • Smith on Search for Structure
  • Einstein’s collected papers.
  • Knuth’s The Art of Computer Programming

Unix Operating System Documents

http://docs.freebsd.org/44doc/

Theory of Computation

  • A language is called a regular language if some finite automaton recognizes it.
  • What is finite automata?

A finite automata is a 5-tuple (Q, E, ∂, q, F), where:

  1. Q is a finite set called the states.
  2. E is a finite set called the alphabet
  3. ∂: is Q x E -> Q is the transition functions.
  4. q belongs to Q is the start state.
  5. F belongs to Q is the set of accept states.
  • Regular Operations are union, concatenation and star.
  • Operator is a unary operator; it attaches any number of strings in A together to get a string in the new language.
  • Generally speaking a collection of objects is closed under some operation, if applying the operation to the members of the collection still returns an object in that collection.

P vs NP problem

Suppose that you are organizing housing accommodations for a group of four hundred university students. Space is limited and only one hundred of the students will receive places in the dormitory. To complicate matters, the Dean has provided you with a list of pairs of incompatible students, and requested that no pair from this list appear in your final choice. This is an example of what computer scientists call an NP-problem, since it is easy to check if a given choice of one hundred students proposed by a coworker is satisfactory (i.e., no pair taken from your coworker’s list also appears on the list from the Dean’s office), however the task of generating such a list from scratch seems to be so hard as to be completely impractical. Indeed, the total number of ways of choosing one hundred students from the four hundred applicants is greater than the number of atoms in the known universe! Thus no future civilization could ever hope to build a supercomputer capable of solving the problem by brute force; that is, by checking every possible combination of 100 students. However, this apparent difficulty may only reflect the lack of ingenuity of your programmer. In fact, one of the outstanding problems in computer science is determining whether questions exist whose answer can be quickly checked, but which require an impossibly long time to solve by any direct procedure. Problems like the one listed above certainly seem to be of this kind, but so far no one has managed to prove that any of them really are so hard as they appear, i.e., that there really is no feasible way to generate an answer with the help of a computer. Stephen Cook and Leonid Levin formulated the P (i.e., easy to find) versus NP (i.e., easy to check) problem independently in 1971.

A problem is of type P, if it can be solved using an algorithm whose running time grows no faster than some fixed power of number of symbols required to specify the initial data.

Theory of Computation 1.1

1.1 Write formal descriptions of the following sets.

  1. The set containing the numbers 1, 10 and 100.

A = {1,10,100}

  1. The set containing all integers that are greater than 5.

SET = { n | n ∈ Z and n > 5 }

  1. The set containing all natural numbers that are less than 5.

SET = { n | n ∈ N and n < 5 }

  1. The set containing the string aba.

SET = {aba}

  1. The set containing an empty string.

SET = { ∊ }

  1. The set containing nothing at all

SET = ∅

1.2 Let A be the set {x, y, z} and B be the set {x, y}

  1. Is A a subset of B? FALSE.
  2. Is B a subset of A? TRUE.
  3. What is A ∪ B? Answer: A
  4. What is A ∩ B? Answer: B
  5. What is A x B? Answer: {(x,x), (x,y), (y,x), (y, y), (z, x), (z, y)}
  6. What is the power set of B?

Answer: { ∅, {x},{y},{x,y}}

1.3 If A has a elements and B has b elements, how many elements are in AxB?

A x B has a*b elements. A x B stands for cartesian product which is formed as set of tuples taking each element from each set.

So for 2 x 2 set. {a,b} x {c, d} = { (a,c), (a,d), (b,c), (b,d)} Thus there are 4 elements.

1.4 Description

1.4 Examine the following formal descriptions of sets so that you understand which members they contain . Write a short informal English description for each set.

  1. { 1, 3, 5, 7 ...}

It is the set of all odd natural numbers.

  1. { ..., -4, -2, 0, 2, 4 ...}

It is the set of all even real numbers.

  1. {n | n = 2m for m in N}

It is set of even natural numbers.

  1. { n | n = 2m for m in N, and n = 3k for some k in N}

It is set of natural numbers which are divisible by both 2 and 3.

  1. { w | w is a string of 0s and 1s and w is equals the reverse of w}

It is set of binary numbers which are bi-directional (that is read the same from left to right and also from right to left).

  1. { n | n is an integer and n = n + 1}

It is set of all integers.

1.5 If C is set with c elements, how many elements are in the power set of C? Explain your answer.

{x, y} = { ∅, {x}, {y}, {x,y}}

{x, y, z} = { ∅, {x} , {y}, {z}, {x, y} , {y, z}, {x, z}, {x, y, z} }

{a, b, c, d} = { ∅, {a}, {b}, {c}, {d}, {a,b}, {a,c}, {a,d}, {b, c}, {b, d}, {c, d}, {a,b,c}, {a,b,d}, {c,a,d}, {d,a,b}, {a,b,c,d}}

Answer: cC0 + cC1 + cC2 + cC3 + ... + cCc

Take c = 4 Answer = 4C0 + 4C1 + 4C2 + 4C3 + 4C4 = 16

Actually it is 2^n^. I have to find the proof for this.

1.6 Transistion Functions

Let X be the set{1,2,3,4,5} and Y be the set {6,7,8,9,10}. The unary function f: X -> Y and the binary function g: X x Y -> Y are described in the following tables.

||*n*|| f(n)||
||1||  6||
||2||  7||
||3||  6||
||4||  7||
||5||  6||

||*g*||6||  7||  8||  9||  10||
||1||10|| 10|| 10|| 10|| 10||
||2||7||  8||  9||  10||  6||
||3||7||  7||  8||   8||  9||
||4||9||  8||  7||  6||  10||
||5||6||  6||  6||  6||   6||
  1. What is the value of f(2)

Ans: 7

  1. What is the range and domain of f

range = {1,2,3,4,5} and domain = {6,7}

  1. What is the value of g(2, 10)?

Ans: 6

  1. What are the domain and range of g?

domain: {(1,6),(1,7),(1,8),(1,9),(1,10) .... (5,10)} range: {6,7,8,9,10}

  1. What is the value of g(4,f(4))?

Ans: 8

1.7 For each part, give a relation that satisfies the condition.

  1. Reflexive and Symmetric but not transitive.

Ans: (a+b) ^ 2

  1. Reflexive and transitive but not symmetric.

Ans: / operator?

  1. Symmetric and Transitive but not relexive.

Ans: multiplication by -1.

1.8. Graph

Ans: Drawing in the Notebook

Degree of 1 is 3. Degree of 3 is 2. Path from 3 to 4 is 3-2-4.

1.9 Formal Description of the Graph

Ans: {[1,2,3,4,5,6},{(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)}}

PROBLEMS

1.10 The error is dividing by (a-b) which is 0 because we assume a = b. Dividing by zero is not-defined and hence the proof is not valid.

1.11 The Induction Step is wrong. After assuming that H=K+1 are of same color instead of proving mathematically that K+n can be true, it goes about sub-classing the same set and without proceeding to prove a generality.

1.12 Every graph with 2 or more nodes contains 2 nodes that have equal degrees.

Each edge contributes equally to 2 adjoing nodes or when there is not a edge, the two seperate nodes have an equal lose. Taking both the situations into account, for a given graph with 2 or more nodes, there are 2 nodes that have same degree.

1.13

Clique of a graph is subgraph in which every 2 nodes are connected by an edge. Anti-Clique is the subgraph in which every 2 nodes are not connected by an edge. This is also called as independent set. Show that every graph with n-nodes contains either a clique or an anti-clique with at-least 1/2log2 n nodes.

Answer: This is Ramsey’s therom. Generalized for k=2. For which the minimum number of nodes required is 3.

  • Have two sets m and n.
  • Take each node in the graph and if the degree is greater than 1/2 number of remaining nodes add to set m else add to set n.
  • Take all the nodes that are connected to m and add it set m.
  • All the nodes that are not connected add to the set n.
  • In this way, we have a clique in m and anti-clique or an independent set in n.

1.14

Theorem 1.25

P(t) = P*M^t - Y ( M^t - 1) / (M - 1)

P is the principal sum I is the interest rate Y is the monthly payment. M is convenience term for writing M = 1 + I/12

This problem can be solved by using a calculator.

Curious

There are 2^903 ways to arrange red, green strings among 43 pegs so each pair is either connected by red string or by a green string.

Notes

  • Floyd’s contributions include Floyd’s algorithms which efficiently finds the shortest paths in a graph and his work on parsing. Concept of error diffusion for rendering images, also called Floyd-Steinberg dithering. Program verification using logical assertions.
  • Chomsky Normal Form.
  • Grieback Normal Form.
  • Non-deterministic push down machine.
  • Every CFG has an equivalent NDPM.
  • Push Down Machine is a Finite State Machine with Stack.
  • Finite State Machine with two stacks is equal in power with Turing machine.
  • CYK ⊙(n^3)
  • Syntax Diagram, Backus Norm Form, Extended Backus Norm Form are convenient way to write Context free Grammers.

Password Algorithm

  • Easy to Remember.
  • Minimum 8 Chars.
  • Satisfying various idiosynchrnous requirements.
  • Cap char
  • Small char.
  • Numerals
  • Special Chars.
  • Form a complicated sentence with special symbols like ; and . Facswssl;a.

Regular Languages

Finite Automata and their probabilitics counter parts, Markov chains are used in Speech Recognition.

ADUni.org courses

Theory of Computation

Video Lecture 2: Closure and Non-Determinism

  • FSM are closed under reversal.

  • Convert a Non Deterministic FSM to a Deterministics FSM, the example of every 1 followed by two zeros.

  • Reversing a machine, wherein final state is the start state and arrows get reversed and start state is the new final state.

  • Theory of Computation Folklore. To convert to the minimize the Deterministic FSM * Reverse the Machine ( This would make it Non Deterministic) * Convert to Deterministic FSM * Reverse the machine (Again Non Deterministic FSM) * Covert to Deterministic FSM again. This would be minimal machine. I kind of trust Shai Simonson’s word on that. :)

  • The above method of minimizing involves DFA to NFA and it is exponential time complex.

  • There are better methods using Polynomial Time Complexity using Dynamic Programming Strategy.

  • Union of two machines using NFA.

  • Intersection of two machines ( Using De Morgan’s law. WOW!!!) But that is costly again, you can do it by working it out with pair or states as in cartesian product of the two machines.

    • Union means the set of accept states are either of the accept states in M1 and M2.
    • Intersection means that set of accept states are BOTH the accept state in M1 and M2.
  • Union, Intersection and Complement. Any two of the operations are enough and the third one is guaranteed.

  • Complement Operations means changing 1s to 0s.

  • Finding Intersection using Non Determinism is difficult, because Non Determinism does not mix well with OR operations, It mixes well with AND Operation.

  • NFA ~ DFA ~ REGULAR EXPRESSIONS ~ NFA ( They form a nice group).

  • Regular Grammars ~ DFA

  • Trying to represent 0^n^1^n^ can be represented by FSM??

  • Well, if I try it, equal number of 0s and 1s can be represented by FSM, but equal number of 0s followed by equal number of 1s ( this involves counting) cannot be represented by FSM.

  • Anything that involves counting cannot be represented by FSM.

  • The FSM can also be tested using Pumping Lemma, because they test a particular kind of regularity.

  • Regular sets can be pumped out at Regular Intervals and are identified by pumping lemma.

  • Thus Pumping lemmas are yet another test for FSM..

ACM Meeting

  • Bangalore is the IT Hub but far away from being a CS Hub.
  • The very IT which is responsible for growth of economy, might feel the after-effect of its utter negligence of CS.
  • http://people.freebsd.org/~jkoshy/ Koshi Joseph FreeBSD Committer working from his village in India.
  • Marvels of Engineering distinctly absent in CS.
  • Civil Engineering - Golden Gate bridge.
  • Have we designed the right programming language?
  • Have your steps firmly on the concepts and learn the latest technologies and related them both.
  • http://en.wikipedia.org/wiki/Barbara_Liskov Barbara Liskov won the 2008 Turing prize for her contributions to OOP.
  • 62% (roughly) of Turing award winners have been in Programming field.
  • To distinguish the technology from Marketting hype, spend time with the correct community.
  • Assertion Checking Problem - It is not solvable.
  • YOGI reaches the close points by Static Verification.
  • Basic block profiling, Edge Profiling and Tracing.
  • Acyclic, Intra Procedure Path finding.
  • http://research.microsoft.com/~tball Ball Laurus Algorithm - Linear time complexity.
  • Preferential Path profiling.
  • Holmes - Automated Root Cause Analysis. This one was pretty cool
  • Specification Inference for security.
  • Power Debuggingm tool developed using relationship graph.
  • Research Area in Races and Deadlocks.
  • New Type Systems for Language.
  • CNF SAT - Area for Research
  • www.satcompetition.org
  • QBF - Valid or Not Valid - Area for Research - Quantified Boolean Formula Satisfiablity.
  • www.qbflib.org
  • Complexity Analysis of Concurrent Data Structures - Area for research again.
  • It was a good talk by Sriram K. Rajamani of MSR India.
  • When asked about the advice for pursing a PhD, he suggested the path of MS and PhD.
  • I could also sense or felt, that if I want something, I should know how to get it.

Pumping Lemma

  • How to minimize the finite state machine in O(nlgn) times. Aho, Ullman Paper. Fun programming problem.
  • Pumping Lemma - to prove that a set is not acceptable by the FSM.
  • Regular Set -> ( Implies) Pumping property; ~ Pumping Property (Implies) -> ~ Regular Set.
  • If L is a regular set, it has a string long enough that is longer than the number states in the set, then it has a symbol that loops, then looping that symbol results in the string in the same set (recognizable by the language).
  • The four quantifiers represent the pumping property.
  • How to show that it is not true?
  • If you push not sign through quantifiers, it changes universal to existential and vice versa.
  • Not of pumping property. For any n, there exists z in L such that |z| >= n, there exists v,w,x such that z=vwx and |vw| <= n and |w| >= 1 and there exists i >0 vw^i^x is not in L.
  • Converse of Point 3 is not true. A set having pumping property does not mean that the set is a regular set. It is not a iff property.
  • A set of Palindromes, dont satisfy the pumping property.
  • Palindrome - Latin for running backwards.
  • In the pumping lemma proof for palindrome, for sets = K, chosing 0^K^10^K^ forces the opponent to choose the looping in 0, because of the property that |vw| <= K. :) Palindromes are not a regular set.
  • While a bad choice of z = 0^K/2^1^K/2^ would make the loop to be in 1 and it would result in a palindromes.
  • Palindromes cannot be described by regular expressions.
  • 0^k^2^^ is not a regular set, because k can be 0.
  • 0^k^ k = composite. Pick up z=0^2n^. z = vwx. It has a pumping property but it is not regular.
  • 0^p^ p = prime is not regular. These are complements of one another.
  • That is the idea of closure.
  • Diagnolization - Have you known it yet?
  • Can a FSM recognize one of its own kind? It is not regular.
  • Turing machines can recognize FSMs. Turing machines can recognize their own kind, but cannot identify properties of their own kind.
  • ->RE->DFM->NDFM ( Linear Grammer) - Grammer way of looking at set.
  • Productions of Grammer to generate some strings. Using the productions is called derivations and get a string.
  • Linear Grammers. Single Capital Letter on the LHS, the RHS consists of a small letter(terminal) and a capital letter ( non terminal). The terminal comes in the left, it is a left Linear Grammar.
  • Context Free Grammer - A Single Non Terminal Symbol on the Left and Right side can be anything. Linear Grammer is a subset of Context Free Grammer.
  • Left linear grammer and right linear grammer are the same. One can be converted to another.
  • Grammers by their nature are non-deterministic.

Big O Notation

  • Big O denotes a limiting behavior of function when the argument tends towards a particular value or infinity, usually in terms of a simpler function.

  • Big O notation allows its users to simplify functions in order to concentrate on their growth rate. Different functions with same growth rate may be represented with the same big O notation.

  • Description of a function in terms of big O notation usually only provides an upper bound on the growth rate of the function; associated with big O are several related symbols o, Ω, ω, and Θ to describe other kinds of bounds on the asymptotic growth rate.

  • Formal Description:

    f(x) = O(g(x)) as x -> ∞

  • T(n) ∊ O(n^2^) - That is T(n) has n^2^ time complexity.

  • O(n^c^) and O(c^n^) are very different. The latter grows much, much faster, no matter how big the constant c is (as long as it is greater than one).

  • Changing units may or may not affect the order of the resulting algorithm. Changing units is equivalent to multiplying the appropriate variable by a constant wherever it appears. For example, if an algorithm runs in the order of n^2^, replacing n by cn means the algorithm runs in the order of c^2^n^2^, and the big O notation ignores the constant c^2^. This can be written as c^2^n^2^ ∊ O(n^2^) . If, however, an algorithm runs in the order of 2^n^, replacing n with cn gives 2^cn^ = (2^c^)^n^. This is not equivalent to 2^n^ in general.

What is Amortized time?

What is inverse Akerman function or even straight Akerman function?

disjoint set?

Priority Queue?

Polylogarithmic? AKS Primality Test?

What is KD-Tree?

Lineararithmic?

Fast Fourier Transform?

Shortest Path on a weighted Digraph with the Floyd-Warshall Algorithm.

Computer Architecture

Make a list of 10 general-purpose processors including the details like clock speed, word size and manufacturer.

||*uP*||Clock Speed || Word Size || Manufacturer||
||Intel Core i7 EE || 3.33 `GHz` || 64 bit(bus-size) || Intel||
||AMD K10 || 3.1 `GHz` || 64 bit || AMD ||
||ARM 11 ||528 `MHz` ||32 bit ||ARM||
||Cyrix 5x86 || 133 `MHz` || 32 bit || Cyrix||
||DEC 21-40535-04||275 `MHz` ||64 bit ||DEC ||
||IDT Win Chip `W2A` ||300 `MHz` ||32 bit ||IDT||
||Motorola 68060 ||75 Mega Hz ||32 bit ||Motorola||
||NS 320 16 N -10 ||10 Mega Hz ||32 bit ||National Semiconductor||
||NEC D70216 L || 10 Mega Hz || 16 bit || NEC ||
||Nex Gen Nx 586 || 100 Mega Hz || 32 bit || Nex Gen||
||C7 D || 2 Giga Hz || 32 bit || VIA||
||Crusoe TM 5800 || 933 Mega Hz || 64 bit || Transmeta||

The number of bits a CPU can process at once; word size is usually the same as the width of the CPU’s external data bus, but sometimes is smaller. Justify that CPU in personal computer is a general purpose processor.

  • It is not just for sine and cosine but can do a large number of small scale mathematical calculations.
  • It can fairly handle the graphic requirements.
  • It can do multi-tasking to satisfy the users requirements.

In a mathematical sense, only three operations are needed to compute any computable function: add one, subtract one and branch if a value is non-zero.

Minimizing Finite State Machines

  • All FSM can be minimized to a unique FSM. Cool. :)
  • Not true for turing machine or middle level (push down machine) programs.
  • Decision algorithms about FSM are possible because of its property of minimize.
  • Cave example, Dungeon and Dragons.
  • Minimising FSM
  • Make it such a way if one state is distinguishable from another.
  • NC_2_ are the number of pair of states for N states.
  • Draw a Matrix and X each pair of states which are distinguishable.
  • Proceed on 0,1 and on each pair and note the dependency and mark them for backtracking.
  • The amount of backtracking, determines the size of the string that distinguishes it.
  • Based on the number of X, which are number of states which are indistinguishable from one-another, we can collapse them to one state.
  • That is the basis of equivalence relation.
  • In the matrix, seperate the distinguishable states into sets. (AFDC) and (BE).
  • That is kind of Non Determinisitic Machine.
  • Minising FSM is commomly used, when you write the opcodes and then you want to minimize it implement it in the architecture.
  • Dependency Graph drawing it from the Matrix.
  • Any kind of search over the graph from the dependency graph will give depdency. the 2(nC2) = n(n-1)
  • Funny way, suttle way to represent and work with the graph and transmitting the operation with back arrows.
  • Backtracking it easy to put an X than say searching if the backtracked note already has an X.
  • That was a reduced one for “Every string that does not have 1 in the second position”.
  • Graph Traversal vs Diagonalization method. Complexity analysis. The Diagonalization involves backtracking. But that the worst case of backtracking for going to every single state for every single value is never going to happen. Because in each loop we go about cancel symbols.
  • Different way of doing it by a student. Do you stay in the same group (ABCD) and or different group (EF).
  • Hopcraft and Ullman for reducing the FSM in nlogn times.
  • Switch Gears: What questions can we answer about FSM?
  • Lex: Describe the FSM and given the Input string and it says whether it accepts or not.
  • We can answer almost everything about FSM.
  • Membership question.
  • Are two FSM equal? Graph Isomorphism problem - Given two graphs are they same. (You got to relabel the graph and see if there is a set of labels that match. But that takes N! times)
  • Start with a graph and re-label the other nodes till you get a match.
  • If two FSMS are equal, if you calculate their difference A-B = 0.
  • A-B = A ⋂ ~B
  • Language is infinite. Look for a cycle, and if there is a state which goes to Final State and if it does, then it is infinite. easier way, convert to RE.
  • No 2 RE have smallest RE. To figure if two RE are same, is NP Complete.
  • SET Theory and Graph Theories are coming into picture here.
  • Is a Regular set A contained in Regular set B?
  • Remind of the Discrete Math. Intersection is AND, Union is OR, Complement is NOT.
  • A ⊆ B means A -> B (A implies B).
  • Decidable means can be done or not?
  • Only thing that can be done from next level is membership problem.
  • There are not any interesting undecidable questions in FSM.
  • Any non-trivial property of turing machine is undecidable.
  • A Trival property of Turing machine is How many states it has?

Asymptote is a tangent to a curve at infinity. Something that is asymptotic relates to an asymptote, which is defined as “A Line whose distance to a given curve tends to zero.”

Something asymptotic refers to a limiting behaviour based on a single variable and a desired measure. A common notation that removes constants is called Big O notation, where O means “order of”. Big O denotes the upper bound, how much the time complexity will grow. If we say that a function is O(N) then if N doubles, the funtion’s time complexity at most will double.

I don’t understand this aspect: But because the array is split in half each time, the number of steps is always going to be equal to the base-2 logarithm of N, which is considerably less than O(N).

http://www.eternallyconfuzzled.com/jsw_home.aspx

Big-O is not a mathematical function. It has no inverse.

The Art of Sorting

  • C’s qsport and C++ std::sort and std::partial_sort.
  • Its beneficial to understand what algorithms are available, what their advantages and disadvantages are, and how to implement your own algorithm that’s custom tailored to your data if the need arises.
  • To sort or not to sort. That’s the question, Is’nt it?
  • It should be really obvious that Upper Bound of any sorting algorithm is infinite, as long as it eventually sorts the items.
  • The Lowest possible bound for most sorting algorithms is Ω(N logN).
  • There must be as many leaves as the permutations of the algorithm to be correct.
  • It is possible to meet the safe lower bound of O(N) for sorting.
  • Selection Sort is not a viable option for things that come through input an stream or random number generator. The array has been completely filled in before it is sorted.
  • In the selection sort, if you swap the items (the largest vs n), then you displace the items of their original relative order.
  • But thats not the case when you kind of shift the items one after the other, so it remains stable in this case, albeit taking a lot of space and time.
  • Stable Selection Sort. Understand it.
  • Priority Queue can be used to do a selection sort. The best known priority queue implmentation is done with a max_heap.
  • Max Heap is a complete binary tree, wherein the children of a node cannot be larger than the parent.
  • In a valid max heap, the largest item is the root of the tree.
  • Heap Sort has the worst case as the same complexity as the average case.
  • Array can be coverted to a heap, wherein for each index i, the child nodes are i*2 + 1 and i*2 + 2.
  • The relative order of children in the Heaptree is irrelavent.( Funny, because it is binary tree)
  • Insertion sort is blazingly fast on arrays that are sorted or partially sorted. That makes it a good one to use as the last part of quick sort.
  • What is knuth sequence?

Recitation-1 Theory of Computation

  • Programs are condensation (or compressed versions) of strings.
  • [http://en.wikipedia.org/wiki/Kolmogorov_complexity KOLMOGOROV complexity].
  • Turing Machine
  • Shannon/Fischer Information.
  • Entropy
  • Streams - All scheme programs
  • Locality
  • Architecture.
  • Cache and memory systems.
  • Pre-fetching.
  • Pre-Computation.
  • Scheme Interpreter is just a program.
  • Abstraction.
  • Language allows us to define certain constructs in the realm of that language.
  • Register Transfer Language ( Machine Language).
  • After 1985, no machine code was directly transfered to actual hardware. There was micro-code.
  • Every level of translation involves expanding amount of code and reducing efficiency.
  • Lisp machines that directly implemented Lisp interpretor in hardware.
  • VAX-11 (CISC) One instruction to solve polynomial equation. :)
  • All scheme expression we have pre-fix notation ( op arg1 arg2).
  • Tag based dispatch of data-structures. That’s what interpreters do.
  • Parsing in infix is difficult and prefix is easy.
  • Read-Eval-Print loop for evaluating the lisp expressions.

Lecture 5 Context Free Languages

  • FSM -> CFL
  • CFL, Inside they are DPDM and Outside they are NDPM.
  • CFL are equivalent to NDPM.
  • DPDM are equivalent to LR(K) grammers.
  • LR(K) grammars are subset of CFL.
  • LR(K) grammers are the one most compilers are built from.
  • Context Free Grammers are Grammers that have a single Capital Letter on the LHS.
  • S-> 0S1 | e
  • S-> 0S1 | SS | e
  • If there are more than two parse trees, its bad, bad, bad.
  • trees give a semantic interpretation in the programming languages.
  • Grammar is AMBIGUOUS if any string has two parse different trees.
  • Its undecidable to figure out if the grammer is ambigous or not.
  • S-> S+S | S*S |0..9 is ambiguous.
  • S->(S+S) |(S*S) | 0..9
  • Grammers tend to challenge people more than machines do.
  • Use recursive idea and find the grammar inductively.
  • Semantic meaning for the non-terminal.
::
S -> 0A | 1B | e A -> 1S |0AA B -> 0S |1BB
  • Ambiguity is at AA.
  • Recursive example of grammar.
::
S-> SAB | e A-> 0S1 | e B-> 1S0 | e
  • Single Tree Grammers ( But the trees may get pruned at different levels)
  • This is equal number of 0s and 1s.
  • We prove by induction because they are recursive.
  • You cannot decide anything about the Grammer, except if that accepts Nothing! ( Turing machine can’t do that too).
  • There is a pumping lemma for Context Free Languages.
  • 0^n^1^n^0^n^ cannot be generated by Context Free Languages.
  • Give more power and make it Context Sensitive, then the above strings can be generated.
  • Context Sensitive Grammers look very much like machines.
  • A, B and C are non terminals that will eventually turn into 0s,1s,0s.
S -> L D A B C R
LDA -> LAAD
ADA -> AAD
ADB -> ABBD
BDB -> BBD
BDC -> BCCD
CDC -> CCD
DR ->  ER
CE -> EC
BE -> EB
AE -> EA
LE -> LD
A->0
B->1
C->0
R->e
LD->e
  • Context Free Languages are closed under union.
  • 0^n^1^n^0^p^
S -> 0S1M |e
M -> 0M |e

* 0^p^1^n^0^n^
* Context Free Language are closed under concatenation.
* Intersection the above two?   0^n^1^n^0^n^
* Context Free Grammare are not closed under Intersection.
* CFG Are NOT closed under Complement.

Video 6. Relationship with Compilers

  • Compiling a programming language.
  • Chomsky Normal Form.
  • Convert the Context Free Language to Chomsky normal form.
  • Motivation for Chomsky Normal Form. Every string of length n is derivable from (2n-1) steps.
  • Try every simple production to the depth of 2n-1, if it does not success it fails. If 3 nodes then 3^(2n-1)^ choices exists. It is decidable, but exponential time algorithm.
  • Chomsky Normal Form helps with Proof of Pumping Lemma for Context Free Languages.
  • Context Free Grammars are equivalent to Non Deterministic Push Down Machine. This equivalence becomes easy to prove of the grammar is in Chomsky Normal form.
  • Every CFG has an “equivalent” NPDM.
  • Push Down Machine is a FSM which can push and pop symbols from a stack.
  • Good Algorithm for membership in Context Free Grammar. The CYK O(n^3^) algorithm for membership, this is easy if the Grammar is in Chomsky Normal Form. But there are linear grammars for this.
  • Connection between Compilers and Context Free Languages
<stmt> -> <assgn> | <ifthen> | <ifthenelse> |<beginend>
<ifthen> -> if <expression> then <stmt>
<ifthenelse> -> if <expression> then <stmt> else <stmt>
  • Syntax Diagrams, Backnus Normal Form, Extended Backus Normal Form are different ways of writing Context Free Grammer.
  • Chomsky Normal Form.
A-> BC
B -> o
  • Any grammar can be turned into Chomsky Normal Form.

Video 7 - Theory of Computation

  • Non Deterministic Pushdown machines.
  • Uni-direction movement with a set of inputs and manipulate a stack.
  • YACC simulates the actions of push down machines.
  • WW^R^ recognize it with NPDM. W ∊ (0+1)^*^
  • Is queue more powerful than stack? How many queues are required to simulate a stack?
  • Deterministic Context Free Languages are Closed under Complement.

Ars Digita University taught BE level courses in Computer Science

Recitation Video 3 - Theory of Computation

  • Lex and Yacc usage.

Video 8 - Theory of Computation

  • NDPM is different from DPM
  • CFG => NPDM
  • LR(K) Grammars are equivalent to DPDM.

Discrete Maths

  • The course is about Counting. Clever about Couting, if the are same. Tools to find this is not easy to count.
  • Fermat’s little theorem
  • Congruence.
  • √2 is irrational - Aristotle’s problem.
  • Infite number of prime numbers. Euclid’s Elements.
  • Halting Problem. What is that?
  • Bowling number problem, it is Triangular numbers, pentagonal numbers, hexagonal numbers.
  • Tn = 1 + 2n + ... + n-1
  • Cutting a pie
1 - 2
2 - 4
3 - 7
4 - 11
n - Tn + 1 ?
  • Pn = Pn-1 + n, using induction hypothesis.
  • Logic is used in Automated Theorem Proving.
  • The discussion about logic gates and the truth table is A-> B.
R ⊕ W = (R+W) -(RW)
R ⊕ W = (-RW) + (-WR)
  • Puzzle: Swap A and B without using a temporary variable.
  • R->W <=> -R + W
  • –R <=> R
  • (R+W)S = RS + WS
  • RW+S = (R+S)(W+S) ( Its ugly), so we use the (R⋂W)⋃S = R⋃S ⋂ W⋃S
  • De Morgan’s Laws
-(A⋂B) = -A ⋃ -B
-(A⋃B) = -A ⋂ -B
  • Notation is important in mathematics. They let you think properly.
  • Prove the Ex-OR logic.
(R+W)-(RW)
(R -(RW) ) + (W  -(RW))
(R (-R + -W)) + (W (-R + -W))
(R-R) + R-W + W-R + W-W
R-W + W-R

Graph Theory

  • In graph theory, an independent set or stable set is a set of vertices in a graph no two of which are adjacent. Exciting!
  • Maximum independent set problem is a NP-Complete Problem.
  • Disjoint set, two sets A and B are disjoint if they have no element in common.
  • A Bipartite graph does not contain any odd length cycles.

I discovered later that I wasn’t even a very good C programmer, hiding my ignorance of structures, _malloc( ) and free( ), setjmp( ) and longjmp( ),_ and other “sophisticated” concepts, scuttling away in shame when the subjects came up in conversation instead of reaching out for new knowledge.

  • The concept of implementation hiding cannot be overemphasized.

Maximum Flow

  • What does no full forward edges or empty backward edges mean?
  • This implies that the maximum flow is less or equal to every cut of the network.

Problem Set 1 - Theory of Computation

  • Unable to figure out Questions 3) b and c. What are figures 1.12b and 1.12c.
  • Discrete Maths proofs - Read the Solution and Don’t understand it completely. But I can prove in my own way.
  • Understand the Prefix(L) given in the problems further.
  • Converting FA to Regex.

Video Lecture 8

  • 0^n^1^n^0^n^ is not a Context Free Language.
  • All the Programming Languages that we write are Context Free Languages.
  • Context Free Languages are closed under Intersection with Regular Set.

Algorithms Video 1

  • Greedy Approach for minimal spanning tree.
  • Map Coloring Algorithm.
  • Planar Graph (No Crossing Edges) can be done with 4 colors.
  • NP Complete Problem ( No idea has an idea to do it in the polynomial time.
  • 2 colors. Polynomial Problem called Bipartite Problem (can be tried with DFS and BFS).
  • Recursion. Thinking about the problem top-down, breaking it into sub-pieces, divide and conquer.
  • Dynamic Programming. Bottom Up. Opposite of Recursion. Solve Subproblems in polynomial time.
  • Greedy Strategy. Hope that it works locally and hope that it works globally. Sometimes it works with polynomial time and sometimes it does not.
  • Recursions goes with Recurrance equations, Proofs by Induction, Stacks.
  • Dynamic Programming goes with Queues and tables.
  • Greedy Strategy has a mathematical theory behind. Matroid Theory. Minimum Spanning Tree can be done with greedy strategy. Scheduling Problem works with Greedy Strategy too.
  • Shannon Switching Game.
  • Claude Shannon described how a chess playing program should work.
  • Pspace complete (Buzzword. Even worse than NP Complete. HEX game)
  • Applications of Algorithms
  • Sorting / Searching.
  • Graph Algorithms
  • Shortest Path Problem. Basic problem and polynomial time complete.
  • TSP seems similar but it is NP Complete.
  • Hamiltonian Circuit Problem - Hard
  • Euler Circuit Problem - Easy.
  • Max Flow and Min Cut problem.
  • Marriage Problem. Polynomial time solvable and Bi-partite solving. Related to Max flow Min cut problem.
  • Three Dimentional Matching is hyper-graph problem. (Martian Marriage Problem).
  • NP Complete Problem for finding values for variables to make the CNF Circuit solve.
  • NP Complete Problems - Approximation Probablitics Problem.
  • Organized Scientific Discipline related to Computers.
  • Interested in ‘Why’ questions and ‘How’ questions.
  • Worst Case Complexity.
  • Average Case Complexity.
  • Amortized Complexity.
  • Winner of the tournament n + logn -2 times.

Sorting Algorithms - Video 2

  • Find out about triangular numbers.

Sorting Algorithms - Video 3

  • Quick Sort.

Searching Algorithm - Video 4

  • Data Strutures.
  • Heaps, Graphs,
  • AVL Trees or Red-Black Trees.
  • How do you get the n’th biggest number.

Algorithms Video 5

  • Counting sort.
  • Delete Nodes in Binary Tree.
  • Insert Nodes in the Red Black Tree.

Questions to Ask

Should I apply for Ph.D or M.S?

My aspiration is to pursue Ph.D because I have an inclination towards research and like solving problems especially going into depth with in a small area. But, as I have only Bachelors degree, I am trying to figure out what should I prove in order for universities to recognize and admit me into Ph.D program.

I would not hesistate to do a Masters in passing, if there is any objective requirement to for it in order to pursue research in that particular area. But I would be able to evaluate it best after considering the cases like finance.

About me:

I am a Computer Science graduate, interested in programming, algorithms, maths and general problem solving techniques. I graduted from a college called National Engineering College, Tamil Nadu, India. It’s a private college, though an established one in South India. I had tried for GATE and failed 2 times and I had tried for Subject GRE and have failed 2 times and I am trying it again.

I have an inclination towards research and occupying myself with interesting fundamental problems, and I also have certain ability to translat the answers to the fundamental problems to more concrete ones in the products and come out with new innovations. This is supported by four inventions that have been filed with USPTO by my former employer Dell.

Well, I personally do not consider them as my achievements because I still feel that patents from companies are towards securing business value than a real fundamental breakthrough, but they were important contributions becuase only few people (4 to be exact in the group of 600) had filed more than 1 patent over the 5 years I was at Dell.

I had been doing software testing and more occupied with Engineering processes than software architecture, that I had to move myself to Software Developer’s role on my own initiation. So, I studied the basic books again, solved all the problems in Kernighan and Ritchie (sometimes honestly and some times not-so honestly) and started trying for moving to a Developers role. I got some breakthrough in a developer in test inside Automation team and then I joined the Python Core Developers through Google’s Summer of Code Program. I started working on enhancing the urllib module and now I am currently the maintainer of the urllib module. I fix bugs on the module and entertain the feature requests that come in. I also participate in the discussions in the evolution of Python language and library. I plan to carry with this task (possibly increasing my contributions) through out my post-graduation studies as well.

Programming

== Endian-ness ==

  • Integer is 32 bits.
  • 8 bits make a byte.
  • So, integers are 4 bytes.
  • Least significant byte is the one with lower order of power. Like 2^0^ to 2^7^
  • Most significant byte is the one with highest order of power. Like the one with 2^n^
  • When we are giving address to the bytes, if we start numbering from the Least Significant Byte, we say it is Little Endian.
  • If we start address numbering from the Most Significant Byte, we say it is Big Endian format.
  • 0x12345678 be the integer. The LSB is 0x78, If that is starting address, 0. then it is Little endian.
  • If the addressing starts at 0x12, then it is in Big Endian Format.
1    2    3    4  - Big Endian
0x00 0x00 0x00 0x01
4    3    2    1  - Little Endian

$ python -c "import struct;print 'little' if ord(struct.pack('L',1)[0]) else 'big'"
little

Rubik’s Cube

LU’R’ U L’U’R U2

Programming languages

1. Processing http://www.processing.org/

Discrete Maths Video 3

  1. Demorgan’s laws.
  2. Set Inclusion Exclusion Theorem.
  3. Cardinality of the Set.
  4. Rules of Counting. a. Count what you are not interested in. b. Count double (multiple) times of what you are interested in.
  5. Programming and Maths. Dont sit and think you will get an idea. Do something wrong and fix it.
  6. Derangement problem (distributing lunch boxes to others). It uses Inclusion and Exclusion theorem.
  7. How many numbers are divisible by 1,5,7 between 1 and 1000. This is worked out by inclusion-exclusion theorem.

Practise

  1. C Programming - Pointer to a Pointer.

Discrete Maths Video 4

  • Diagnolization.

Discrete Maths Video 5

  • Recurrance Equation. Every next step is a function of the previous step.
  • Towers of Hanoi problem and Analysis.

Data Structures and Algorithms

Instructions:

  1. Solve either the three problems in Section A or the single problem in Section B. You must implement your algorithms as working programs in the C language.
  2. Try to keep your programs as simple as possible. Take care of proper program layout and embellish it with useful comments at the appropriate places.
  3. Make your programs as robust as possible. All borderline cases should be handled properly and the program should exit gracefully under all circumstances.

Section A

Problem A1: Prime Number Generation

Given a positive number N, generate all the prime numbers from 2 to N. The primary emphasis in the solution to this problem should be on speed. In addition, you must not consume an inordinate amount of memory.

Problem A2: Arbitrary Precision Arithmetic

Implement an arbitrary precision arithmetic calculator. You should implement addition, subtraction, multiplication and division in the respective order. Try to make your program as fast as possible and keep memory usage to the bare minimum.

Problem B1: Simple File-system Implementation

Implement a simple filesystem within a normal file on the hard disk, i.e. treat the file as a virtual disk and implement the filesystem by manipulating records within the file.

You are free to devise your own scheme for the file system but it should minimally support the following operations:

  1. Create - Create a virtual hard disk on a file of the specified size and “format” it. Formatting would essentially involve initialising disk allocation structures and whatever else you need to do before you can have a valid filesystem.
  2. Open, Read, Write, Close - All the normal file operations to use the files.
  3. Delete, Rename - Remove unwanted files or rename existing files.

Do not place artificial restrictions on file names, sizes, etc.

In addition, if you can, provide support for folders (also known as directories) which can be arbitrarily nested. Provide all the common operations for folders.

You should implement this as a library of routines that can be used by anyone wanting to treat a file as a filesystem. Demonstrate the correctness of your routines by writing a demo program that lets one manipulate files interactively.