Saturday, May 19, 2012

GRE is just around the corner!

It's been a while. In my personal life, I've had some significant changes... which I'm not going into except to say that they may or may not have been impacting what I've been able to accomplish. Which isn't so say that I've been lax recently; I've been able to be productive, if not superbly so.

The GRE is in less than two days, coming this Monday. I really hope I do well, because I don't want to have to take it again, both from a monetary and a time point of view. I definitely should have been spending more time on it over the last few weeks, but it's just so... blah. Any time I'm studying for it it feels like I'm wasting time. But, I haven't completely ignored it, and I also am planning to take a practice test tonight (perhaps just half of one, depending on how the time works out), and possibly tomorrow as well.

So with my "real" classes, let's see how much I've gotten done.

Progress:

  • Stanford Programming Abstractions: completed the first problem of problem set 4.
    • Yeah, it's really not a lot, but I've had to de-prioritize Abstractions in order to keep up with some of my deadline-containing classes. The main thing I want to solidify my knowledge of are pointers. While there are certainly many other important things included in these lectures, pointers are one of the fundamental topics of C/C++ programming and are essential to claim knowledge of the languages besides just syntax. So, I at least want to make sure I can get those, if not do a 100% on the full problem set as I have been (for the most part) on the others.
  • Coursera Machine Learning: completed first programming assignment, watched through section 6
    • I've been going back and forth on whether I should stick to the Coursera lectures or switch to watching the lectures from SEE (the original Stanford lectures). Those lectures are presented on a higher level (in terms of sophistication) and give a more thorough treatment of the subject, complete with discussions of probability, more derivations of equations, and so on. I think ultimately due to time constraints and mismatch of material covered that I will end up sticking with the Coursera lectures, and returning to the SEE class later. I wish that the Coursera lectures were presented with the same level of sophistication as the Stanford lectures, as the Algorithms course had been. But as is said in Japanese, しょうがない。
  • Coursera Computer Vision: watched through section 4 (dynamic perspective)
    • This class has definitely picked up from the post I made May 4th. In fact, I think that I neglected to include some progress I had made in the class in my previous blog post. Anyway, they have uploaded a good deal of lecture videos as well as an assignment (which I hope to do tonight or tomorrow). I still get the sense that the material has been somewhat awkwardly ported from a college course to the online lecture format, rather than having been built from the ground up to fit the MOOC paradigm, as for example the Udacity classes, and most other classes are. But that doesn't really matter too much to me; what matters is that the content is interesting, and it definitely is. I had never considered that the whole basis for what we understand as "how the world works" comes from mathematical properties of a 3D projection onto a 2D plane. It's really cool.
  • Udacity Web Application Engineering: watched through unit 5, completed homeworks 3, 4 and 5
    • It becomes clear how much has gone by since my last post when I note that I've completed 2.5 lecture sections and 3 homeworks in this class since my last update. This class is certainly the most practical class of all that I'm taking, and that's not a bad thing. There's a huge amount of useful, if not theoretical, information being given in these lectures and it's great. This week was a bit of a break compared to weeks 3 and 4, which were both a lot of content and quite a lot of frustrating work on the homework. While both of those took me several hours to complete, in contrast week 5 only took about an hour. However, the concept introduced in week 5 was that of how websites disseminate information (through e.g. JSON and XML) such that it can be easily parsed by web applications. This rather simple concept is really quite powerful, and explains a huge wealth of applications and potential applications that take advantage of the ability to read and analyze the informational content of a web page. Cool stuff.
  • Udacity Programming Languages: watched a bit past the middle of unit 4.
    • Wow; in stark contrast to the substantial progress I've made in the web course, with this one I've only gotten through half a unit in more than two weeks. Ouch. Unit 4 has turned out to be quite a drag. What had been an interesting and easy-to-follow course up until then took a sudden turn for the convoluted as Professor Weimer's explanation of parsers made little and less sense to me. I'm going to try to finish the class, but in some ways I'm wondering if I might not be better off jumping ship to the Compilers course. That course turned me off a bit by introducing the requirement of learning a new (and practically useless) programming language called COOL for which to write a compiler. While I'm sure that there are many benefits to constructing a language specifically for the purpose of making compiler design easy, nonetheless it's really irksome to have to learn a whole new syntax just for one class. It would have been nice if they had at least modeled the syntax on a well-known programming language so that it would be easy to learn. But then again I'm sure it wouldn't be a big deal if I just sat down and took the time. We'll see.

No-progress classes: Linear Algebra, Udacity Robotics... I'll get back to you guys when I have some more time! Sorry!

Saturday, May 5, 2012

Second update today...

Well, it's finally time to hit the hay tonight, as it's technically tomorrow, but I figured I'd update once more, seeing as I was so productive today. Whee.

Progress:

  • Stanford Programming Abstractions: watched through lecture 12.
    • Pointers! Um... are hard. Well, not super hard, but a bit unintuitive. I guess they'll get clearer when I get some practice with them. Hopefully I won't blow up my computer using them.
  • MIT Linear Algebra: watched through lecture 9.
    • More on spaces; this time talking about basis vectors, vector independence and such. Interesting. Actually this stuff was pretty easy to grasp, at least, at the beginning. Urgh, 9 lectures means I'm due for another problem set. Like Abstractions I guess.
  • Coursera Machine Learning: watched through section 5.
    • Learning about Octave, which seems cool, I guess. I guess it's like Mathematica, but it's reeeally big on matrices. Haven't really done much with it yet, but it all looked pretty straightforward. We'll see, I suppose.
  • Udacity Web Application Engineering: watched through the middle of unit 3.
    • Databases! A fairly straightforward topic, at least at the level that it's been taught so far. They aren't exactly lighting my fire as of yet, but I suppose they're cool. The parts that would likely interest me would relate to algorithms. There was a bit of that, mentioning hash tables and the like. I learned a bit of SQL code. With that plus Octave, I can now say that at least in a very limited sense, I've added two languages to my repertoire. Man, including JavaScript and I'm really learning quite a few! Though, none of them I've used in any real depth save for Python and C++.
