Handheld calculators are well known in the art and have been in use for many years. Although many handheld calculators are limited to simple algebraic computations such as addition, subtraction, multiplication, and division, there are several commercially available handheld calculators that are able to perform higher level mathematical computations. For example, some handheld calculators allow a user to input a plurality of quadratic equations into the handheld calculator. The handheld calculator may then graph each of the equations on a coordinate plane and determine the intersection of the lines or curves created by the equations. The handheld calculator may also solve the quadratic equations algebraically. The same handheld calculator can also allow a user to enter a higher order and/or multi-variable equation into the handheld calculator and provide values for some of the variables. The handheld calculator can then solve for the remaining variables. Handheld calculators that perform these functions are manufactured by numerous companies including Texas Instruments.
Particular embodiments in accordance with the invention will now be described, by way of example, and with reference to the accompanying drawings:
Specific embodiments of the invention will now be described in detail with reference to the accompanying figures. Like elements in the various figures are denoted by like reference numerals for consistency. In the following detailed description of embodiments of the invention, numerous specific details are set forth in order to provide a more thorough understanding of the invention. However, it will be apparent to one of ordinary skills in the art that the invention may be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description.
Embodiments of the present invention are discussed below with respect to an embodiment on a handheld calculator. It should be noted, however, that embodiments of the present invention may be useful for other types of electronic devices, e.g., laptop computers, desktop computers, handheld computing devices. Examples of other types of handheld computing devices in which embodiments of the present invention may be useful include scientific calculators, advanced calculators able to upload and run software applications, handheld-sized limited-purpose computer devices, handheld-sized educational computer devices, handheld-sized portable computer devices, portable computer devices, personal digital assistants (PDAs), palmtop computers, cellular or mobile telephones, and any combination thereof.
In one embodiment of the invention, a plurality of mathematical expressions is created in a dynamic computational environment in response to user input. In a dynamic computational environment, a change made to any one of the plurality of mathematical expressions will be propagated to all of the mathematical expressions, such that each of the plurality of mathematical expressions affected by the change is updated. The environment is also capable of selecting, in response to user input, one or more of the plurality of mathematical expressions to form a selected set of mathematical expressions. Once selected, the environment allows blocking of the propagation of changes into and out of the selected set of mathematical expressions. The environment may also operate to allow a change made to any one of the selected set of mathematical expressions to be propagated only within the selected set of mathematical expressions.
Handheld calculators have progressed to be very sophisticated processing systems. A handheld calculator, such as the TI-Nspire™ from Texas Instruments, is capable of operating on one or more documents. In on version of such a calculator, each document may be divided into at least one, and up to thirty, problems. Each problem contains at least one, and up to fifty, pages. Each page can be divided into as many as four work areas. Each work area can contain any of the TI-Nspire™ applications: Calculator, Graph, Geometry, Lists & Spreadsheet, Data & Statistics and Notes.
A teacher may use an interactive instruction system, e.g., a handheld calculator connected to a computer system and a display device such as a digital projector and screen or interactive whiteboard, in a classroom to replicate the display of the handheld calculator in real time in a larger format on the display device for viewing by students, i.e., for presenting digital instruction to the students. More specifically, the teacher can perform operations using the handheld calculator and allow the students to view the results of the operations in real-time in the larger format provided by the display device. A teacher may also record a video from a sequence of operations performed on the handheld calculator, e.g., a lesson, in a file and play the recorded video to present it on the display device. Additional description of the operation of the TI-nspire calculator is provided in the “TI-nspire Teacher Software Guidebook” for software version 2.1, July 2010, which is incorporated by reference herein.
In one embodiment of the invention, an application may be selected from a Home Menu by clicking one of the following application icons: a static application called Calculator and dynamic applications such as Graph; Geometry; Lists & Spreadsheet; Data & Statistics; Notes—this is a text editor with math boxes that provides a dynamic computing environment. A dynamic computing environment may also be inserted into other dynamic applications, for example: Graphs or Geometry. In this embodiment, up to four applications may be open on each page. When a user creates a new document it contains space to add one application. If the user wishes to add more than one application to a page, the user can change the layout to accommodate as many as four applications.
Variable linking can help the user build and explore mathematical models. Values and functions created or defined in one application can interact with other applications within the same problem to share data. When using linked items, values can be linked between applications on one page or between different pages of the same problem. All applications are linked to the same data. If the linked value is changed in the original application, the change is reflected in all linked usages. Each application allows the user to define a value or function as a variable. Defining a variable is the first step in linking values in this dynamic computing environment.
A math box is simply a term that is used to describe an area in the display screen that holds a math expression that has in input expression, an output expression and a separator symbol. The input and output expressions may both include numbers and/or symbols. The symbol separator may be any of the typical math operations, such as: =, =>, <=, or even “NONE”. For example: a+b=14. If the separator symbol is “NONE”, then three spaces, for example, are displayed between the input expression and the output expression; for example: a+b 14.
A typical math problem may include a few or a large number of math boxes. The symbols may be stored in a symbol table and subscribed to by all of the math boxes in the problem. Each time the symbol is updated by any one of the math boxes in the problem, all occurrences of the symbol in the problem will be updated, unless a particular math box or set of math boxes is deactivated, as will be described in more detail below.
In the example of
Infrastructure code 316 is code that provides underlying services needed by the system. The infrastructure code controls data flow produced by the various applications (widgets) and collects a data set into one or more lists. The infrastructure responds to publish functions executed by a widget. For example, a widget may call for a variable store (VarStore) or an evaluation of an expression (EvalExpression) which results in produced data values being published to symbol table 312 in math server function 310. Other servers 314, such as a text editor, spreadsheet, etc., may also interact with infrastructure 316.
When a producer widget changes a data value, infrastructure code 316 is used to notify all subscribed widgets so they can handle the data change. When a consumer is notified that a subscribed symbol has changed, it has the option to not accept the change. Not accepting a change is called a Veto.
Values that can be linked by reference must first be stored in the symbol table. All widgets displaying a value in the symbol table normally display the same current value unless the widget is showing history and not the current value. A widget can be both a data producer and a data consumer.
Referring again to the example in
Data producer 304 may execute the following calls: LM_RegisterWidget 321 to register with link manager 302 and let it know data producer widget 304 is participating in linking; VarStore or EvalExpression 314 to put a value into the symbol table that can be linked; and LM_RefNotify 323 to notify the link manager that a particular symbol is being used by data producer 304. If the data producer knows that the particular symbol did not previously exist, then this call is not needed.
Data consumer 306 may then execute the following calls: LM_RegisterWidget 324 to register with the link manager 302 and let it know data consumer widget 306 is participating in linking; VarRecall 325 to get an initial value of a symbol and to validate that it can display/use the symbol; LM_Value_Subscribe 326 to subscribe 327 to the symbol; LM_Value_SetupCallback 328 which sets up a callback link that will be called when subscribed symbols for consumer 306 change; LM_Value_SetupCallbackForDependencies 329 which sets up a callback link that will be called when a dependency of a subscribed symbol changes.
At this point, the link is set up. From now on, every time data producer 304 calls LM_Ref_Notify 331 to indicate to the link manager that a symbol has been changed, data consumer's 306 callback link will be called. For example, data producer 304 may call VarStore or EvalExpression 330 to change a symbol value in symbol table 312. Data producer 304 then calls LM_Ref_Notify 331 to start notification of all subscribed widgets. Data consumer 306 is called 333 using the previously established callback link. In response to the callback notification, data consumer 306 calls VarRecall 334 to get the updated symbol value from symbol table 312. Note that while only consumer widget 306 is illustrated, there may be more than one consumer and/or producer that is subscribed to a given symbol value.
Infrastructure code 316 is responsible for the following: instantiate a link manager for each problem; associate a symbol table with the link manager; change active link manager when problem space changes; and perform serialization of the current link manager when a document saved. Data producers are responsible for the following: generate values to be consumed by others; notify others when it is time to consume the values; handle returning to a previous state if it's notify is vetoed. Data consumers are responsible for the following: consuming values generated by a producer; ensuring that values displayed are the same as values in the symbol table; validating values generated by producer; and vetoing values that it cannot accept.
All widgets that participate in linking should register with the link manager 302 first. A participating widget should always notify the link manager after changing the symbol table via Varstore or EvalExpression function calls. A widget should subscribe to any symbol table symbol for which the widget displays the value in its user interface (UI). The symbol table is global to all widgets and all views should show the same value. A widget may change multiple symbols and then call Notify once. If notification comes back VETOED, the publisher must revise its UI to reflect the current value of the symbol, i.e., the symbol will be returned to its original value.
For example: two widgets are showing variable X. Both widgets must be subscribed to changes to X. A data collection widget from a probe is generating TIMELIST and TEMPLIST but not displaying the values of the lists. This widget may not have to subscribe to the symbols.
A data consumer widget should get a symbol's initial value and update its user interface (UI) preferably before subscribing. If the initial value is not valid for that consumer widget, the user should be notified and the widget should not subscribe to the symbol. When a consumer widget receives notification (i.e., its notification callback is called), it should perform the following checks for valid values: Range/Domain—value out of range or domain for consumer; Type—value type not valid for consumer, for example, a user changes List X to variable X; Existence—a user deletes a symbol, but the consumer widget needs it to exist. If the symbol is valid then it updates itself. If the symbol is not valid for this widget, the widget can VETO the notification by returning a VETO function value for the callback. If the consumer modifies the symbol table during its callback, it must call the Notify function to alert the link manger.
In
Each math box in Notes is both a “data producer” and “data consumer”. Calculator is just a “data producer”. At this point the math box has registered with the link manager (LM_RegisterWidget 321) and set up its callback functions (LM_Ref_SetupCallback 328). These functions will be called by the link manager 302 when a variable of interest changes. Calculator has also registered with the link manager (LM_RegisterWidget 321).
When the user evaluates the math box, the math box will be parsed, looking for variables to which it should subscribe. In this example, the math box will subscribe (LM_Ref_Subscribe 326) to variables “x”, “a” and “b”. Next, the math box will call a math server 310 API to evaluate the contents of the math box. The math server API will store “x” (VarStore 322) into the symbol table. The math box will then notify the link manager (LM_Ref_Notify 323) that it should send notifications (WidgetsHandler 333) to any “consumers” interested in changes. NOTE: In this case the link manager will not send out any notifications even though the math box is interested in changes to “x”. the link manager knows that the math box was the “producer” of this change. The math box will then display the results returned from the call to the math server 310—in this case “a+b.”
In
When the user hits ENTER in the Calculator, Calculator will call a math server 310 API to evaluate what the user has typed in. In this case the math server API will store “a” (VarStore 322) into the symbol table. Calculator will then notify the link manager (LM_Ref_Notify 323) that it should send notifications (WidgetsHandler 333) to any “Consumers” interested in changes. In this case, the link manager 302 will call the math box notification handler (WidgetsHandler 333) indicating that “a” has changed. The math box will then re-evaluate itself and update its output. The re-evaluation of the math box goes through the same sequence as described above.
In
As mentioned earlier, a math box (mbox) is simply a term that is used to describe an area in the display screen that holds a math expression that has an input expression, an output expression and a separator symbol. The input and output expressions may both include numbers and symbols. A typical math problem may include a few or a large number of math boxes. The symbols may be stored in a symbol table and subscribed to by all of the math boxes in the problem. In a dynamic computation environment, each time the symbol is updated by any one of the math boxes in the problem, all occurrences of the symbol in the problem will be updated, unless a particular math box or set of math boxes is deactivated.
In
Occasionally, the user may want to experiment with various mboxes to see what happens for different values, for example, without changes being propagated throughout an entire problem. On other occasions, the user may want to compare results of different sets of input values which require that values not be propagated to a portion of the mboxes. Embodiments of the invention allow for selecting, in response to user input, one or more of the mathematical expressions to form a selected set of mathematical expressions, and blocking propagation of changes into the selected set of mathematical expressions.
In this embodiment, a deactivated group of mboxes does not update automatically, it only updates at the user's request. However, when requested, all VarStore changes within the selected deactivated group are propagated to the current symbol table and the appropriate updates are made to the selected deactivated group as well as the active mboxes within the problem space.
In this embodiment, each time a set of mboxes is selected and deactivated, a new instantiation of the link manager is formed. Links among the mboxes of the deactivated set are copied into this new instantiation of the link manager. Links to any of the mboxes in the selected set in the original link manager are marked as being inactive. In this manner, a change made to any one of the selected set of mathematical expressions within the selected set of mboxes is propagated only within the selected set of mathematical expressions. Changes made to mboxes in the active area are not propagated to mboxes in the inactive area(s) because the links are marked as inactive.
A user may also deactivate all boxes in a Notes application. This may be done by selecting the Notes menu and selecting “deactivate.” In this case, all subscriptions are blocked and a change made in any mbox is not propagated to any other mbox.
A user may also activate a deactivated group of mboxes by selecting the group using the cursor. The now activated group of mboxes will be updated with the current definitions that are stored in the symbol table.
The computer system 910 includes a processing unit 930 equipped with one or more input devices 932 (e.g., a mouse, a keyboard, or the like), and one or more output devices, such as a display 934, a printer 936, or the like. In some embodiments of the invention, the display 934 may be touch screen, thus allowing the display 934 to also function as an input device. The processing unit 930 may be, for example, a desktop computer, a workstation, a laptop computer, a dedicated unit customized for a particular application, or the like. The display may be any suitable visual display unit such as, for example, a computer monitor, an LED, LCD, or plasma display, a television, a high definition television, an interactive white board, or a combination thereof.
The processing unit 930 includes a central processing unit (CPU) 938, memory 940, a mass storage device 942, a video adapter 944, and an I/O interface 946 connected to a bus 948. The bus 948 may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, video bus, or the like. The CPU 938 may be any type of electronic data processor. For example, the CPU 938 may be a processor from Intel Corp., a processor from Advanced Micro Devices, Inc., a Reduced Instruction Set Computer (RISC), an Application-Specific Integrated Circuit (ASIC), or the like. The memory 940 may be any type of system memory such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), a combination thereof, or the like. Further, the memory 940 may include ROM for use at boot-up, and DRAM for data storage for use while executing programs.
The mass storage device 942 (e.g., a computer readable medium) may comprise any type of storage device configured to store data, programs, and other information and to make the data, programs, and other information accessible via the bus 948. In one or more embodiments of the invention, the mass storage device 942 stores the dynamic computation environment software to be executed by the CPU 938. The mass storage device 942 may be, for example, one or more of a hard disk drive, a magnetic disk drive, an optical disk drive, or the like. The dynamic computation environment software may be initially stored in a computer-readable medium such as a compact disc (CD), a diskette, a tape, a file, memory, or any other computer readable storage device and loaded and executed by the CPU 938. In some cases, the dynamic computation environment software may also be sold in a computer program product, which includes the computer-readable medium and packaging materials for the computer-readable medium. In some cases, the dynamic computation environment software may be distributed to the computer system 910 via removable computer readable media (e.g., floppy disk, optical disk, flash memory, USB key), via a transmission path from computer readable media on another computer system (e.g., a server), etc.
The video adapter 944 and the I/O interface 946 provide interfaces to couple external input and output devices to the processing unit 930. As illustrated in
The processing unit 930 also includes a network interface 947. The network interface 947 allows the processing unit 930 to communicate with remote units via a network (not shown). In one or more embodiments of the invention, the network interface 947 allows the computer system 910 to communicate via a network to the handheld calculators. The network interface 947 may provide an interface for a wired link, such as an Ethernet cable or the like, or a wireless link.
The computer system 910 may also include other components not specifically shown. For example, the computer system 910 may include power supplies, cables, a motherboard, removable storage media, cases, and the like.
Presentation software on the computer system 910 may include functionality to receive a display stream from a handheld calculator and display screen images provided on the display device of the computer system 910 along with a user interface for controlling the presentation of the screen images. In one or more embodiments of the invention, the presentation software includes functionality to allow a user to select one of the handheld calculators to provide a display stream for presentation. Further, in some embodiments of the invention, two or more of the handheld calculators may be selected to provide display streams for simultaneous presentation. The display stream may be stored in the format received and/or in any other suitable format, e.g., audio visual interleave (avi) format. In some embodiments of the invention, the entire display stream is stored for the duration of the presentation session. In some embodiments of the invention, the amount of the display stream stored is less than the entire display stream. For example, a buffer may be used to store a portion of the display stream as it is received such that when the buffer becomes full, the oldest portion of the stored display stream is eliminated to make room for newer portions. The size of this buffer may be fixed or may be set by user input.
In some embodiments of the invention, the presentation software also includes functionality to display key presses and/or touchpad actions corresponding to the screen images according to key press indicators and/or touchpad indicators received in the display stream. The display of the key presses and/or touchpad actions may be a key press/touchpad action history and/or by highlighting keys and/or a touchpad on a calculator skin displayed in conjunction with the screen images.
In response to user input, one or more of the plurality of mathematical expressions may be selected 1002 to form a selected set of mathematical expressions. The selection may be done by the user using a pointing device, such as touchpad 106 illustrated in
Propagation of changes into the selected set of mathematical expressions is blocked 1004. In this embodiment, each time a set of mboxes is selected and deactivated, a new instantiation of the link manager is formed. Links among the mboxes of the deactivated set are copied into this new instantiation of the link manager. Links to any of the mboxes in the selected set in the original link manager are marked as being inactive. In this manner, a change made to a mathematical expression within a selected set of activated mboxes is propagated within the selected set of activated mathematical expressions and within other active math expressions.
When a set of mboxes is deactivated, propagation of changes into the inactivated set of mathematical expressions is blocked. When any symbol in a math expression within the deactivated set is changed, a new value for the symbol is published, but only mboxes within the deactivated set of mboxes and active math boxes accept 1006 propagation of the new value via the link manager. Propagation of changes to other sets of inactivated mboxes are blocked if there is more than one set of inactivated mboxes.
In another embodiment, propagation of changes both into and out of a deactivated set of expressions may be blocked. In such an embodiment, changes within an inactive region are not propagated to an active region.
While the invention has been described with respect to a limited number of embodiments, those skilled in the art, having benefit of this disclosure, will appreciate that other embodiments can be devised which do not depart from the scope of the invention as disclosed herein. Accordingly, the scope of the invention should be limited only by the attached claims. It is therefore contemplated that the appended claims will cover any such modifications of the embodiments as fall within the true scope and spirit of the invention.
For example, other embodiments may provide only a single application or may provide applications other than those described herein that may be coupled into a dynamic computation environment.
While math boxes holding equations were described herein, other embodiments of a mathematical expression may be a graph, a program, a spread sheet, etc. Symbol values used within any of these types of mathematical expressions may be selectively deactivated from a dynamic computational environment as described herein.
A publish and subscribe technique was described herein for providing the dynamic computational environment. Other embodiments may use other techniques for propagation of symbol updates to other mathematical expressions, such as message passing, polling, etc.
The techniques described in this disclosure may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the software may be executed in one or more processors, such as a microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), or digital signal processor (DSP). The software that executes the techniques may be initially stored in a computer-readable medium such as compact disc (CD), a diskette, a tape, a file, memory, or any other computer readable storage device and loaded and executed in the processor. In some cases, the software may also be sold in a computer program product, which includes the computer-readable medium and packaging materials for the computer-readable medium. In some cases, the software instructions may be distributed via removable computer readable media (e.g., floppy disk, optical disk, flash memory, USB key), via a transmission path from computer readable media on another digital system, etc.
Certain terms are used throughout the following description and the claims to refer to particular system components. As one skilled in the art will appreciate, components of computer and handheld calculator systems may be referred to by different names and/or may be combined in ways not shown herein without departing from the described functionality. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” and derivatives thereof are intended to mean an indirect, direct, optical, and/or wireless connection. Thus, if a first device couples to a second device, that connection may be through a direct connection, through an indirect connection via other devices and connections, through an optical connection, and/or through a wireless connection.
Although method steps may be presented and described herein in a sequential fashion, one or more of the steps shown and described may be omitted, repeated, performed concurrently, and/or performed in a different order than the order shown in the figures and/or described herein. Accordingly, embodiments of the invention should not be considered limited to the specific ordering of steps shown in the figures and/or described herein.
This application claims benefit of U.S. Provisional Patent Application Ser. No. 61/308,347, filed Feb. 26, 2010, entitled “Static Groups in Dynamic Algebraic Environments” which is incorporated herein by reference in its entirety. This application also claims benefit of U.S. Provisional Patent Application Ser. No. 61/352,054, filed Jun. 7, 2010, entitled “Dynamically Linked Text Environment” which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61308347 | Feb 2010 | US | |
61352054 | Jun 2010 | US |