Led by Chun Wai Liew, assistant professor of computer science, the Software Engineering class divided into teams to create basic versions of The SIMS, a game in which users manipulate groups of simulated people in various scenarios and watch the effects of their input.
“It was fun, but a lot of stress,” admits Prince Chidyagwai ’05, a double major in computer science and mathematics from Marondera, Zimbabwe. “We really learned what the software engineering field is like.”
Chidyagwai worked in a group with Konstantinos Bousmalis ’05, a dual degree student in computer science and mathematics from Thessaloniki, Greece; Oliver Bowen ’05, an electrical and computer engineering major from Johannesburg, South Africa; and Mayank Lahiri ’05, a computer science major from Muscat, Oman.
They worked to create four software components: characters, actions, movements, and threads, which are two or more processes occurring simultaneously, explains Chidyagwai. They came up with seven characters, which could walk, talk, insult each other, hold parties, drink, build a house and install its furniture, including a hot tub, and even suffer a personal crisis. Each character had changing levels of conditions, such as hunger, energy, and sobriety.
Liew’s goals for the class included:
- to learn how to program in groups;
- to develop medium-sized software modules, in contrast to the smaller programs in most courses;
- to gain experience with using various development tools, such as source code control systems, and software programming libraries as opposed to writing everything from scratch;
- to program in the C++ language instead of Java.
“I was obviously aware that a full version of the game was not possible in 12 weeks,” he says. “The students had to develop a subset that made sense in terms of the overall features of the game. I gave the assignment because it was a game that most, if not all, of them were familiar with, it would require creative effort from them, there was a challenging user interface problem as part of the project, and it would be fun.”
The students used a file sharing system that allowed Liew to track their work and see what contributions were made by individual students. The project culminated in a one-hour demonstration at the end of the semester.
“There were several milestones throughout the project, such as completion of the specification requirements and the design,” he says. “These were spaced at two-week intervals through the first two-thirds of the course. After that, I met with each group once a week to discuss progress, obstacles and plans.”
Scenarios created by the student programmers included Fraternity SIM, College SIM, Dorm SIM, and Prison SIM.
Liew says he observed many achievements over the course of the semester, and he was most impressed by the students’ comfort level in programming such a major undertaking.
“They acquired confidence in how to deal with large software projects,” he says. “This is important, as most interesting projects are large multi-person projects.”
A former programmer and software developer at several companies, Liew is coauthor of MHDL, a computer language for describing and specifying microwave systems. He regularly shares his research at conferences in his field.
Liew also oversaw a group programming project during the fall semester, when four computer science majors developed a groundbreaking, online database to chart risk factors and their consequences on the community for Northampton County Communities That Care, an organization that serves local elementary and secondary students.
He also has worked closely with individual students taking on challenging projects, including:
- evaluating the effectiveness of encryption systems that protect the security of on-line purchases;
- analyzing advanced database systems and their application to the Internet, looking specifically at how databases are used to fuel the information that is displayed in dynamic web pages;
- using artificial intelligence to develop a computer network security system;
- constructing a web-based Japanese tutoring system;
- improving analysis of computer network reliability;
- researching parallel computing;
- developing a computer-based tutoring program for computer science and physics courses;
- simulating a traffic intersection on computer;
- designing a computer graphics system that can help video directors capture their subjects at the best possible angles.


