Software, Multithreading, Excitement

The Software Engineering class here at Virginia Tech is nothing to scoff at. Homework accounts for 80% of the grade for the course this semester. Don’t let that title fool you though; we don’t get homework, we get projects. On the first day of class professor Plassman said that the average assignment will be about a thousand lines. This might have been an underestimate for some people though; just my source code (no headers) for my last assignment was almost 1,600 lines. Even though the assignments require plenty of work, they are some of the most interesting I’ve ever.

In this class, we learn to program in C++ using the Qt framework. Initially using Qt was frightening to me (although perhaps it still is). Learning to use the massive number of Qt classes and functions and features is an undertaking. They empower you to do so much though. Our latest assignment was to computer simulator with a GUI interface. Once all is said in done, it is quite amazing to see how pushing buttons on my GUI asynchronously updated the state of the simulator. To think that our processor – a unit notable for sequential execution of instructions – can react accordingly to a variety of inputs at random times. This is the power of using a multitasking operating system like Linux and multithreaded applications.

Just today, we began learning how to use QThreads (a part of Qt) to give us even more fine grained control of our programs’ threading. I can already think of a bunch of fun projects that I can take on now with QThreads. Perhaps I can start on a parallel linear algebra library or N-body simulator. Multithreading is quite an interesting topic to learn.