160 likes | 276 Views
Research Patterns. Nick Feamster and Alex Gray CS 7001 September 26, 2007. General Approach. Find a problem Understand a problem Solve a problem Review solution. Finding Problems. Finding Problems. Hop on a trend Find a nail that fits your hammer
E N D
Research Patterns Nick Feamster and Alex GrayCS 7001September 26, 2007
General Approach • Find a problem • Understand a problem • Solve a problem • Review solution
Finding Problems • Hop on a trend • Find a nail that fits your hammer • Revisit old problems (with new perspective) • Making life easier • Pain points • Wish lists • “*-ations” • Generalization • Specialization • Automation
Hop on a Trend • Need places to discover trends • Funding agencies • Funded proposals • Calls for proposals • Conference calls for papers • Industry/technology trends: trade rags
Finding a Nail for Your Hammer • Become an expert at something • You’ll become valuable to a lot of people • Develop a system that sets you ahead of the pack • Apply your “secret weapon” to one or more problem areas • Algorithm • System • Expertise • “Turn the crank”
Revisiting Problems • Previous solutions may have assumed certain problem constraints • What has changed since the problem was “solved”? • Processing power • Cost of memory • New protocols • New applications • …
Pain Points • Look to industry, other researchers, etc. for problems that recur • In programming, if you have to do something more than a few times, script! • In research, if the same problem is recurring and solved the same silly way, there may be a better way…
Wish Lists • What systems do you wish you had that would make your life easier? • Less spam? • Faster file transfer, automatic file sync? • … • What questions would you like to know the answer to? • Chances are there is data out there to help you find the answer…
Generalize From Specific Problems • Previous work may outline many points in the design space • There may be a general algorithm, system, framework, etc., that solves a large class of problems instead of going after “point solutions”
Specialize a General Problem • Finding general problems • Look for general “problem areas” • Look for taxonomies and surveys that lay out a problem space • Applying constraints to the problem in different ways may yield a new class of problems • Example: Routing (in wireless, sensor networks, wired, delay-tolerant networks, etc.)
Automation • Some existing problems, tasks, etc. are manual and painful • Automation could make a huge difference • It’s also often very difficult because it requires complex reasoning • Related to pain points
Exhaustive Search • Collect data • Often this can enhance your expertise as a side effect • Model the problem • List all of the constraints to a problem space • Consider all of the different angles within your model that you might be able to attack the problem (example: phishing attacks, routing configuration errors) • Consider many other examples • May suggest general framework or approach • You may also see a completely different approach
Formalization • Define metrics • Consider ways to measure the quality of various solutions • What constitutes a “good solution” • Objective functions can be optimized • Formalization/modeling can lead to simplifying assumptions (hopefully not over-simplifying) • Can also suggest ways to attack the problem • …or an algorithm itself
Decomposition • Given a model, it often becomes easier to break a solution into smaller parts • Solve (or at least understand) each piece individually and how they interact • Even if you cannot solve the whole problem in toto, you can make progress