Generating Ideas #1: Research Patterns

Slides:



Advertisements
Similar presentations
Examples of Research Patterns
Advertisements

Research Patterns Nick Feamster and Alex Gray CS 7001 September 26, 2007.
Impact of Interference on Multi-hop Wireless Network Performance Kamal Jain, Jitu Padhye, Venkat Padmanabhan and Lili Qiu Microsoft Research Redmond.
Presentation on Artificial Intelligence
Situation Calculus for Action Descriptions We talked about STRIPS representations for actions. Another common representation is called the Situation Calculus.
Problem Solving by Searching Copyright, 1996 © Dale Carnegie & Associates, Inc. Chapter 3 Spring 2007.
Transformations We want to be able to make changes to the image larger/smaller rotate move This can be efficiently achieved through mathematical operations.
HOW TO SOLVE IT Alain Fournier (stolen from George Polya) Computer Science Department University of British Columbia.
What is good thinking? What is involved in good problem solving?
FTP Biostatistics II Model parameter estimations: Confronting models with measurements.
Outline 1. General Design and Problem Solving Strategies 2. More about Dynamic Programming – Example: Edit Distance 3. Backtracking (if there is time)
Infinite Horizon Problems
Proof Points Key ideas when proving mathematical ideas.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Knowledge Acquisitioning. Definition The transfer and transformation of potential problem solving expertise from some knowledge source to a program.
1 Planning. R. Dearden 2007/8 Exam Format  4 questions You must do all questions There is choice within some of the questions  Learning Outcomes: 1.Explain.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
CS503: First Lecture, Fall 2008 Michael Barnathan.
Support Vector Machines
New Mexico Computer Science For All Introduction to Algorithms Maureen Psaila-Dombrowski.
How to Become an Independent and Successful Researcher?
Scot Exec Course Nov/Dec 04 Ambitious title? Confidence intervals, design effects and significance tests for surveys. How to calculate sample numbers when.
Percents Lesson
272: Software Engineering Fall 2012 Instructor: Tevfik Bultan Lecture 17: Code Mining.
Chapter 8: Problem Solving
Towers of Hanoi. Introduction This problem is discussed in many maths texts, And in computer science an AI as an illustration of recursion and problem.
Christopher E. Naujok, P.E., CEP, CSWP Optimizing SolidWorks through Standards.
Recursion, Complexity, and Searching and Sorting By Andrew Zeng.
Techniques for Analysis and Calibration of Multi- Agent Simulations Manuel Fehler Franziska Klügl Frank Puppe Universität Würzburg Lehrstuhl für Künstliche.
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Bin Yao Spring 2014 (Slides were made available by Feifei Li) Advanced Topics in Data Management.
Program Development Life Cycle (PDLC)
Creating Mathematical Conversations using Open Questions Marian Small Sydney August, 2015 #LLCAus
Problem Definition Chapter 7. Chapter Objectives Learn: –The 8 steps of experienced problem solvers –How to collect and analyze information and data.
Problem Solving Strategies EDU 412/413 Special Thanks to: Matthieu Petit.
1 Section 5.5 Solving Recurrences Any recursively defined function ƒ with domain N that computes numbers is called a recurrence or recurrence relation.
CS 1308 Computer Literacy and The Internet Software.
Unaddition (Subtraction)
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Test Drivers and Stubs More Unit Testing Test Drivers and Stubs CEN 5076 Class 11 – 11/14.
CMPF144 FUNDAMENTALS OF COMPUTING THEORY Module 10: Applied Mathematical - Logical Knowledge Riddle/Puzzle.
Enrichment Seminar #3 “Creative Thinking” – Part B Dr. Kelly Cohen July 21, 2009.
Research Methods Introduction What do we mean by “research”? What kind of research? What are “research methods”? How should one approach a research project?
1 The Practice of Computing Using PYTHON William PunchRichard Enbody Chapter 3 Algorithms & Program Development Copyright © 2011 Pearson Education, Inc.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
CSC 221: Recursion. Recursion: Definition Function that solves a problem by relying on itself to compute the correct solution for a smaller version of.
Cliff Shaffer Computer Science Computational Complexity.
Lecture 11 Data Structures, Algorithms & Complexity Introduction Dr Kevin Casey BSc, MSc, PhD GRIFFITH COLLEGE DUBLIN.
Cognitive Processes Chapter 8. Studying CognitionLanguage UseVisual CognitionProblem Solving and ReasoningJudgment and Decision MakingRecapping Main Points.
How To Do NPV’s ©2007 Dr. B. C. Paul Note – The principles covered in these slides were developed by people other than the author, but are generally recognized.
Sorting: Implementation Fundamental Data Structures and Algorithms Klaus Sutner February 24, 2004.
Problem Solving Heuristics ABLE Teacher Academy. Polya Check your solution. Substitute your answer or results back into the problem. Are all of the conditions.
Scientific Debugging. Errors in Software Errors are unexpected behaviors or outputs in programs As long as software is developed by humans, it will contain.
Problem Reduction So far we have considered search strategies for OR graph. In OR graph, several arcs indicate a variety of ways in which the original.
1 Choosing a Computer Science Research Problem. 2 Choosing a Computer Science Research Problem One of the hardest problems with doing research in any.
Intro to Planning Or, how to represent the planning problem in logic.
1 Minimum Error Rate Training in Statistical Machine Translation Franz Josef Och Information Sciences Institute University of Southern California ACL 2003.
PROBLEM-SOLVING TECHNIQUES Rocky K. C. Chang November 10, 2015.
Multiplication of Common Fractions © Math As A Second Language All Rights Reserved next #6 Taking the Fear out of Math 1 3 ×1 3 Applying.
The single most important skill for a computer programmer is problem solving Problem solving means the ability to formulate problems, think creatively.
By: WenHao Wu. A current situation that I have is that I cannot decide if a computer career is for me. I am considering any career in computers, but I.
Strategies & Knowledge for Independent Learning individual Work SKIL SKIL cards are sets of cards that explain how to use different learning strategies.
Problem Solving CSC 1750 Spring References Sprankle, Maureen and Jim Hubbard, Problem Solving and Programming Concepts, Eighth Edition, Prentice.
Algorithms and Problem Solving
Kevin C. Chang University of Illinois, Urbana-Champaign
Introduction Artificial Intelligent.
Objective of This Course
Unit 1: Principles of Computer Science
Applying Use Cases (Chapters 25,26)
Applying Use Cases (Chapters 25,26)
Presentation transcript:

