Summer’s almost an end and all across the United States (and I suppose some other countries too) students will be going back to college and school. I’ll be heading back in a week, a little early because I have Residence Advisor training for a week. I think it’s time to take a little time to look over my summer and think about the semester ahead. Of course, this being a technical blog, I’m going to focus on computer science related activities.
My main activity for this semester has been my summer research project, where I’ve been working with two friends and a professor to develop a system for automating urban planning and design. It’s certainly been interesting work. It’s my first experience working as part of a real team, and we’ve developing from opposite ends of the planet using email, web conferencing and of course, version control. Since I had decided to take up the human interaction portion, I had to come up with an interaction language. I got to learn about language design, basic parsing techniques and implemented a recursive descent parser in Python. I had been interested in programming languages for a while, but this has really fired my interest and I want to work more on this. I also learned about interacting with users and how to mold your software to fit their requirements. All in all, I had a good real-world experience which I think is just as important as any class I will take.
Besides my project, I’ve been reading up on computer languages and compilers. I’ve been reading online information sources and watching some videos about recent developments in the field. I started reading the Dragon book and have found it to be a very good book, though it will take some time and effort to get through. I fully intend to continue reading it next semester.
I had been looking for an open source project to contribute to, since I don’t want to limit myself to classwork or one-man projects. Considering my current interest, I think the Low Level Virtual Machine is a good target. It’s seems to be a very dynamic project which is implementing some very interesting concepts which means I can learn a lot. At the same time, there’s still a lot of work to be done and is separated well enough for a newbie to get to work and contribute without much trouble. I’m going to start by doing ‘code-cleanups’ (removing extraneous code that’s already been flagged as such) once I’m a little more grounded in the fundamentals of compiler technology. I’d like to be able to work on it over the rest of the year and next year so that I can get a Google Summer of Code project for it next summer.
Since I started using a Mac at the end of last year, I’ve come to admire it both as a user system and development platform. I dabbled in some Objective-C and UI development, mainly as a front end to my summer project. Though I think Cocoa is an excellent platform, and I would enjoy using it, it’s not something I want to pursue for the time being. I’ll still be using a Mac a lot, but it’s not something that I will coding for at the moment.
College education can often be just a case of following the requirements and graduating on time with a decent GPA. However, since I’m only going to be in college full time once, I’m determined to make the most of my college experience. As a result I’ve been looking to reduce the courses which I don’t think I will benefit from. Of course, I still need to do something and so I’ve been designing an independent study for myself. We have a Logic course which generally required for computer science. However, I’ve been designing a course based on Turing Machines and Lambda Calculus, essentially the historic foundations of computer science. My professor is suggesting that I change it somewhat to included more programming languages concepts and hence get credit for that instead. So there’s still some work to be done on it.
Finally I’ve been brushing up on my web design skills. I’m going to be making a info page for our project and also redesigning my college’s CS department website. I also need to update my own website which has been frozen for months. That should keep me busy until it’s time to go back next week.
So much for the summer. For next semester, I have a few things planned. I’m hoping to continue my research work as I have some ideas for what to implement next. And my independent study should prove interesting too. I would definitely want to write this blog more often and my studies should provide ample ideas (I’m taking a digital circuits class too). I think I should devote some time to my website too and make it more professional. I’m not sure when I’ll be posting again, since I have people to visit and packing to do. However at the latest, I should have something new up by the end of next week. So till then, goodbye, take care and have fun.