So yeah, significant progress on four additional courses after my first update! Plus, I talked with my brother for 2 hours on the phone and watched several episodes of Big Bang Theory! Woohoo. Productive day. If I can match it tomorrow it'll be great.

Finding Programming Languages so interesting, I've also registered for the Coursera class on compilers, and watched the first two lectures. I'm not sure how much time/energy I'll be able to devote to that one, but it would be nice if I could complete that one too - perhaps not in a timely fashion though. Oh, and I forgot to mention that I have registered for the GRE! The test date is May 21st... only about two weeks away! Yikes. I keep putting off studying for that, since it's such a waste of intellectual resources compared to the other classes... but indeed, I had better do some more reviewing. Argh.

Stuff I'd like to get done tomorrow: 
  • Udacity Robotics course (finish unit 2 and possibly unit 3)
  • GRE study
  • Linear Algebra and Programming Abstractions problem sets 3 and 4, respectively
  • Possibly watch some more lectures on Compilers.

Friday, May 4, 2012

Moving is complete! Back to work...

Well, this past week has been relatively quite unproductive, because I have been moving to a new apartment. Who could imagine how much crap that involves! Well, strictly speaking it should have come as no surprise, since I had done it only a year prior. But that time, I was moving from a smaller place to a larger place, instead of the other way around, and thus I had no need to do all of the throwing away that this one required. And since in Japan, throwing stuff away is a hugely involved process that includes not only proper separation of all trash categories but also taking the trash out on the right day (an impossible proposition when you're under a time limit, by the way), suffice to say it was a pain.

But, I managed not to be completely unproductive, so let's see what I have done.

Progress:
  • Udacity Programming Languages: Watched through the end of Unit 3. 
    • Having accomplished little in the last week, I marathoned two units in two days (technically three but I skipped a day). The class is still holding my interest very well. I like that it's more theoretical than the other udacity classes I have taken. Although the stated goal of the class is to build a web browser, so far there has been little direct work on that front, instead focusing on fundamentals of programming languages, compilers and interpreters like finite-state machines, context-free grammars, and other highfalutin-sounding topics. Anyway, it's cool and as a plus, I've also learned a little JavaScript. Well, actually I've learned a lot of JavaScript since much of what I know from Python and C++ ports right over to it - what's still missing for me is how to integrate it into a webpage with stuff like user input, etc. I'm not sure to what degree that will be covered in this course, or perhaps in a course such as...
  • Udacity Web Application Engineering: watched through the end of Unit 2. Completed weeks 1 and 2 of homework assignments.
    • I don't feel particularly intellectually challenged by the course as I do from Programming Languages. Indeed the course seems much more "practical" in a way that makes me feel like I'm taking a DeVry course (though I can only guess at that, not actually having taken a DeVry course). By which I mean that it's a lot of "how to" knowledge, and not a lot of theory or deeper stuff. But that shouldn't suggest I'm not enjoying the course. There's a lot of really useful knowledge here, with a wide range of applications. I'm not sure I'm interested in a career as a webmaster, but at least I understand some of what goes into that job now. I expect things to continue to blossom.
  • Udacity Robotics: watched through the middle of unit 2.
    • Yes, indeed my progress leaves a bit to be desired. But I hope to make up for lost time. Unsurprisingly, not having the time limit that some of my other classes have takes away the urgency somewhat and makes me more likely to put it off. But I do plan to pick up the pace again. So far, I haven't really connected with the material; something I hope will change soon.
  • Coursera Computer Vision: watched through the second of two lectures.
    • To be frank, I'm disappointed in this class so far. Other classes I've taken have had loads of content right from the get-go, but two weeks into this class and all there have been is less than an hour of lectures. The first week there was nothing but an "introduction" video with very little technical content. I assumed maybe they just hadn't finalized their course materials yet or something and the "real" class would start next week. And yet when week two rolled around, there was again only a single video lecture. This one at least had some technical content, with a mathematical discussion of perspective and a flipped image - the kind of thing that would be fine when coupled with other videos, but it was quite underwhelming alone. And still no homework assignments.
  • Coursera Machine Learning: watched through unit 4.
    • In contrast to Computer Vision, this class has been serving up loads of content, both in lectures and problem sets (though so far there have only been "review questions" which are pretty much softballs). It seems clear that a topic like this makes a lot of use of linear algebra, which makes me glad I've gained the moderate skill that I have in that subject, as it saves me from a trial-by-fire that would have otherwise taken place.  Even though he tends to shy away from discussion of calculus, there's lots of cool math to be found in this course. It's somewhat odd that calculus is downplayed, because the same does not seem to be true for linear algebra. I wonder if that's because he assumes that people will find linear algebra easier than calculus (not the case for me) or if it's just more central to the topic. Probably the latter. Anyway, although it's not my favorite course yet (that would probably be programming languages), it's good.

Note that I haven't included in this list Linear Algebra or Programming Abstractions. That's because I simply haven't watched/done work for either one since my last update. :( But I plan to change that today; hopefully I will watch at least one lecture from each.