Send the link below via email or IMCopy
Present to your audienceStart remote presentation
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in our knowledge base article
Lecture 2 - Oct 14 2014
Transcript of Lecture 2 - Oct 14 2014
Now let's talk about the 2nd example - linear feedback shift register
A pseudo-random number generator is a deterministic machine that produces a long sequence of pseudo random bits.
Deterministic: given the current state of the machine, we know the next bit. An absolute requirement: Alice and Bob need the same sequence.
Random: we never know the next bit.
Pseudo-random: the sequence of bits appears to be random.
Ex. 1: No long repeats
Ex. 2: About the same number of 0s and 1s
Ex. 3: About the same number of 00s, 01s, 10s, and 11s
Task for you: the first 10 steps of [5,4] LFSR with initial fill 00001.
• Very simple encryption method.
• Decrypt with the same method.
• Scalable: 20 cells for 1 million bits; 30 cells for 1 billion bits.
• Widely used in practice, e.g. military cryptosystems.
• Easily breakable if seed is re-used.
• Still need secure key distribution.
• Experts can crack LFSR encryption.
Let's get into the basics of programming. Finally.
Why do you need to know how to program?
Natural language instructions
Apps are great when they do what you want
Programming enables you to make a computer do anything (almost) you want
“Instead of imagining that our main task is to instruct a
computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do". -Donald Knuth, author of 'The Art of Computer Programming', father of analysis of algorithms, Turing Award, Stanford University
not just for experts, or selected few
natural, satisfying and creative experience
new intellectual endeavor
an opportunity to change the world
Need to learn what computers can do
Need to learn a programming language
We choose Java
widely used and available
under continuous development since early 90s
full set of modern abstractions
automatic checks for mistakes in the programs
You need to start with some language
No language is perfect!
“There are only two kinds of programming languages: those people always complain about and those nobody uses.” -Bjarne Stroustrup, creator of C++
We'll use the minimal subset of Java and develop general programming skills applicable to many languages.
The point: it's not about the language!