Dr. Tao's Expertise Domains for Dissertation Supervision
- Internet computing technologies: CORBA, Web servers, application servers, Internet-based applications and tools
- XML and Web services: XML data structure specification and validation, B2B system integration with Web services
- Parallel computing technologies: multi-computers, multi-processors, parallel programming environments, parallel algorithms, MPI
- Distributed computing: cluster computing, load balancing, multi-tier client/server applications
- Programming tools and platforms: advanced C/C++/Java, compiler design and implementation for programming languages or generic data parsing and transformation
- Simulation technologies: computer simulation of large computing or industry systems, virtual computing systems
- Operations research: system optimization, simulated annealing, tabu search, stochastic probe; applications in VLSI design, parallel/distributed system performance optimization
DPS Dissertation Resources: Visit Dr. Lixin Tao's DPS Dissertation Resource Center for more information on DPS dissertation resources and supervision
Research Incubator: Combinatorial Optimization
- This is Lixin Tao’s hands-on tutorial teaching you how to do research in the area of combinatorial optimization. Click here to download all the three components of this tutorial.
Sample Master Theses Completed under Dr. Tao's Supervision
Sample Potential Projects
The following projects are suitable for either Master thesis or DPS dissertation projects. The level of the projects mainly depends on the amount of originality involved.
- Pace Parallel Programming Environment (PPPE)
I have implemented a Parallel Programming Environment in C/C++. It consists of a parallel language based on C, a compiler to compile the parallel source code into virtual code (similar to Java bytecode), and a parallel systems simulator that can execute the virtual code and provide a complete debugging environment. The simulator can be configured to simulate hundreds of processors interconnected in most common topologies including line, mesh and torus in any dimensionality, and hypercube. The objective of the environment is to allow the industry to develop platform-independent parallel software on any platform (say on PC), find performance bottlenecks of such programs on various real-world machines, and fine-tune the performance of the parallel software.
I plan to enhance this system and name it Pace Parallel Programming Environment (PPPE). Around 8 theses can be produced around this project, each focus on the enhancement of one aspects of my existing system: compiler for parallel code, processor simulation’s design and implementation, networking simulation’s design and implementation, performance debugging techniques, generating native code for specific commercial parallel systems or workstation clusters, provide more complete support for MPI (the industry standard for parallel programming), and make the system server-based so clients can get its service through remote Web browsers.
I have a prototype pure-Java Web server. In addition to the basic Web server functions, it supports CGI and Servlets. Projects around this Web server may include improvements of its functions and performance, add a Web browser-based GUI for Web server administrator, and design and implement a distributed version of it to deliver better performance on a cluster of workstations.
A large circuit design needs to be implemented on a few silicon chips. The interconnections among the components on the same chip are fast and reliable. The interconnections among the components belonging to different chips are slow and error-prone. How to distribute the circuit components among the chips so that each chip takes similar amount of silicon surface, and the number of interconnections across the chips is minimized.
- Internet-based games, applications based on CORBA technology
You only need to know Java to learn CORBA. With CORBA, you can implement Internet-based applications and distributed applications without deep knowledge in networking. Potential sample projects include
- A license control center that can monitor the applications executed on various platforms
- A Internet-based GO game that remote players can play through their Web browsers
- Fast adaptation of existing legacy applications so clients can get its services on the Internet
- Dynamic animation of data structures and algorithms
I have implemented in Java a complete set of animations of data structures and algorithms. The topics include all topics in a typical data structure course: stack, queue, hash table, binary tree, AVL tree, various sorting algorithms, recursion, etc. The project can run either as a standalone application, or as an applet to run inside a Java 2-enabled Web browser. It is intended as a teaching aid for undergraduate computer science/engineering students. It animates the operations, and highlight the corresponding source code that generated the operations. The users can interact with the animation process by providing input data and specifying the sequence of operations to be carried out. The project can also run in automatic demo mode.
Further enhancement is needed to make the animations more robust. The code animation part is not complete yet. The on-line help system is not completed yet.
Currently Java programs are mainly interpreted. The Java compiler will generate bytecode (high-level internal representation) files to be interpreted by Java virtual machines at runtime. This is important for Web-based applications to ensure security. But this interpretation makes execution of Java programs much slower than counterparts in C/C++, and the Java virtual machine takes significant amount of computer resources (if you run 5 Java programs at the same time, you will see the sluggishness, if your PC is still alive; you can run dozens of C/C++ programs concurrently with no problem at all.)
In this project, a compiler will be designed and implemented to translate a subset of Java (roughly the equivalent of C++, excluding GUI, multithreading, multimedia, internationalization, etc.) into its C language version to be further compiled into machine instructions by a C compiler. Such a Java compiler will be interesting for developing standalone applications that don’t suffer from network security problems.
- More will be added ……
- More can be suggested by you
DPS Dissertation Resource Center