Generating Ideas #1: Research Patterns Nick Feamster and Alex Gray College of Computing Georgia Institute of Technology

General approach Find a problem Understand the problem Somehow make a plan for a solution, carry it out Review the solution

General approach Find a problem Understand the problem Somehow make a plan for a solution, carry it out Review the 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…

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

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.)

General approach Find a problem Understand the problem Somehow make a plan for a solution, carry it out Review the solution

Exhaustive Search Collect data Model the problem 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 Understand each part in detail, and how they interact Then revisit the whole

General approach Find a problem Understand the problem Somehow make a plan for a solution, carry it out Review the solution

Consider related problems Try to restate the problem, or create an equivalent problem Consider different terminologies and representations See if your problem matches a general form already formalized Can you use the solution to a related problem?

Make analogies Make an analogy to another problem, then look at its solution “structural transference” look for “symmetries”, or interchangeable parts

Change the problem to one you can solve Make simplifying assumptions Violate some of the constraints of the problem Define a sense of approximation to the ideal solution Then revisit the original problem Make the minimally-simpler problem; then relate the solutions to the two problems “mathematical induction”

Just start, with anything Start with a strawman solution, then modify as needed e.g. (in algorithms): Propose a simple algorithm, check its correctness e.g. (in data modeling): Look at simple statistics of a dataset, then dive into anomalies e.g. (in systems): Just whip up some code

Consider nature Introspection: How does a human naturally solve this problem? How does nature solve this problem?

Work backward from the goal Visualize the solution, and what it must look like, or probably looks like See what’s needed to get there Consider all the solutions that can’t work

Solve a part, or each part Solve each part separately, then stitch the solutions together Start with the part which is most tractable “divide-conquer-merge” Be careful: it’s always best to avoid separate objective functions when possible Perhaps finding a good solution to a part is a good problem in itself

Think in speech or pictures Use dialogues with others Or yourself Talk to people who approach things differently from yourself Draw pictures Add auxiliary elements, to be able to relate to other problems/solutions

Come from all angles Keep coming with a new twist on the problem Break out of a thinking pattern or dead end A new twist renews motivation “Where there’s a will, there’s a way” Keep track of all your ideas and partially-completed paths

Let your subconscious work Immersion Stay relaxed Or: use deadlines to force shortcuts

General approach Find a problem Understand the problem Somehow make a plan for a solution, carry it out Review the solution

Look back at your solution Check that it really works If it works, note the key to why, more abstractly Were all of the constraints, difficulties, and facts used and accounted for Try to improve upon it Can you achieve the same thing more directly or easily

What else can your solution do? Now you have a hammer Can you use the solution for some other problem? A more general form of the problem? An interesting special case? A related problem or analogous problem?

Making a “theory” If you’re very successful, you may have a “theory” = a framework for characterizing problems and/or solutions Says when it applies, when it doesn’t Characterizes the hardness of different problems May identify simple special cases Characterizes the quality of different solutions How long it takes, amount of resources it uses Show/characterize solution meeting criteria correctness, convergence, etc.