Student Blogs - Carnegie Mellon Silicon Valley - Carnegie Mellon University

Student Blogs

MS in Software Engineering, Technical Track Blog

Wondering if a Carnegie Mellon degree is right for you? Read about our students' experiences through the MS in Software Engineering, Technical Track program.

Rahul is a full-time MS Software Engineering, Technical Track student. He loves traveling, trekking, swimming and is a complete movie buff.
Anthony is a 2nd year part time student in the MS Software Engineering, Technical track program and works at OSIsoft as a Software Engineer. He loves spending time with his family, hiking, biking, gardening, cooking, and sometimes photography.
Suma is an alumna of the MS Software Engineering, Technical Track program. A Mechanical Engineering undergrad, she loves writing and is passionate about music, shopping and dogs.
Minh is a Software Design Engineer at Microsoft and alumnus of the MS Software Engineering program. He is also a Vietnamese community activist, a cat-lover and passionate fan of film music.
Nick is a Software Engineer at Google and a first-year grad student at Carnegie Mellon Silicon Valley. He loves hiking, gaming, and both really extremely good and extremely bad movies.

Friday, April 18, 2008

Requirements Engineering - Second semester wrap-up


This semester was definitely a remarkable change of pace from the first one. In the first one, we took one course, Foundations of Software Engineering. It had mainly been focused on things that I already understood, like coding and some design patterns. This semester was something else entirely. We took a course called Requirements Engineering. We focused on gathering requirements and then prioritizing them for a release. I have never done anything like this before, even at my day job at Google. I learned how to conduct user interviews, how to do UI design, how to develop use cases, how to do usability tests, and how to prioritize and maintain requirements as they change. In addition, we had excellent readings and discussion on how to improve meetings, with the wonderfully named Death by Meeting as an introduction to the problem. This course's newness to me really made it significantly more mentally challenging than the previous course. I'm very excited that I've actually learned some things about how to design features that users will actually want instead of those that engineers think they want.

Specifically, we worked on a movie recommendation product that would leverage social networking to give people personalized recommendations. At least, that's how it began. During user interviews, nobody we interviewed said they would bother figuring out yet another social network. So we had to push back on our VP of Marketing (role-played by one of our faculty members) to revise the vision from a social network like Facebook or Myspace to one where the social network was one-way. That is, you could look at another user's reviews and say you agree with that user, but the other person has no need to know who you are or approve you. Then, a personalized recommendation can be built based on your history and those of the users you agree with. That let us build a system more like Amazon's recommendations but for movies instead of something like a Myspace for movies. The whole process was really interesting.

Looking into the future, we have the Gathering coming up, where all the students fly in to Carnegie Mellon West and meet up in person. This will include my teammate from this semester who consistently dialed in from Saudi Arabia, so I'm pretty excited about that. Our next course is architecture, building on the Movie Recommender product from before. During the Gathering, I'll be learning more about the specifics.

posted by Nick Lynn @ 10:30 AM  0 comments

Wednesday, April 2, 2008

Construction III – The Best of All Worlds


This has got to be one of the most awesome classes at Carnegie Mellon West. It’s the accumulation of all we have learned in previous classes and we are putting all our theory and previous work into practice. You see, in the past year and half, we have developed this concept of a “Movie Recommender” product that provides recommendations for movies to watch based on your movie ratings. In the Requirements class last spring, we gathered the requirements, came up with UI mockups for a website, ran it through usability tests and worked with the VP of Engineering (remember, this is a role played by one of the faculty members) to negotiate a list of requirements that we deemed to be reasonable to implement. In the Architecture class last summer, we designed several architectures for a recommendation engine framework and how it would interact with the website layer. During Construction I last fall, we actually built the presentation layer in Ruby on Rails—both for the web as well as the cell phone.

Well, this is the semester we are putting everything together, and it’s an absolute joy and a very exciting project. Our team, “Team Gang of Six,” has studied prior research made by other teams in previous classes on all the above-mentioned aspects of this product, and our vision of the final product encompasses the work that so many different students had done previously: our Movie Recommender website was designed and incepted and prototyped by Team TMate in ASP.NET/C#. The event-based RecommendationEngine framework as well as the service-oriented integration point between Ruby on rails and Java was architected by Team Pantheon, the actual weighted/collaborative-filtering-based algorithm was proposed by Team 365, the actual migration of the ASP.NET prototype by Team TMate into Ruby on Rails was already previously done by Team TripleT during Construction I. Our current team is now putting all these ideas and prototype code together and are actually implementing the final Movie Recommender website and the Java-based recommendation engine, all while trying to apply software engineering best practices we have learned so far, including agile programming, SCRUM and design patterns. It’s really a firework of a project whose pyro is made up from the great work of some 20+ schoolmates (who might not even know that we picked up on their research).

The beauty of Carnegie Mellon West was also that this project was negotiated between the students and the faculty. Last semester, some of the students in Construction II were dissatisfied with the content of the class, as we felt we weren’t really learning any new concepts. So, we came together and approached the faculty and suggesting focusing on construction activities, and through some negotiation were able agree on several construction projects. In addition to allowing teams to work on constructing a product of their choosing (though it had to be approved), we also got to learn quite a lot about best practices. The plenary sessions consists of student-led presentations about different design patterns (iterator, abstract factory, template, façade, strategy, singleton, decorator, you name it), as well as some very interesting software engineering topics and discussions such as post-mortems, V-testing, software quality testing, code inspections, code reviews, good design heuristics, code coverage, code documentation, bug patterns, etc.

In a way, this class already feels like the practicum (which is yet to come this summer actually). We are given a lot of autonomy, and if you give a bunch of enthusiastic, opinionated students the freedom to code on what they want to do—you are going to get a bunch of students who enjoy the class, put in extra hours to make the product perfect and have full ownership of the product. Very cool!

posted by Minh Nguyen @ 10:30 AM  0 comments

Previous Posts Archives