Talked about tests. >>Yeah. Hello?
Hi. Can you try again? We couldn't quite hear.
You may want to try typing your question.
Let's see.
I do see that a lot. What kind of math are we talking about when we talk cryptography.
Oh, so what are the actual math background is expected for the cryptography class.
Or also what kind of math is related to computer science.
Okay, so two different questions.
So in general for computer science most of the math that we use is discrete math,
and what "discrete" means is values that are in a well-defined set so the integers are discrete.
There's an infinite number-- >>Countable. There's an infinite number.
There's a countable number as opposed to the real numbers where
there's an uncountable number of real numbers.
And so discrete things are things that are countable. You can count how many there are.
Continuous math like calculus comes up in some areas of computer science
but not nearly as often as discrete math.
The reason discrete math comes up is because in computers
we're representing things using the digital abstraction.
We're representing things at the level in the computer as 0s or 1s where
although there is physical things that are analog that are storing the values,
we're doing all the processing on them as discrete values.
Most of the math that is most fundamental to computer science is discrete math.
Logic is a big part of that.
You've been doing logic. You've been using If and predicate tests.
You've really been doing logic.
There's a lot of formalism behind the logic that we haven't covered in CS 101,
and we will have a discrete math course that will be one of the courses that starts in June.
The other kinds of math that are important--
for cryptography we use probability a lot.
That's probably the most important background to have for the cryptography course.
Number theory is used a lot in cryptography, so things like modular arithmetic is used a lot.
That's used in all of computing but becomes especially important in cryptography. What else?
Sebastian's class uses a lot of linear algebra.
Yes. Linear algebra is definitely the--Sebastian's class, robotics, AI, graphics, all use linear algebra a lot.
Cryptography does use linear algebra but not the cryptography
that I'm going to focus on in the course that I'm going to teach,
but there are parts of cryptography that are based heavily on using lattices,
and that's all building on linear algebra.
We did talk about homework 2.5 earlier.
Ah, the Collatz conjecture question.
When we post this video on the website--
I'm surprised we haven't had more questions about that yet, but hopefully people saw the discussion earlier.
We'll post it on the website. >>Yes.
Why numbers are immutable?
What was that? Oh, the question where you assign x plus 1 to x.
Why does that create a new number?
Does that create a new number?
It's a good question to think about.
When we think about what programs mean, we have an abstract model saying,
we're not modifying a number. We're creating a new number.
We're not actually creating something new to build that number.
We just need to store that number.
So often the way we think about programs executing as model doesn't correspond
very closely to actual the actual resources that are used to execute the program.
Another example, depending on how far you've seen the lectures,
the range takes in two numbers.
We think of that as producing a list between the two numbers, and that's what it does,
but when it's used in a for loop, the Python interpreter is much smarter
and doesn't actually have to build that list.
That's why it's faster to use the for with the range than to use the while loop with adding 1.
These are things where it's helpful to have a simple model that shows how the program executes
and is correct in terms of the semantics and the meaning of the program.
In terms of what's actually implemented, there are lots of ways
that things might be implemented that don't actually involve doing everything that our model says.
Accessing the Python interpretor.
Okay. The question is being able to access the interpreter at any time.
We hope the sight will soon have a button that makes it easy
to pop up the interpreter and try things on your own.
There are other ways to run Python, and depending on what kind of machine you have,
that could be quite easy.
If you have Mac and open a Mac shell and type "python," you get a Python interpreter.
You can try things yourself that way.
If you don't have a Mac, you can go to Python.org and download the Python distribution,
and that includes a way to run Python that works on almost all platforms.
There are lots of ways to run Python separately from the way we run it in class.
We think have the embedded interpreter that you can run right in the browser is helpful,
and you don't need to install any software to do the class.
We hope to make it easier to access that,
but for now it's only when you have a quiz or homework problem that uses it.
The next question is "am I your student?"
Do I answer that or do you answer it?
I don't know. Well, I'm not taking the Udacity course right now. That's true.
I am a student in Dave's security research group back at the University of Virginia.
Peter was a TA for me back at the University of Virginia and a student in my research group.
He has done a lot of very exciting research on security, which is what my group does work on.
Since he managed to finish all his course requirements a semester early
is able to come out here to be a TA for this class, which is much more than a full time job.
Yes. This is true.
I guess he's still sort of a student. >>Well, it's 9 o'clock and we're still here.
Yes. >>It's kind of a 9-to-5-to-9 job.
They do say like once a student, always a student.
It's all about the mindset.
We talked about the Udacity name earlier.
I think we should take one last question from a live person.
Does anyone have a last question?
If anyone has a last question-- >>My battery is about to die anyway.
I've got one question. >>Great. >>Sure. Go for it.
Do you plan on offering graduate level classes
or classes that would involve research and more interaction with students?
We definitely plan to offer more advanced courses,
and the course Sebastian is teaching now is fairly graduate level, I think.
Yeah, it's pretty hard. >>I think it's definitely much beyond what most undergraduate courses would be.
The planned courses that we'll have in June are probably
the 200 level courses and then some more advanced undergraduate-level courses.
We'll definitely have a mix of more introductory and more advanced courses as we go forward.
A lot of the experience of doing a PhD is really an individual focused on a research problem,
working very closely with a professor. >>For years.
That's something that involves a lot of one-on-one interaction
and working to define a problem to work on. It's a very unique experience.
It's not something that you can scale or offer without having many in-person meetings.
Really to do a PhD is a very different kind of teaching than the classes would be.
But we think we can definitely offer and do plan to offer high-level graduate courses
that will probably be a little bit later before we have many graduate courses,
but we will have them.
Well, thanks everyone for joining the Hangout.
This was an experiment it was good, more or less. We had some glitches getting started.
We realize the people are in different timezones, so if we do this again,
we'll schedule it at a time that more convenient for Africa and Europe,
and we'll move the time around to work well for different students.
But thanks everyone who joined us, and thanks for the questions.
And we'll post them on the website if you came in late and want to see them.
Okay. Good night. Thank you.