Master's Projects
Revised: 5/24/2011
"
By the time a man realizes that maybe his father was right,
he usually has a son who thinks he's wrong.
"
- Charles Wadsworth
Distinction between a Master's Project and Thesis
The scope of a Master's Project is approximately equivalent to a software design course project, e.g., CSE687, plus
a report. The report is like a C-Specification, but a little less formal. So, you should expect to spend 20
to 30 hours on an implementation and another 10 to 20 hours on a report. You have satisfied this requirement when
your faculty advisor and Program Director approve the project. Note that there are other
forms of Master's Projects, discussed below in items 2 and 3.
A Master's Theses is much more work. You should expect to spend six months of half time work conducting
a research project and documenting your results.
Project Topics
The Department of Electrical Engineering and Computer Science has three programs: Computer Engineering,
Computer Science, and Electrical Engineering.
Of these, the two Engineering programs require completion of a Master's Project as a final
step in your academic experience. For students who perpare a Master's Project under my direction,
these projects may take any of the forms:
- Software project on some interesting topic, submitted with a comprehensive report.
-
Survey paper on a significant technology that you may not have addressed in your program, but is
something you want to learn about.
-
White paper that explores some technical area in detail.
The primary difference between the survey and whitepaper options is a matter of breadth versus depth.
Requirements
I have two main requirements for this work:
-
You should explore some area that is new enough to you that you learn something significant.
Pick a topic that interests you.
-
The project should involve about as much work as any of the class projects you do in my courses
and must also be documented by a report that, for software projects, is structured much like a
software Design Document.
I prefer students to select their own topics, rather that have me assign one. I have too many students
concurrently working on projects to give each one a unique topic. By this point in your program you
should be able to easily identify an interesting topic.
Things to Think About - Starter Topics
While I want you to come up with your own topics, here are a few starters to think about:
- Microsoft Research has lots of
topics,
projects, and
demonstrations that may give you ideas.
- Lucent/Bell Labs Research in Computing
-
Object-Oriented Relationship code analyzer - for each class, evaluate its static relationships with others, e.g., public inheritance,
inheritance of implementation, composition, aggregation, and using relationships. Also evaluate its dynamic relationships,
e.g., for each class, evaluate the types of objects it creates, communicates with, and destroys.
-
Class diagram plotter - using the results of the previous project (you could team up with a friend to work together on
these two projects) draw UML class diagrams from code. You will want to allow the user to assist the layout on a page
but you should provide an algorithm for making a first pass at a layout and then allow the user to pull drawing objects
around the page without losing their connections.
-
In CSE687 Project #4 - Dependency Analyzer we did a lot of hueristic grammar evaluation.
It would be interesting to use a more formal approach based on specifying the (simplified)
grammar needed for type-based dependency analysis using syntax graphs or BNF productions
to specify the grammar and reduce them to analysis code by implementing productions, and
perhaps, recursive decent parsing.
-
Software visualization - can you think of interesting ways to display properties of a given set of software files, e.g., size, complexity,
density of comments, depth of calling tree, ...
-
Text to Speech - Microsoft has available for download its beta Speech SDK, and the World Wide Web Consortium has
tutorials and specifications for VXML. You could explore making web pages vocal.
-
DirectX - Microsoft has a COM-based technology for displaying complex graphics and synchronizing graphics and sound
over time, widely used by the computer gaming industry. The latest beta version has wrappers for .Net.
It would be interesting to learn, explore, and document some applications of this technology.
-
Vector Markup Language - Internet Explorer supports Vector Markup Language (VML) for making line drawings on web
pages. This could be very useful for preparing technical drawings to be placed on web pages. You could explore the
use of vml for some specific application.
-
Compatible colors - A color wheel allows a designer to pick compatible, contrasting, warm, cool, and
harmonious colors. One interesting project provides the user with a line of colors to select from and returns
contrasting and triadic harmonious colors, showing the colors and RGB values.
Projects not used to satisfy the MS Project Requirement
I often have students ask for additional projects to work on over the Summer or during Semesters when they don't have a strenuous schedule. Here are a few suggestions:
- MFC tutorial
Using the excellent textbook "Programming Windows with MFC", Jeff Prosise, Microsoft Press, 2001,
(on reserved in the Sci/Tech library),
prepare a set of tutorial presentations. I can make them available on this website and you will learn a lot about how MFC is used to build Windows programs.
- Action Item (Bug Tracking) list
Use a datagrid on a webpage and an SQL database to make action items or bug lists available on the web. Make an editing application, using a web service,
to add, edit, or delete entries (this could also be done as part off the Asp application).
- Small Business Data Management System
Create a relational model for a hypothetical small business that provides:-
Phone logs for each employee to record notes about business related phone calls.
-
Calendar with event notification, so an employee can define a notification to be sent back or to another employee at some future date, as a small text message.
-
Order entry and tracking, based on an orders table, a product table, and a customer table.
Note that this data management system could be made available as a Winform application talking to an SQL server on a remote machine in the network, as an ASP
application, or as a web service.
It would be nice to build the application as a Winform with several tabs that provide common queries and support data entry based on a DataGrid view.
Remediation for Data Structures and Algorithms
This year I have had a huge number of requests to supervise MS Projects that will, in part, be used to
waive a requirement for remediation of CSE382. Due to the large volume of requests I am no longer able
to do this and will accept no more requests of this kind.
Note that, as always, I am pleased to supervise your MS Projects. I just will not supervise remediation
of CSE382 requirements. Note that you can either take the course, as indicated in your acceptance letter,
or you can take the exemption examination which is given every year.
I've left the instructions for remediation on this page for the students with whom I have already agreed
to supervise remediation. But I will not accept any more, this semester, or later.
Students who have been levied a remedial program requirement to take CSE382 - Data Structures and Algorithms
may satisfy this requirement by preparing a Master's Project that demonstrates the requisite knowledge. Here are
the steps necessary to complete this process:
-
See me regarding your interest in acquiring the required background via a Master's Project. I will discuss the
project with you and, should you wish to proceed, I will notify Dr. Hartmann and Barbara Hazard that you
are working on the project under my supervision and that I will not approve your report until you demonstrate
the required knowledge.
-
You purchase or borrow the text used in CSE382, e.g., Algorithms, parts 1-4, Sedgewick, Addison-Wesley. Bring
the text to my office and I will assign material for you to skim and material to read thoroughly.
-
Complete an implementation, in either C++ or C#, the following:
HashTable that supports either Standard C++ iterators or a .Net IEnumerable interface.
External Sort - use the Merge Sort algorithm
A Symbol Table based on a Balanced Binary Tree - red/black algorithm recommended.
-
You are required to measure the performance of your implementations and compare the results you achieve
with results predicted by a complexity analysis, as described in Sedgewick, Chapter 2 and analysis in each of the
chapters related to the topics above. Specifically, you plot the ratio of time to carry out the computation with
10, 100, 1000, and 10,000 items and compare with the theoretical asymptotic ratios.
-
Meet with me to present your results. I will question you about your analysis to ensure that you have the
required knowledge to satisfy the remedial requirement. Please note that I will not recommend waiving
the CSE382 requirement without this presentation.
-
When I am satisfied that your report describes work you completed and demostrates the requiste knowledge
then I will approve it and turn it in to the department. that will complete the process.