Algorithms are useful tools for problem solving; and understanding how algorithms work, and how to design them facilitates many problem-solving professions, especially computer science. For example, in writing programming code to implement a desired solution to a problem that can be resolved via an algorithm, the programmer should first understand how to design the algorithm that will solve the problem before he can write code implementing it.
There have been attempts at teaching students algorithms in various ways, such as for example by animating execution of an algorithm. However, when a student is trying to learn an algorithm by observing an animation of execution thereof, the student does not have the benefit of being integrally involved in seeing how the algorithm is constructed. While animating execution of an algorithm may possibly be entertaining, if done well, it does not permit a person to be interactively involved in learning how constituent parts of the algorithm fit and work together.
The following presents a simplified summary in order to provide a basic understanding of some aspects of the claimed subject matter. This summary is not an extensive overview of the claimed subject matter and is not intended to identify key/critical elements or to delineate the scope of such subject matter. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
An interactive teaching/learning system and methodologies that can assist a user in learning algorithms by discovery of logic of the algorithms are presented. Such system and methods can increase a user's involvement in learning base elements that make up an algorithm, increase critical thinking with regard to learning algorithms as well as design and construction of algorithms, and enhance problem-solving skills, all of which can help the user with future problem-solving tasks.
The claimed subject matter disclosed and claimed herein, in one aspect thereof, comprises a system of learning algorithms by incremental algorithm discovery. More specifically, described herein are systems and methods that can be employed to decompose an algorithm into puzzles and/or quizzes, so that a user can discover logic of the algorithm through interactive manipulation of graphic objects using a puzzle-solving approach. Such systems and methods can be employed in a classroom context or a self-study context, for example. According to an aspect of the claimed subject matter, a sequence of puzzles and/or quizzes that are representative of an algorithm can be presented for solving by a user. For example, a puzzle can be presented in a puzzle display for the user to solve—the puzzle can be a representation of one of a plurality of base parts that together make up an algorithm. The puzzle can include graphical objects (e.g., puzzle objects) that the user can manipulate using controls (e.g., a mouse, a keyboard) in order to solve the puzzle, although the claimed subject matter is not so limited.
Once the user has solved the puzzle, the user can be presented with a quiz, which can be a set of questions that call for multiple-choice or text responses, for example. For instance, the quiz can be used as an explanatory transition between puzzles in order to facilitate discovery of concepts necessary to solve subsequent puzzles and/or invite analysis of the solution found to the puzzle, among other uses. The user can then continue to proceed through the sequence of puzzles and quizzes until the entire algorithm is learned. The user's progress is continuously monitored as the user works through the puzzles and quizzes, and feedback information associated with the user's actions with regard to the puzzles and quizzes can be generated and provided to the user to assist the user in learning algorithms.
In accordance with another aspect of the claimed subject matter, a smart object can be created and employed to reuse the solution of a puzzle(s) and/or quiz(zes). An exemplary use of smart objects is to facilitate discovery of a recursive algorithm through induction. In this approach, the handling of a base case is solved as a preliminary puzzle, after which a puzzle can teach the induction step by providing a smart object whose behavior encapsulates the base case just discovered. For example, once a puzzle has been solved, a smart object can be created that encapsulates the behavior of the algorithm, or part thereof, that has been or can be discovered by means of the puzzle. A user can then use the smart object in future puzzles, when such future puzzles can be solved, at least in part, by using the solution provided by the smart object.
According to yet another aspect of the claimed subject matter, artificial intelligence techniques can be employed to, for example, facilitate tailoring feedback information given to a user regarding a puzzle or quiz based in part on historical and/or current actions of the user. In this manner, the user's learning experience can be enhanced, and the learning process can be more efficient.
To the accomplishment of the foregoing and related ends, certain illustrative aspects are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways in which the claimed subject matter may be practiced, all of which are intended to be within the scope of the claimed subject matter. Other advantages and novel features may become apparent from the following detailed description when considered in conjunction with the drawings.
The various aspects of the claimed subject matter are now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description relating thereto are not intended to limit the claimed subject matter to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
As used in this application, the terms “component” and “system” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an instance, an executable, a thread of execution, a program and/or a computer. By way of illustration, both an application running on a computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over the other aspects or designs.
Furthermore, all or portions of the subject innovation may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed innovation. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but is not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD . . . )), smart cards, and flash memory devices (e.g. card, stick, key drive . . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
The claimed subject matter generally relates to an interactive teaching/learning system and methodologies that can assist a user in learning algorithms by discovery of logic of the algorithms. Learning an algorithm is facilitated by having the user (e.g., student) be integrally involved in discovery of the algorithm. The foregoing can be accomplished by representing the algorithm in the form of a puzzle(s), as well as a quiz(zes), to be solved by the user. Other exercises can be utilized to assist the user in learning the algorithm as well. The user can manipulate a puzzle object(s) to solve the puzzle, where the action taken in solving the puzzle can correspond to the behavior or function of the algorithm. A quiz(zes) or other exercise can further facilitate algorithm learning by reinforcing what was learned when solving the puzzle, among other features.
Learning an algorithm through such interactive discovery can increase a user's involvement in learning the algorithm, increase the user's critical thinking, and enhance the user's problem-solving skills, all of which can help the user with future problem-solving tasks.
Turning now to
The learning component 150 can be associated with the user interface 130 and can facilitate monitoring the user's progress in solving a puzzle 120 and providing feedback information to the user 140 associated with the puzzle 120 and the user's action with regard to the puzzle, as the user 140 attempts to solve the puzzle 120. The learning component 150 can receive information associated with the puzzle 120 from the puzzle interface component 110 and the user interface 130 and can monitor the user's progress in solving the puzzle 120. The learning component 150 can analyze the progress information and generate feedback information associated with the user's action with regard to the puzzle 120. The learning component 150 can provide the feedback information to the user 140. For example, if the user 140 makes an illegal move, the learning component 150 can monitor the move, generate feedback information regarding the illegal move by the user 140, and then send feedback information to the user 140 via the user interface 130 to give the user 140 notice that an illegal move was made. The learning component 150 can also send notice of the illegal move to the puzzle interface component 110, which can then return the puzzle 120 back to its state prior to the illegal move, for example. As another example, the learning component 150 can generate and provide feedback information to the user 140 in the form of comments or hints associated with the puzzle 120, although the claimed subject matter is not so limited. The feedback information can be in any form or manner that can convey information to the user 140, including but not limited to, visual information (e.g., graphical object), audible information (e.g., bell, buzzer), and/or textual information.
Once the user has solved the puzzle 120, the learning component 150 can generate and present a quiz associated with the puzzle 120 to the user 140 for the user 140 to complete. The quiz can be structured in various forms, including a multiple-choice quiz or textual-answer quiz, for example. The quiz can be in the form of an explanatory quiz that can assist the user 140 in transitioning between puzzles 120 in a sequence of puzzles associated with an algorithm. The quiz can reinforce what has just been learned by solving the puzzle 120. Further, the quiz can assist the user 140 by defining a smart object, to help the user 140 discover concepts necessary to solve subsequent puzzles 120, or to invite analysis of a solution for the puzzle 120 just solved, for example.
System 200 also includes a learning component 240 that facilitates the learning of algorithms by the user. The learning component 240 can be associated with the puzzle interface component 210 and the user interface 230, and can facilitate receiving information from the puzzle interface component 210 and the user interface 230 with regard to the status of the puzzle 220 and the user's action and progress in solving the puzzle 220. The learning component 240 can include a progress component 250 that can monitor and receive information associated with the puzzle 220 and the user, including monitoring the user's action and progress in solving the puzzle 220. The progress component 250 can then analyze the received information and generate appropriate feedback information based in part on the puzzle 220 and the user's action in solving the puzzle 220 and provide it to the user via the user interface 230. For example, the feedback information can include progress information regarding the user, performance information regarding the user, and recommendation information regarding action that can be taken by the user, associated with the user's actions with regard to the puzzle, in addition to other types of feedback information that can be provided to the user. The feedback information can be utilized to assist the user in solving the puzzle.
As another example, if the user makes an illegal move, the learning component 240 can monitor the move, generate feedback information regarding the illegal move by the user, and then send feedback information to the user via the user interface 230 to give the user notice that an illegal move was made. The learning component 240 can also send notice of the illegal move to the puzzle interface component 210, which can then return the puzzle 220 back to its state prior to the illegal move, for example. In addition, the learning component 240 can generate and provide feedback information to the user in the form of comments or hints associated with the puzzle 220, although the claimed subject matter is not so limited. The feedback information can be in any form or manner that can convey information to the user, including but not limited to, visual information (e.g., graphical object), audible information (e.g., bell, buzzer), and/or textual information.
The learning component 240 can further include a quiz component 260 that can facilitate presenting one or more quizzes to the user associated with the puzzle 220 and the algorithm, or part thereof, represented by the puzzle 220. A quiz can be structured in various forms, including a quiz that calls for multiple-choice responses or textual responses, for example. The quiz can be in the form of an explanatory quiz that can assist the user in transitioning between puzzles 220 in a sequence of puzzles associated with an algorithm. Further, the quiz can assist the user by defining a smart object, to help the user discover concepts necessary to solve subsequent puzzles, or to invite analysis of a solution for the puzzle 220 just solved, for example.
The quiz component 260 can be associated with the progress component 250, such that the progress component 250 can monitor and receive information associated with the user's responses to quiz questions via the user interface 230. The progress component 250 can then analyze the received information and generate appropriate feedback information based in part on the quiz and the user's action in solving the quiz and provide the feedback information to the user via the user interface 230. For example, the feedback information can include progress information regarding the user, performance information regarding the user, and recommendation information regarding action that can be taken by the user, associated with the user's actions with regard to the quiz, in addition to other types of feedback information that can be provided to the user. The feedback information can be utilized to assist the user in solving the quiz.
The quiz component 260 can also be associated with a coding component 270, which can be included in the learning component 240, to facilitate the presentation of a coding quiz to the user, among other features. As part of a coding quiz, the coding component 270 can facilitate the presentation of a code editor display in the user interface 230, and the user can drag puzzle object(s) (or the entire puzzle 220) into the code editor display in the user interface 230. In one embodiment, the code editor display can be part of an Integrated Development Environment, such as Visual Studio, for example. Upon dragging puzzle object(s) into the code editor display, the coding component 270 can automatically convert the puzzle object(s) into one or more empty functions and headers associated with the puzzle object(s) and its associated algorithm, or corresponding base part thereof, so that the user can translate the actions related to solving the puzzle into executable code that upon execution thereof will model the actions related to manipulating the puzzle object(s) and solving the puzzle 220. In one embodiment, the puzzle interface component 210 can be synchronized with the code editor display, so that taking an action with regard to a puzzle object in the puzzle interface component 210 can insert, in the code editor display, a comment corresponding to and describing the action taken regarding the puzzle object. The user can use such comments to assist the user in solving the coding quiz thereby allowing the user to naturally transition from interactive discovery to coding.
System 200 can also include a smart object generator 280 that can facilitate the reuse of solutions to puzzles or quizzes in future puzzles or quizzes. After the user solves the puzzle 220 and a quiz, associated with a puzzle 220, that leads to discovery of the behavior associated with a smart object, the smart object generator 280 can generate a smart object that can encapsulate the behavior of an associated algorithm, or base part thereof The smart object can be a graphical object that can be available to and utilized by the user in the user interface 230. Thus, the smart object can be manipulated like a puzzle object. The smart object can also be utilized in a quiz. For example, in a coding quiz, the smart object can be dragged into the code editor display, where it can be automatically converted into a corresponding function and header, so that the user can insert code to translate the smart object into code. Once generated, a smart object can be utilized in a future puzzle and/or quiz when the solution, or a partial solution, to the future puzzle and/or quiz can be realized using the smart object.
One use of smart objects is to facilitate discovery of a recursive algorithm through induction. For example, a base case of an algorithm can be solved by solving a preliminary puzzle representative of the base case. Once the preliminary puzzle is solved, a subsequent puzzle can teach the induction step by providing a smart object, whose behavior encapsulates the base case just discovered, for use in solving the subsequent puzzle.
The system 300 further includes a learning component 320, associated with the puzzle interface component 305 and the user interface 315, that can facilitate learning of algorithms, in part, by providing, to the user, feedback information associated with the puzzle and the actions of the user in attempting to solve the puzzle. The learning component 320 can monitor and receive information regarding action taken in the user interface 315 and the puzzle interface component 305. The learning component 320 can include a progress component 325 that can monitor and receive information associated with the user's progress in solving the puzzle as well as other action of the user in the user interface 315, although the invention is not so limited. In one aspect of the claimed subject matter, the progress component 325 can be associated with a rule-based engine 330, which can be included in the learning component 320, and can analyze received information associated with the action of the user in solving the puzzle and compare such action to a predetermined set of rules associated with the puzzle that can be provided by the rule-based engine 330. The progress component 325 can generate feedback information constructed based in part on the analysis by the rule-based engine 330, and then provide the feedback information to the user. For example, if the user makes an illegal move with regard to moving a puzzle object, that is, a move that violates the rules of the puzzle, the progress component 325 can monitor and receive the information regarding the move, and transmit that information to the rule-based engine 330. The rule-based engine 330 can analyze the move, compare the move to a predefined rule set, and determine whether a rule has been violated; if so, the rule-based engine can send information regarding the rule violation to the progress component 325, which can then generate feedback information regarding the illegal move and send notice to the user via the user interface 315 that the move was illegal. The notice can be in the form of a textual message, a graphical symbol, and/or audible signal associated with the illegal move, for example. The progress component 325 can also notify the puzzle interface component 305 of the illegal move, and the puzzle interface component 305 can return the puzzle to its state prior to the illegal move. The feedback information can comprise any type of information associated with the user's actions with regard to the puzzle, including progress information regarding the user, performance information regarding the user, and recommendation information regarding action that can be taken by the user, in addition to other types of feedback information that can be provided to the user. For example, the progress component 325 can generate feedback information in the form of comments, including hints to solving the puzzle, to the user.
In one embodiment of the claimed subject matter, the progress component 325 can be associated with an artificial intelligence (AI) component 335. The feedback information provided by the progress component 325 can be based in part on determination and/or inferences made by the AI component 335. The AI component 335 can examine the entirety or a subset of the data stored by the data store 310 and can provide for reasoning about or infer states of the system, environment, and/or user from a set of observations as captured via events and/or data. Data or a subset of the data associated with a user can be stored in a user profile 340 which can be stored in the data store 310, although the claimed subject matter is not so limited, as the user profile 340 can be stored in any storage device that can be accessed by the AI component 325. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data.
Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification (explicitly and/or implicitly trained) schemes and/or systems (e.g. support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines) can be employed in connection with performing automatic and/or inferred action in connection with the claimed subject matter.
The AI component 335 can make an inference regarding what feedback information, or what subset of feedback information, to present to the progress component 325, and thereby to the user via the user interface 315. The feedback information can be based in part on current or past actions associated with the user. For example, the AI component 335 can make an inference as to whether a user needs assistance in solving a puzzle and can further infer what type of assistance the user may need based on current and prior events associated with the user and/or other users. As another example, the user interface 315 can include sensors, such as audio and visual sensors, that can observe a user's presence and/or activity with regard to a task (e.g., puzzle, quiz, coding . . . ) and the user interface 315. Information received from these sensors can be analyzed and an inference can be rendered based on such information. For instance, while solving a puzzle in the user interface 315, a user may move the mouse over a puzzle object, click on it to drag it, and then begin dragging the puzzle object; but then pause for a significant period of time. Based on current and/or past events, the AI component 335 can make an inference regarding whether the user needs assistance with that task, or can make some other inference related to an action to be taken.
In an aspect of the claimed subject matter, once the user has successfully solved the puzzle, a quiz component 345, which can be included in the learning component 320, can facilitate presenting one or more quizzes to the user in the user interface 315. A quiz can be in various forms, such as a multiple-choice quiz or a quiz that calls for textual responses, for example. In one aspect of the claimed subject matter, the quiz can be an explanatory quiz that can be given to accomplish various objectives, such as to define a smart object, to help the user discover concepts necessary to solve subsequent puzzles, and/or to invite analysis of the puzzle solution just found. The quiz component 345 can be associated with the progress component 325, and the progress component 325 can monitor and receive information associated with the user's actions with regard to the quiz. The progress component 325 can generate feedback information associated with the quiz and the user's action, and provide the feedback information to the user. The feedback information can comprise any type of information associated with the user's actions with regard to the quiz, including progress information regarding the user, performance information regarding the user, and recommendation information regarding action that can be taken by the user, in addition to other types of feedback information that can be provided to the user. For example, the progress component 325 can inform the user that a quiz question was answered incorrectly, or provide the user with a message that gives the user a hint regarding correctly solving the quiz.
In another aspect of the claimed subject matter, the learning component 320 can include a coding component 350 that is associated with the quiz component 345, so that the coding component 350 can be utilized during a quiz. For example, one type of quiz where the coding component 350 can be utilized is a coding quiz. The coding component 350 can facilitate providing a code editor display in the user interface 315 to facilitate displaying comments and/or code associated with a particular puzzle or quiz. A puzzle object(s) can be dragged (e.g., by clicking on it and moving it using a mouse) into the code editor display in the user interface 315 where a function(s) and header(s) associated with the puzzle object(s) (and the algorithm element(s) represented by the puzzle object(s)) can be automatically generated and displayed in the code editor display. In one embodiment, upon dragging a puzzle object(s) into the code editor display, the coding component 350 can automatically generate comments describing the function and/or exemplary code language (e.g., C#) executable to perform the function associated with the puzzle and the underlying algorithm, or base part thereof, represented by the puzzle. The comments and/or code can be displayed in the code editor display in the user interface 315. For example, where a puzzle object relates to an array, dragging the puzzle object into the code editor display can automatically translate the puzzle object into an empty function with a header showing the associated array being passed as a parameter. In another embodiment, the puzzle display and code editor display can be synchronized such that when the puzzle object is dragged from the puzzle display into the code editor display, a comment that describes a function associated with the puzzle object can be automatically generated and displayed in the code editor display.
The learning component 320 can further include an animation component 355 that is associated with the coding component 350 and can facilitate reinforcing the algorithm, or base part thereof, just discovered by the user. In one embodiment, the user can insert code associated with a puzzle, or part thereof, in the code editor display in the user interface 315. In another embodiment, exemplary code (e.g., C#) associated with a puzzle, or part thereof, can be automatically generated by the coding component 350 and displayed in the code editor display in the user interface 315. When the code is in the code editor display, the animation component 355 can be employed to execute the code and animate the execution of the puzzle in the puzzle display in the user interface component 315, thereby executing the underlying algorithm, so that the user can visually observe the puzzle objects being animated to solve the puzzle. Such animation can reinforce what has just been learned by the user. Further, in cases where the user has inserted the code into the code editor display, for example, such animation can assist the user in determining whether the puzzle has been solved in the most efficient way possible.
Referring to
The system 400 can further include a problem selection component 460 that can be associated with the data store 440 and can select a puzzle, quiz, and/or other exercise to be retrieved from the data store 440 for presentation to a user. In one aspect of the claimed subject matter, the problem selection component 460 can automatically select a puzzle, quiz, or exercise to be presented. In another aspect, the problem selection component 460 can allow the user to select a puzzle, quiz, or exercise. The problem selection component 460 can further be associated with a puzzle interface component 470 that can facilitate retrieval of the selected puzzle, quiz, and/or other exercise from the data store 440 associated with the puzzle interface component 470. The puzzle interface component 470 can further be associated with a learning component 480 that can facilitate monitoring the user's progress in solving a puzzle and providing feedback information to the user associated with the puzzle and the user's action with regard to the puzzle, as the user attempts to solve the puzzle.
The aforementioned systems have been described with respect to interaction between several components. It should be appreciated that such systems and components can include those components or sub-components specified therein, some of the specified components or sub-components, and/or additional components. Sub-components could also be implemented as components communicatively coupled to other components rather than included within parent components. Further yet, one or more components and/or sub-components may be combined into a single component providing aggregate functionality. The components may also interact with one or more other components not specifically described herein for the sake of brevity, but known by those of skill in the art.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the disclosed subject matter will be better appreciated with reference to the flow charts of
Turning now to
Turning to
Additionally, it should be further appreciated that the methodologies disclosed hereinafter and throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.
In accordance with an aspect of the claimed subject matter, the solution for two disks 1016-1017 can be reused as in future puzzles, such as the Tower of Hanoi puzzle having three or more disks. For example, a group factory 1020, which is a function that can create of grouping of two or more disks, can form a grouped object 1030 that can represent the two-disk solution. The control for the group factory 1020 can be accessed via the user interface 1010. The grouped object 1030 can then be used in the three-disk Tower of Hanoi puzzle, for example. An example of a grouped object can be a smart object. Like a group object, a smart object can encapsulate the behavior of the algorithm, or part thereof, that has been or can be discovered by means of the puzzle 1000. The smart object can be used in a subsequent puzzle.
Referring to
As shown in
An additional advantageous feature of the claimed subject matter that facilitates a user's understanding of recursion is the separation of induction (equivalently, recursion) levels during a complex action (e.g., during solution reuse). Thus, at the onset of each induction level, user input (e.g. a mouse click) can be requested. For example, when a three-disk group is being moved, the user can be prompted for input at the beginning, before each of the two two-disk moves, and then prompted for input again to continue after the second two-disk move.
As shown in
In an aspect of the claimed subject matter, when the user is attempting to solve the puzzle 1200 using a grouped object, such as grouped object 1230, the user has the option of having the grouped object 1230 move as a single action, or moving the grouped object 1230 can start an animation that will make all the moves that resulted in the solution associated with the grouped object 1230.
In accordance with another aspect of the claimed subject matter, upon completion of the puzzle 1200, a quiz can be presented for the user to solve in the user interface. The quiz can facilitate the user learning the algorithm represented by the puzzle 1200, including assisting the user in understanding how and why recursion works.
In accordance with yet another aspect of the claimed subject matter, a coding quiz can be presented to be solved by the user. One type of coding quiz can include code binding. In code binding, the puzzle 1200 can comprise a puzzle display 1210 in the user interface 1220 that can be associated with a code editor display 1240 displayed in the user interface 1220. By associating the puzzle display 1210 with the code editor display 1240, information, such as comments, the opening and closing of statement blocks, and/or code associated with the puzzle 1200, for example, can automatically be generated in the code editor display 1240 when an object 1230 or disk 1232 is moved or otherwise manipulated in the puzzle display 1210.
For example, as shown in
In
Once code binding has instantiated a template, in the code editor display, with comments and overall block structure, the problem becomes a traditional coding and debugging problem. The template that is built through code binding can typically be inserted in a file or code project containing initialization code and pointers to library functions to be used.
Turning now to
In one aspect of the claimed subject matter, the user can attempt to solve the puzzle 1300 in a “freewheeling” manner without necessarily having to solve the puzzle 1300 in the most efficient manner, so that the user can become familiar with the puzzle. In another aspect of the claimed subject matter, there can be an autoplay function that can automatically solve the puzzle where the user can watch the puzzle being solved in a user interface 1310, for example. In yet another aspect, performance constraints can be placed on the user as the user attempts to solve the puzzle.
Turning to
In
In
In accordance with another aspect of the claimed subject matter, code binding can be utilized to assist the user in drafting code associated with the puzzle and underlying algorithm. In code binding, the puzzle display 1450 is bound to a code editor display 1460 in the user interface 1410. Puzzle moves made by the user, or made automatically, are translated into comments associated with the puzzle moves. Once the puzzle has been solved in the puzzle display 1450, a template will have been formed in the code editor display 1460, where the template can be a linear representation of the logic necessary to solve the puzzle. The comments in the template can assist the user in creating executable code implementing the algorithm.
In yet another aspect of the claimed subject matter, with regard to the Quicksort algorithm, for example, puzzles and/or questions associated with the efficiency cost of moving certain items in an array can be presented to the user, so that the user is aware of such cost and can attempt to find the most efficient solution to the puzzle.
In order to provide a context for the various aspects of the disclosed subject matter,
With reference to
The system bus 1518 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), Firewire (IEEE 1394), and Small Computer Systems Interface (SCSI).
The system memory 1516 includes volatile memory 1520 and nonvolatile memory 1522. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1512, such as during start-up, is stored in nonvolatile memory 1522. By way of illustration, and not limitation, nonvolatile memory 1522 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), or flash memory. Volatile memory 1520 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Rambus direct RAM (RDRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM (RDRAM).
Computer 1512 also includes removable/non-removable, volatile/non-volatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 1512 through input device(s) 1536. Input devices 1536 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 1514 through the system bus 1518 via interface port(s) 1538. Interface port(s) 1538 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 1540 use some of the same type of ports as input device(s) 1536. Thus, for example, a USB port may be used to provide input to computer 1512, and to output information from computer 1512 to an output device 1540. Output adapter 1542 is provided to illustrate that there are some output devices 1540 like monitors, speakers, and printers, among other output devices 1540, which require special adapters. The output adapters 1542 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 1540 and the system bus 1518. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 1544.
Computer 1512 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1544. The remote computer(s) 1544 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 1512. For purposes of brevity, only a memory storage device 1546 is illustrated with remote computer(s) 1544. Remote computer(s) 1544 is logically connected to computer 1512 through a network interface 1548 and then physically connected via communication connection 1550. Network interface 1548 encompasses wire and/or wireless communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 1550 refers to the hardware/software employed to connect the network interface 1548 to the bus 1518. While communication connection 1550 is shown for illustrative clarity inside computer 1512, it can also be external to computer 1512. The hardware/software necessary for connection to the network interface 1548 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
The system 1600 includes a communication framework 1650 that can be employed to facilitate communications between the client(s) 1610 and the server(s) 1630. The client(s) 1610 are operatively connected to one or more client data store(s) 1660 that can be employed to store information local to the client(s) 1610. Similarly, the server(s) 1630 are operatively connected to one or more server data store(s) 1640 that can be employed to store information local to the servers 1630.
What has been described above includes examples of aspects of the claimed subject matter. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but one of ordinary skill in the art may recognize that many further combinations and permutations of the disclosed subject matter are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms “includes,” “has,” or “having,” or variations thereof, are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.