Francis Leung, Ph.D. Industry Professor of Computer Science Office: Office Hours: Tuesdays and Thursdays 2:30pm to
3:30pm Phone: 312.567.5343 Fax: 312.567.5067 Email: firstname.lastname@example.org
Wu-Hon Francis Leung, Ph.D.
Industry Professor of Computer Science
Office Hours: Tuesdays and Thursdays 2:30pm to 3:30pm
What am I working on?
Teaching: I teach two courses: a senior course on software engineering (CS487) and a graduate course on operating systems (CS551). In CS487, students learn software development processes and methods by working in a team to develop a software project. The operating system course focuses on design and implementation. The students will develop a subset of a shell, a set of useful system calls and modify a device driver with additional useful functionalities.
Research: I now focus on two problems in software engineering: (1) Can we add new features (functionalities) without changing code? (2) Can we verify software automatically based on assertions instead of case-by-case testing? These are the two most important problems in software engineering: an overwhelming majority of the programmers in the industry are engaged in changing code and testing, and both activities are labor intensive and error prone. They are among the main reasons why software development is difficult and time consuming.
For the first problem, many believe that when a software system churns often, it is due to bad design. Sometimes that is the case. But often the programmers just cannot help it. It can be shown that with existing general purpose programming languages, implementing a feature by changing the code of other features is inevitable for a large class of applications including those that require exception handling (see  and ).
The use of assertion based verifier in hardware design is becoming routine. But to do so in software is much harder. For example, hardware assertions are Boolean formulas but we must reason in predicate logic with software. Reducing complexity is key to solving this problem.
The first problem requires new programming paradigm supported by programming language to solve. Programming language design can help to reduce the complexity of solving the second problem. The following papers give more details on our approach to solve these two problems. You can download some of our results and obtain more information from the web site: www.openflx.org.
 Lian Yang, Amit Chavan, Karthid Ramachandran and Wu-Hon Leung, í░Resolving Feature Interaction with Precedence Lists in the Feature Language Extensions,í▒ in Feature Interactions in Software and Communication Systems IX, L. du Bousquet and J.-L. Richier (Eds), IOS Press, 2008.
 Lei Sun, Lu Zhao, Yimeng Li and Wu-Hon Leung, í░Feature Interaction Detection in the Feature Language Extensions,í▒ to appear in Proceedings of International Conference on Feature Interactions, June, 2009.
Earlier, my students and I also worked on protocols, particularly on multicast protocols. The following is a couple of examples of our results.
 T. Venketesan and W. H. Leung, í░Implicit Multicast Routing Protocol,í▒ International Conference on Networking and Services, October, 2005.
 L. Nadeau and W. H. Leung, í░Message Ordered Multicast Using Common Building Blocks,í▒ Proceedings of InfoScale June, 2006.
After receiving my Ph.D. degree in computer science from the University of California, Berkeley, I went to work in the industry for over twenty years, first at Bell Labs (over 15 years) and then later at Motorola. I started out as a developer and researcher. Later, I managed both research and development projects. Some of the development projects that I was involved in employed over a thousand programmers. Among my proudest technical results: I was the main inventor of the original patent on remote procedure call, my group developed the switching software for the first packet voice field trial in the public network, and later developed the first multimedia conference system based on packet switching technology. I am an IEEE Fellow, cited for my contributions to operating systems, protocols and programming methods.