Top Banner
The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo
26

The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

The Visual Debugger for Recursive Functions

By Charles NogeeAdvisor: Dr. Bonomo

Page 2: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

IntroductionIntroduction

Goal: A visual representation of recursive

functionsUses: Pedagogical Debugging

Page 3: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Debugging StepsDebugging Steps

1. Recognize error2. Find the error in the code3. Determine how that spot relates to program

Page 4: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Debugger EvolutionDebugger Evolution

Command Line drivenText for the names and values of variablesKeyboard Input/Text OutputVarious breakpointsSingle Stepping

Graphic User Interface (GUI)Show the code executingReveal values of variables by clicking on themStill just names and values of variables

Page 5: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

VisualizationVisualization

Sight provides the most understandingFor Effective Visualization (Stasko, et al., 93)

Include detailed text instructionsLink with instructional goalsPerform user testingInclude rewind/replay functions

Page 6: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

RecursionRecursion

A recursive function is one that can call itselfBreaks large problems into small problemsBase casesTaught early in computer science courses

Taught at Westminster in CS 152, the second CS course

Page 7: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Factorial ExampleFactorial Example

n!=n*(n-1)*(n-2)*…*3*2*1In recursive form

n!=1 if n=1n!=n*(n-1)! if n>1

In Computer CodeFactorial(n){

If(n==1)Return 1;

elsereturn n*factorial(n-1); }

Page 8: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Factorial ExampleFactorial ExampleFactorial(4)

4*Factorial(3)

3*Factorial(2)

2*Factorial(1)

1

2*12

3*26

4*624

Page 9: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Typical problems using recursion

Typical problems using recursion

Missing, incorrect, or too exclusive base case Factorial can only work for nonnegative integers

Exorbitant and repetitive branching

Page 10: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

The Recursive DebuggerThe Recursive Debugger

Goal-Visually depict recursive functionsUse of tree structure

Downward branchingOutward branching

Function BoxParameters, Return values, Received values

Page 11: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

RecursionDebugger ClassRecursionDebugger Class

Software to create, update, and maintain display window

Evolved over 2 semestersCommand line basedGUI based

Requires tags to be inserted in user’s code

Page 12: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Factorial Before Tags added

Factorial Before Tags added

public class Fact{ public static void main(String args[]){ System.out.println(fact(Integer.parseInt(args[0])));} public static int fact(int n){ if (n==1){ return 1; } else{ int val=fact(n-1); return (n*val); }}}

Page 13: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Factorial with TagsFactorial with Tags public class Fact{ public static RecursionDebugger hp=new RecursionDebugger("fact", false); public static void main(String args[]){ System.out.println(fact(Integer.parseInt(args[0])));} public static int fact(int n){ hp.createNewBox(); hp.setNextParameter(""+n, "n"); hp.endParameters(); if (n==1){ hp.changeCurrentAndReturn("1"); return 1; } else{ int val=fact(n-1); hp.updateReceived(val+""); hp.changeCurrentAndReturn((n*val)+""); return (n*val); }}}

Page 14: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Half TimeHalf Time

Page 15: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Debugger WindowDebugger Window

Page 16: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Example Displays-FactorialExample Displays-Factorial

Page 17: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Example Displays-N Queens

Example Displays-N Queens

Page 18: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Drawing the TreeDrawing the Tree when endParameters() and

changeCurrentAndReturn() are calledEach box’s placement is relative to parent or siblingEach box contains two displacement fields

transxtransy

Page 19: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Updating TranslationUpdating Translation

Page 20: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Updating Translation 2Updating Translation 2

Page 21: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Updating Translation 3Updating Translation 3

Page 22: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Updating Translation 4Updating Translation 4

Page 23: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

This is where you do the demonstration, Chuck

This is where you do the demonstration, Chuck

Page 24: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

Future PossibilitiesFuture Possibilities

Program RewindOther language ImplementationsGlobal variablesMultiple recursive functionsCollapsible treeAutomatic Tag Insertion

Page 25: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

ConclusionsConclusions

Met our design goalsWorks for a wide variety of recursive functions

Visualization criteriaInclude detailed text instructionsLink with instructional goals

Page 26: The Visual Debugger for Recursive Functions By Charles Nogee Advisor: Dr. Bonomo.

The EndThe End

“Hail to the King, baby.”

“Good, bad, I’m the guy with the gun.”

“But in my own way, I am king.”

“Gimme some sugar, baby.”