This post explains the reasons why I changed majors from Computer Engineering to Computer Science; I include some suggestions on how pitfalls that I encountered could be avoided, and what could be done by the school to improve Tech’s computing classes and organization.
Shortly after I decided to change majors from Computer Engineering to Computer Science, I wrote this explanation of my intent, and included some problems I felt caused the change. First, though, a quick education in Georgia Tech’s organization: it is composed of six “colleges,” two of which are the College of Engineering and the College of Computing. The college of Engineering has several schools that are loosely integrated; the schools all have relative independence, and act as somewhat independent entities (as far as students are concerned) that happen to be categorized into “Engineering.” My old degree, “Computer Engineering” (abbreviated CmpE) was in the Department of Electrical and Computer Engineering (ECE) in the College of Engineering. The College of Computing, on the other hand, is tightly integrated; while it also has three “schools,” they are more organizational in nature. For reference, the College of Computing is about the size (in both numbers of faculty and students) of two or three “schools” within the College of Engineering.
Everyone thinks about changing majors at some point in their academic career. You wonder if you’d be happier/smarter/better in this school or that one; find you can’t handle a certain curriculum, or learn something about yourself that causes you to take a different path. For me, that time came this past spring semester. I decided that my current degree path wasn’t what I expected when I attended FASET oh so long ago. There were several reasons, and the decision was an agonizing one. Now, don’t take this editorial as an attack on the School of Electrical and Computer Engineering, because there are many good things the school has to offer, especially their impressive Professional Communications Program. Rather, consider it a series of suggestions.
I really liked my (now former) school, but the reasons I wanted to switch were complex and, in my opinion, represented deeper difficulties than one or two poorly taught classes could explain. In fact, a quick brainstorm shows about six separate reasons that (to me, at least) justified the change. I’ll start out with the easiest one-being a co-op taught me how to program, and how to design programs. It showed me a skill that I didn’t know existed, and it’s something that I enjoyed then, enjoyed today, and will enjoy doing tomorrow. In my opinion, designing programs and working on more established code bases are fun, as long as you don’t need to touch COM.
Now, this next reason isn’t a cop-out, but I had a poor teacher along the way. I’m not going to say who, or what subject, but I knew more about that basic ECE subject before I started the class than when I completed it. I don’t know how that happened, but it did. It was ultimately the underlying reason that made me consider a major change. How could it have been fixed, though? In my opinion, the ECE department needs to follow the model they have been using with DSP and turn 50-student classes into large lecture classes. Since all students need to learn the same things, it makes sense to give them the same (high-quality) education, and employ other professors on hand as section TAs. That way, the basic education each student receives is the product of multiple professors.
Aside from teaching, there’s a culture difference between the School of ECE and the COC. As far as I can tell, the COC is nicer. Difficult subjects are taught more humanely. Not that the COC is perfect, but the vibe the school gives off is a more positive one. The dimly lit halls of the Van Leer building can’t hold a candle to the bright corridors of the buildings associated with the COC, especially the Klaus building. Also consider the scope of each; the College of Computing is a college, and contains several schools devoted to related topics. The School of ECE is a School, and is therefore more limited in the academic freedom available to them. They’re grouped in with all of the other types of engineering, whereas the COC is free to think of inventive programs.
Organizationally, it would make more sense if the School of ECE was placed under the College of Computing, and the curricula were integrated. It’s a huge change, but consider that a student should be able to pick a point along a spectrum that ranges from computational media to pure software to pure hardware, and take classes accordingly. Consider it an extension of the COC’s interesting “threads” program, for which there is no ECE equivalent. Furthermore, the School of Electrical and Computer Engineering is lacking on the “computer” side of things. Anyone who has spent time majoring in CmpE (or at least studying the recommended curriculum) knows that there is virtually no difference between EE and CmpE at the lower levels. I’ve been told that they differ around the fifth year; however, a good education in computer engineering, in my opinion, should be a synthesis of CS and EE concepts rather than an EE degree with a different name. A merger with the COC would solve those problems and more.
I don’t doubt that such a merger has been proposed before, and I don’t doubt that it won’t happen while I’m a student here. However, it is a needed change. I don’t doubt that having them separate holds some benefit or another, but are these supposed benefits so important that you would put them before my education? I started out as a happy Computer Engineer, and through several paths, learned that I was actually an unhappy Computer Scientist. What, other that intangible organizational boundaries, really separates an engineer from a scientist?