A Return to Aspect-Oriented Programming
Last week, I officially finished up the course component of my Masters degree. Submitting the final report for CPSC 508 felt like a massive weight had been lifted off my shoulders. To recap, here are the courses I took:
Term 1
- CPSC 509: Introduction to Programming Languages
- CPSC 513: Formal Verification
- CPSC 547: Information Visualization
Term 2
- CPSC 508: Operating Systems
- CPSC 539S: Program Verifiers and Program Verification
- CPSC 548: Directed Studies
- This basically consisted of me going through a book with Gail on program style.
Taking three grad courses in a term felt like a lot of work. When I look back on my first and second year at UBC when I basically took 5-6 courses per term, I don't know how I survived.
If I had to pick a favourite set of courses, it would definitely be 509, 539S, and strangely enough, 547. 509 really scratched the programming languages itch that I strangely appear to have, 539S was hard (but I got to write a ton of Scala ❤️), and 547 was just plain fun. It's sad that I'll likely be graduating without having taken any graduate-level courses in software engineering, but I guess it is what it is.
This feeling of happiness at being done with courses forever (for the second time, nothing will beat the ecstasy of taking my final undergrad exam), was fleeting, as I now realize that there's this thing called a thesis that I have to write. I still have absolutely no clue what I want to write about. That said, I'd really like it if I can mix programming languages and software engineering together.
So it turns out that sometime in January, I agreed to present a paper at the joint UBC-UW Software Engineering Reading Group (SERG), and I spent the last two days madly slapping some slides together. By some strange hand of fate, I'm presenting the very first academic computer science paper I read: Aspect-Oriented Programming.
Back when I read this paper, I thought it was the coolest idea ever. This was largely due to me not being able to understand most of it (I had only taken intro. programming at the time). Coming back to it after a few years of classes and industry experience, I read the paper with new eyes. I guess this sort of proves to me that I actually learned a thing or two in the past 5 years, but I'll stop before my head gets too big.
I'm convinced of what Aspect-Oriented Programming does with respect to providing first-class support for cross-cutting concerns, but I'm not sure if the tradeoffs are worth it. You effectively introduce a situation where the source code looks some way, but behaves a totally different way (via advice that executes at some join points). This level of indirection seems like a very expensive tradeoff for being able to encapsulate cross-cutting concerns. This also brings me to another question, is AOP just a solution looking for a problem? I'm looking forward to tomorrow's paper discussin to hear what the folks at UW have to say.
Also, I got called a boomer by my advisor. I seriously can't believe that happened. I'll have to get her back someday.
That's it for this week, see ya