Brief progress report
Nov. 13th, 2012 07:28 amAll my online courses have gotten underway now. I got caught up on MIT 6.00x, and have now done weeks 1-6, problem sets 4-6, and the first midterm exam. The most recent problem set was building a Python RSS feed scraper using various word filters, which was fun.
Berkeley CS184.1x, Foundations of Computer Graphics, has started and is really exciting. The first homework was just making sure the compilation environment would work and tweaking the color of one light, but I just did the first regular Homework, and it was a lot more fun. "The purpose of the homework is to fill in the code to allow rotation of the viewpoint around a scene, using what is known as a crystal ball interface." At first I was really overwhelmed, but then once I figured out how to enter matrices and vectors it wasn't too bad. It was really helpful to visualize things three-dimensionally while figuring out which axes I needed to rotate the camera around, etc. One thing I'm curious about is whether there's a simpler way to define this one matrix than how I ended up doing it. It was a 4x4 matrix with a 3x3 identity matrix in the upper left, and the eye vector for my camera in the rightmost column. I defined a 4x4 identity matrix and then reassigned the three values in the rightmost column manually, but I wonder if there's an easier way to say, replace this whole column with this instead. I will wait and see maybe what the solution code is after the problem set is due. But, mine works perfectly! And it is really fun to play with. Download of my compiled solution.
Anyway, next in that course we are going to go through OpenGL in more depth, and then actually building a complete scene viewer, so I am really pumped for that.
Harvard CS50x is still going, although I haven't done the week 2 problem set yet and need to get on that. I've been focusing on the other courses for the moment since the Harvard course doesn't have weekly deadlines. Plus, I already actually did that problem set in the past (last year), and I don't think it will be hard to code it again. That's the one with crypto, where the hacker edition is to break crypt(), which I also did before but mine was a really brute-force inefficient method and I was hoping I'd be able to improve it (although edX doesn't allow the hacker edition to be graded, sadly). So another part of why I put that off is that...
...I was hoping the Stanford Cryptography I course (the only one of the four courses I'm currently doing not on edX, as it's on Coursera instead) would be helpful in that area. So far, sadly, this is my least favorite of the four courses. I don't like the interface as much, the lectures are a lot longer, and the professor is not good at clearly explaining concepts. At least, he wasn't in the early lectures. He was going over concepts I am already familiar with in the review of discrete probability, and since I already knew them I was able to follow his review, but his poor explanations made me suspect that those with a less solid probability background might get lost, and I worried that when he gets to topics I am also unfamiliar with it might be difficult to follow him. As an example of one of his confusing points, he uses a capital U to represent the universe/sample space, but later uses the union symbol which looks exactly like a capital U without explaining what it was or differentiating the two. So, this was fine for me; I knew what each was, but is an example of things I found worrying when for those unfamiliar with the concepts, he didn't even explain what the union symbol was. Anyway. I've watched the first set of week 1 videos for that course so far which were all introductory/probability review materials, and we'll see how I feel about it with the new materials introduced (stream ciphers are next).
In dw_dev news, I've been waiting for quite a while (about a month) for reviews on the patches I had submitted, and finally got comments on some (not all) of them a few days ago. Sadly, the one I was really excited about, on embeds in comments, did not work out. The way that entry text is being cleaned/processed is more involved than I thought, and my patch didn't cause embeds to also be run through EmbedModule.pm, but just passed it by, which is no good. I'm worried that it will be a lot more complicated to fix this, sigh. EmbedModule.pm seems specifically designed to work with entries, so it might not be possible to just also apply it to comments, but necessary to write a new module (or function in that module, whatever). I applied some quick fixes and updated my commits for the other pull request I got a comment on, but the embeds are going to take more work and I'm kind of chagrined and more into this other stuff now. Might unassign it for a while again so that if others want to work on it they can do so. I think I am getting more out of the courses I am doing right now anyway.
Plus, it is kind of frustrating to wait a month for a pull request review, by which time things are definitely not in the forefront of my mind any more. :-/
Berkeley CS184.1x, Foundations of Computer Graphics, has started and is really exciting. The first homework was just making sure the compilation environment would work and tweaking the color of one light, but I just did the first regular Homework, and it was a lot more fun. "The purpose of the homework is to fill in the code to allow rotation of the viewpoint around a scene, using what is known as a crystal ball interface." At first I was really overwhelmed, but then once I figured out how to enter matrices and vectors it wasn't too bad. It was really helpful to visualize things three-dimensionally while figuring out which axes I needed to rotate the camera around, etc. One thing I'm curious about is whether there's a simpler way to define this one matrix than how I ended up doing it. It was a 4x4 matrix with a 3x3 identity matrix in the upper left, and the eye vector for my camera in the rightmost column. I defined a 4x4 identity matrix and then reassigned the three values in the rightmost column manually, but I wonder if there's an easier way to say, replace this whole column with this instead. I will wait and see maybe what the solution code is after the problem set is due. But, mine works perfectly! And it is really fun to play with. Download of my compiled solution.
Anyway, next in that course we are going to go through OpenGL in more depth, and then actually building a complete scene viewer, so I am really pumped for that.
Harvard CS50x is still going, although I haven't done the week 2 problem set yet and need to get on that. I've been focusing on the other courses for the moment since the Harvard course doesn't have weekly deadlines. Plus, I already actually did that problem set in the past (last year), and I don't think it will be hard to code it again. That's the one with crypto, where the hacker edition is to break crypt(), which I also did before but mine was a really brute-force inefficient method and I was hoping I'd be able to improve it (although edX doesn't allow the hacker edition to be graded, sadly). So another part of why I put that off is that...
...I was hoping the Stanford Cryptography I course (the only one of the four courses I'm currently doing not on edX, as it's on Coursera instead) would be helpful in that area. So far, sadly, this is my least favorite of the four courses. I don't like the interface as much, the lectures are a lot longer, and the professor is not good at clearly explaining concepts. At least, he wasn't in the early lectures. He was going over concepts I am already familiar with in the review of discrete probability, and since I already knew them I was able to follow his review, but his poor explanations made me suspect that those with a less solid probability background might get lost, and I worried that when he gets to topics I am also unfamiliar with it might be difficult to follow him. As an example of one of his confusing points, he uses a capital U to represent the universe/sample space, but later uses the union symbol which looks exactly like a capital U without explaining what it was or differentiating the two. So, this was fine for me; I knew what each was, but is an example of things I found worrying when for those unfamiliar with the concepts, he didn't even explain what the union symbol was. Anyway. I've watched the first set of week 1 videos for that course so far which were all introductory/probability review materials, and we'll see how I feel about it with the new materials introduced (stream ciphers are next).
In dw_dev news, I've been waiting for quite a while (about a month) for reviews on the patches I had submitted, and finally got comments on some (not all) of them a few days ago. Sadly, the one I was really excited about, on embeds in comments, did not work out. The way that entry text is being cleaned/processed is more involved than I thought, and my patch didn't cause embeds to also be run through EmbedModule.pm, but just passed it by, which is no good. I'm worried that it will be a lot more complicated to fix this, sigh. EmbedModule.pm seems specifically designed to work with entries, so it might not be possible to just also apply it to comments, but necessary to write a new module (or function in that module, whatever). I applied some quick fixes and updated my commits for the other pull request I got a comment on, but the embeds are going to take more work and I'm kind of chagrined and more into this other stuff now. Might unassign it for a while again so that if others want to work on it they can do so. I think I am getting more out of the courses I am doing right now anyway.
Plus, it is kind of frustrating to wait a month for a pull request review, by which time things are definitely not in the forefront of my mind any more. :-/