Prosecution Insights
Last updated: September 17, 2026
Application No. 18/533,969

Distributed Computing in a Hosted Spreadsheet Application

Final Rejection §101§103§112
Filed
Dec 08, 2023
Priority
Dec 09, 2022 — provisional 63/386,682
Examiner
YUAN, PETER LI
Art Unit
2197
Tech Center
2100 — Computer Architecture & Software
Assignee
Row Zero Inc.
OA Round
2 (Final)
100%
Grant Probability
Favorable
3-4
OA Rounds
2m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 100% — above average
100%
Career Allowance Rate
1 granted / 1 resolved
+45.0% vs TC avg
Minimal +0% lift
Without
With
+0.0%
Interview Lift
resolved cases with interview
Typical timeline
2y 11m
Avg Prosecution
18 currently pending
Career history
20
Total Applications
across all art units

Statute-Specific Performance

§101
26.7%
-13.3% vs TC avg
§103
50.5%
+10.5% vs TC avg
§102
3.8%
-36.2% vs TC avg
§112
12.4%
-27.6% vs TC avg
Black line = Tech Center average estimate • Based on career data from 1 resolved cases

Office Action

§101 §103 §112
DETAILED ACTION The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . The Office Action is in response to claims filed 07/23/2026. Claims 1-2, 4-9, 11-13, 15, 17 and 19-21 are pending. Claim Rejections - 35 USC § 112 The following is a quotation of the first paragraph of 35 U.S.C. 112(a): (a) IN GENERAL.—The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor or joint inventor of carrying out the invention. The following is a quotation of the first paragraph of pre-AIA 35 U.S.C. 112: The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor of carrying out his invention. Claims 1-2, 4-9, 11-13, 15, 17 and 19-21 rejected under 35 U.S.C. 112(a) or 35 U.S.C. 112 (pre-AIA ), first paragraph, as failing to comply with the written description requirement. The claim(s) contains subject matter which was not described in the specification in such a way as to reasonably convey to one skilled in the relevant art that the inventor or a joint inventor, or for applications subject to pre-AIA 35 U.S.C. 112, the inventor(s), at the time the application was filed, had possession of the claimed invention. Applicant recites ¶ [0006] and [0031] of the specification to show support for “automatically identifying, without requiring manual user selection thereof.” Examiner did not find written support for this limitation. Although the specification is silent about manual user selection, this does not equate to a recitation that the identifying step occurs “automatically” and “without requiring manual user selection thereof.” Claim 1-2, 4-9, 11-13, 15, 17 and 19-21 rejected under 35 U.S.C. 112(b) or 35 U.S.C. 112 (pre-AIA ), second paragraph, as being indefinite for failing to particularly point out and distinctly claim the subject matter which the inventor or a joint inventor (or for applications subject to pre-AIA 35 U.S.C. 112, the applicant), regards as the invention. Claim 1, 8, and 15 recite “… the system previously determined to be computationally intensive.” The scope of the term “computationally intensive” is unclear, so the claims are indefinite. Applicant defines “computationally intensive” in ¶ [0020] of the specification. Applicant defined “computationally intensive” as “a threshold that is typically high and near the capacity of the memory and/or processing devices of the computing device” (¶ [0020]). Applicant’s definition uses relative terminology such as “typically high” and “near,” so applicant’s definition does not sufficiently define the scope of “computationally intensive.” Dependent claims 2, 4-7, 9, 11-13, 17, and 19-21 are rejected by virtue of their dependence on independent claims 1, 8, and 15. Claims 8 and 15 recite the limitation "the task" in “determining that the task is a computationally heavy task by.” There is insufficient antecedent basis for this limitation in the claims. Claim Rejections - 35 USC § 101 35 U.S.C. 101 reads as follows: Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title. Claims 1-2, 4-9, 11-13, 15, 17 and 19-21 are rejected under 35 U.S.C. 101 because the claimed invention recites a judicial exception, an abstract idea, and it has not been integrated into practical application and the claims further do not recite significantly more than the judicial exception. Examiner has evaluated the claims under the framework provided in the 2019 Patent Eligibility Guidance published in the Federal Register 01/07/2019 and has provided such analysis below. Step 1: Claims 1-2 and 4-7 are directed to a method and fall within the statutory category of process. Claims 8-9 and 11-13 are directed to a method and fall within the statutory category of process. Claims 15, 17, and 19-21 are directed to system and fall within the statutory category of machine. Therefore, “Are the claims to a process, machine, manufacture or composition of matter?” Yes. Step 2A Prong 1: Claims 1, 8, and 15: The limitations “automatically identifying, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet,” “identifying a task to be performed on the first subset of the cells,” “determining that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires, identifying that the task is associated with a category of defined computationally heavy tasks, identifying that the number of cells in the first subset of cells exceeds a threshold value, identifying, based on historical data, that the cells in the first subset of cells contain functions, data set sizes, or both that the system previously determined to be computationally intensive, or identifying that one or more default conditions, one or more conditions associated with a profile or account of a user of the spreadsheet, or one or more conditions specified by the user are occurring”, and “in response to determining that the task is a computationally heavy task” are a mental process. Additionally, claims 8 and 15 also recite “assigning at least some cells that have not yet been processed to one or more additional subsets.” The step of identifying a subset of cells and a task, the step of determining that the task is a computationally heavy task, and assigning cells are a mental process because they are steps of observation followed by forming a judgement about the observation. Performing these demonstrates understanding and planning. It is understood that these limitations are to be performed within a computer environment, however, the limitations can also be performed entirely in the mind. Therefore, Yes, claims 1, 8, and 15 recite a judicial exception. Step 2A Prong 2 will evaluate whether the claims integrate the judicial exception into a practical application. Step 2A Prong 2: Claims 1, 8, and 15: The judicial exception is not integrated into a practical application. Claims 1 and 8 recites “by a processor of a first computing device.” Claim 15 recites “a memory that is part of or remote from the first computing device, the memory containing programming instructions that are configured to, when executed by the first computing device.” These limitations are generic computing used as a means to apply the exception (MPEP § 2106.05(f)). Claims 1, 8, and 15 also recite “causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function,” “instead of the processor of the first computing device processing the task, distributing at least a portion of the task to one or more additional computing devices,” and “receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells,” and “causing the display device to display the values for the one or more cells in their corresponding cells.” These limitations are considered insignificant extra-solution activities of display and data gathering/transmission (MPEP § 2106.05(g)). Claim 15 also recites “a first computing device” and “one or more additional computing devices.” These additional elements are considered to be field of use/technological environment (MPEP § 2106.05(h)) because they limit the computing environment. The additional elements in claims 1, 8, and 15 do not integrate the judicial exception into a practical application. Therefore, “Do the claims recite additional elements that integrate the judicial exception in a practical application?” No, these additional elements do not integrate the abstract idea into a practical application and they do not impose any meaningful limits on practicing the abstract idea. The claim is directed to an abstract idea. After having evaluated the inquiries set forth in Steps 2A Prong 1 and 2, it has been concluded that claims 1, 8, and 15 not only recite a judicial exception but that the claims are directed to the judicial exception as the judicial exception has not been integrated into practical application. Step 2B: Claims 1, 8, and 15: The claims do not include additional elements, alone or in combination, that are sufficient to amount to significantly more than the judicial exception. As discussed above, the additional elements only amount to generic computing components as a means to apply, insignificant extra-solution activity, and field of use/technological environment. When reevaluating the additional element of “causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function” and “causing the display device to display the values for the one or more cells in their corresponding cells,” no inventive concept other than what is well-understood, routine, and conventional was found. MPEP § 2106.05(d)(II) lists that “Presenting offers and gathering statistics” is a well-understood, routine, and conventional activity. When reevaluating the additional elements of “instead of the processor of the first computing device processing the task, distributing at least a portion of the task to one or more additional computing devices,” and “receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells,” no inventive concept other than what is well-understood, routine, and conventional was found. MPEP § 2106.05(d)(II) lists that “Receiving or transmitting data over a network” is a well-understood, routine, and conventional computer function. Distributing data between computers is the transmission of data over a network. Therefore, “Do the claims recite additional elements that amount to significantly more than the judicial exception? No, these additional elements, alone or in combination, do not amount to significantly more than the judicial exception. Having concluded analysis within the provided framework, claims 1, 8, and 15 do not recite eligible subject matter under 35 U.S.C. § 101. With regard to claim(s) 2 it recites “assigning cells that have not yet been processed to one or more additional subsets.” This limitation is mental process because it is observing the unprocessed cells and forming a judgement about which subset to assign the cells to. Therefore, the claim(s) recite a judicial exception and fail(s) Step 2A Prong 1. Claim 2 also recites “distributing each of the additional subsets to the one or more additional computing devices to process the functions of the cells of the one or more additional subsets,” and “receiving the results that include values for one or more for the cells comprises receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells of the one or more additional subsets.” These additional elements are considered insignificant extra-solution activity of data gathering/transmission (MPEP § 2106.05(g)). It does not integrate the judicial exception into a practical application, so the claim(s) fail Step 2A Prong 2. When reevaluating the “distributing” and “receiving” limitations for an inventive concept that is significantly more, the claims do not add an inventive concept that is other than what is well-understood, routine, and conventional. MPEP § 2106.05(d)(II) lists that “Receiving or transmitting data over a network” is a well-understood, routine, and conventional computer function.” When reevaluating the other limitations, alone or in combination, no inventive concept that is significantly more was found. Therefore, the claim(s) fail Step 2B. Therefore, claim(s) 2 do/does not recite patent eligible subject matter under 35 U.S.C. 101. With regard to claim(s) 4, 9 and 19 it recites “wherein identifying the first subset of the cells comprises using a directed acyclic graph to identify cells that have dependencies on other cells.” This claim limitation is considered a mental process involving observing, understanding, and forming judgement. Using a graph to identify dependencies can be performed entirely in the mind. Therefore, the claim is directed to a mental process and fails Step 2A Prong 1. There are no additional elements in the claims that integrate the judicial exception into a practical application, so the claims fail Step 2A Prong 2. Additionally, when reevaluating the limitations, alone or in combination, no inventive concept that is significantly more was found. Therefore, the claims fail Step 2B. Therefore, claim(s) 4, 9 and 19 do/does not recite patent eligible subject matter under 35 U.S.C. 101. With regard to claim(s) 5, 11, and 20 it recites “wherein assigning the cells that have not yet been processed to the one or more additional subsets comprises: identifying a number of the additional computing devices that are available to support processing the additional subsets” and “dividing the cells that have not yet been processed into a number of subsets that equals the number of the additional computing devices.” Both of these limitations are considered a mental process because they involve a process of observing, understanding, and forming a judgement that can be performed entirely in the mind. Identifying available computing devices involves observing and understanding the computing devices, then forming a judgement as to whether they are available or not. Dividing cells equally into subsets can be entirely performed in the mind. Therefore, the claims are directed to a mental process and fails Step 2A Prong 1. There are no additional elements in the claims that integrate the judicial exception into a practical application, so the claims fail Step 2A Prong 2. Additionally, when reevaluating the limitations, alone or in combination, no inventive concept that is significantly more was found. Therefore, the claims fail Step 2B. Therefore, claim(s) 5, 11, and 20 do/does not recite patent eligible subject matter under 35 U.S.C. 101. With regard to claim(s) 6, 12, and 21 it recites “wherein assigning the cells that have not yet been processed into the one or more additional subsets comprises: identifying a first set of one or more of additional computing devices and a second set of one or more of the additional computing devices, wherein the computing devices of the first set have relatively higher computing capacity than the computing devices of the second set,” “assigning a first group of the cells to the computing devices of the first set,” and “assigning a second group of the cells to the computing devices of the second set.” All of these limitations are considered a mental process. Each limitation involves observing, understanding, and forming a judgement. Identifying sets of computing devices involves observing and understanding the computing devices, then forming a judgement as to which set they belong to. Assigning groups of cells to computing devices is a mental process of observing the cells and computing devices and forming a judgement about which group to assign to which computing device. Therefore, the claims are directed to a mental process and fails Step 2A Prong 1. There are no additional elements in the claims that integrate the judicial exception into a practical application, so the claims fail Step 2A Prong 2. Additionally, when reevaluating the limitations, alone or in combination, no inventive concept that is significantly more was found. Therefore, the claims fail Step 2B. Therefore, claim(s) 6, 12, and 21 do/does not recite patent eligible subject matter under 35 U.S.C. 101. With regard to claim(s) 7, 13 and 17 it recites “wherein the first computing device has less random access memory, less processing capacity, or both than each of the one or more additional computing devices.” This additional element is considered field of use/technological environment (MPEP § 2106.05(h)) because it limits the computing environment. It does not integrate the judicial exception into a practical application, so the claims fail Step 2A Prong 2. Additionally, when reevaluating the limitations, alone or in combination, no inventive concept that is significantly more was found. Therefore, the claims fail Step 2B. Therefore, claim(s) 7, 13, and 17 do/does not recite patent eligible subject matter under 35 U.S.C. 101. Claim Rejections - 35 USC § 103 The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claim(s) 1-2, 5-6, 8, 11-12, 15, and 20-21 is/are rejected under 35 U.S.C. 103 as being unpatentable over Kulkarni et al. Pat. No. US 20110276870 A1 (hereafter Kulkarni) in view of Zusman et al. Pat. No. US 20180239749 A1 (hereafter Zusman) and further in view of Park et al. Pat. No. US 20180046389 A1 (hereafter Park), Acharya et al. Pat. No. US 20230024130 A1 (hereafter Acharya), Goncalves et al. Pat. No. US 20170279734 A1 (hereafter Goncalves), and Simon et al. Pat. No. US 20160277487 A1 (hereafter Simon). With regard to claim 1, Kulkarni teaches a method comprising, by a processor of a first computing device (¶ [0006] states “Another aspect of some embodiments relates to a computer readable storage medium containing computer executable instructions which when executed by a computer perform a method of calculating a workbook including spreadsheet data.” ¶ [0021] states “Server 106 is a computing system that interfaces between client computing system 102 and computing cluster 108.” Examiner’s Note: the server 106 is the first computing device): causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0019] states “Client computing system 102 is any computing system capable of operating a spreadsheet application.” ¶ [0027] states “Output device(s) 216 such as a display.” ¶ [0030] states “each spreadsheet 306 containing cells 308 arranged in columns and rows.” ¶ [0031] states “cells 308 are used to store either values or formulas, or both”); automatically identifying, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0034] states “The output cells do not yet have a known value, and instead include a formula that defines a calculation based on the input cells for calculation of the value.” ¶ [0048] states “spreadsheet data is received from client computing system 102 in the form of an Extensible Markup Language (XML) document.” ¶ [0050] states “The example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster. As shown above, the example schema includes … the input collection defining the collection of inputs to be used for the calculations.” ¶ [0021] states “server 106 receives a request to calculate a workbook from client computing system 102 and oversees the calculation of the workbook across computing cluster 108.”) identifying a task to be performed on the first subset of the cells (¶ [0048] states “spreadsheet data is received from client computing system 102 in the form of an Extensible Markup Language (XML) document.” ¶ [0050] states “The example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster.” ¶ [0056] states “In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation. In another embodiment, the number of tasks is equal to the number of rows in the workbook. Other task definitions are used in other embodiments.” Examiner’s Note: the spreadsheet server receives data, including the output cells that define the task that is to be performed. Due to the number of tasks being equal the number of output cells in one embodiment, cells can each contain a task. Therefore, tasks represent cells); determining that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0073] states “Operation 710 is then performed to generate and send a calculation request.” ¶ [0075] states “After the request has been sent, operation 712 is then performed to receive the results and update the workbook.” ¶ [0056] states “When a workbook is to be calculated, scheduler 506 evaluates the workbook and determines the number of tasks to be completed. In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation.” ¶ [0059] states “scheduler 506 monitors the computing cluster 108 to be sure that all tasks are completed” and “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: the operation is executed at the cluster between operation 710 and 712. “All tasks,” or the total number of tasks, is a threshold number of tasks. Tasks can correspond to cells. The scheduler monitors the computing cluster which means that the scheduler checks the cluster at a time interval), identifying, based on historical data, that the cells in the first subset of cells contain functions, data set sizes, or both that the system previously determined to be computationally intensive, in response to determining that the task is a computationally heavy task, instead of the processor of the first computing device processing the task, distributing at least a portion of the task to one or more additional computing devices (¶ [0037] states “computing system 102 is inadequate to perform the calculations required to calculate the workbook in the short amount of time that is desired. As a result, the calculation can instead be performed by computing cluster 108.” ¶ [0018] states “calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet”); receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells (¶ [0060] states “Server 106 also receives the results of calculations of completed tasks from compute nodes 112 of computing cluster 108. For example, after a task has been completed by a compute node 112, such as the calculation of an output value based on a mathematical equation and input values, the output value is returned to server 106”), and causing the display device to display the values for the one or more cells in their corresponding cells (¶ [0061] states “Server 106 then communicates the result back to client computing system 102, where it is updated in the workbook 120”). Kulkarni does not explicitly teach determining if a task is computationally heavy. However, in an analogous art, Zusman teaches automatically identifying, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0030] states “For example, calculations requiring extensive time to execute can be offloaded. At decision 207, the spreadsheet application decides whether to offload the computationally expensive spreadsheet task. As discussed herein, the decision can occur as a result of a manual user operation, e.g., directing the spreadsheet app to offload a computationally expensive spreadsheet task or automatically as a result of some other condition, e.g., low battery life of client 110, etc.”) determining that the task is a computationally heavy task by (¶ [0025] states “Once a computationally expensive spreadsheet task is identified, at step 2, the task can be offloaded. In some embodiments, the computationally expensive spreadsheet tasks are automatically identified by the spreadsheet application.”): in response to determining that the task is a computationally heavy task, instead of the processor of the first computing device processing the task, distributing at least a portion of the task to one or more additional computing devices (¶ [0031] states “If the computationally expensive spreadsheet task is to be offloaded, at 209, the spreadsheet application generates a job including data from one or more spreadsheets, e.g., of workbook 117, and an instruction directing the remote service e.g., spreadsheet app service 125, to asynchronously execute the computationally expensive spreadsheet task.” ¶ [0034] states “At 309, the spreadsheet app service executes the computationally expensive spreadsheet task or directs a distributed computing framework to execute the computationally expensive spreadsheet task.” See FIG. 9 Distributed Computing Framework 160). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine determination that a spreadsheet task can be offloaded of Zusman with the cluster to perform spreadsheet operations of Kulkarni. A person having ordinary skill in the art would have been motivated to make this combination for the purpose of “[offloading] complex and/or time expensive processing tasks” (¶ [0021]) and doing so in an asynchronous manner which alleviates “inefficiencies including exceedingly long wait times, lost calculation data, timeouts, etc., among other inefficiencies” (¶ [0003] and [0020]). Kulkarni and Zusman do not explicitly teach identifying that processing has not completed for a threshold number of the cells before a threshold time period expires. However, in an analogous art, Park teaches determining that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0068] states “If the number of requests from the first hosts for a predetermined time is a third threshold value or more, the workload monitoring unit 220 may determine that the workload of the memory device 120 is heavy” and “For instance, if the number of requests from the first hosts for a predetermined time is 5,000 or more, it may be determined that the workload of the memory device 120 is heavy”). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the determination that a workload is heavy based on a threshold number of requests not being completed in a predetermined time of Park with the processing of functions of the cells to yield updated values of Kulkarni and the determination of computationally expensive spreadsheet task of Zusman. As a result of the combination, when the task is monitored and the task not has not been completed, that is when a threshold number of tasks has not been completed before a threshold has expired. This means that the task is classified as “heavy” as described in Park. A person having ordinary skill in the art would have been motivated to make this combination to determine if a workload is “heavy” or “light” and then take an appropriate action. Using the determination if a workload is “heavy” or “light,” the system can “[reduce] current consumption due to a refresh operation of a memory system without a reduction in the performance of the memory system” (¶ [0004]). Kulkarni, Zusman, and Park do not explicitly teach identifying that the task is associated with a category of computationally heavy tasks. However, in an analogous art, Acharya teaches determining that the task is a computationally heavy task by: … identifying that the task is associated with a category of defined computationally heavy tasks (¶ [0040] states “The application types 331 is a set of data indicating the expected workload associated with different application types” and “In response to the device driver 103 indicating the application type, the scheduler 102 accesses the application types 331 to determine if the application type is associated with light workloads or heavy workloads.” Examiner’s Note: the application type is the category), It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the application type for determining a light or heavy workload of Acharya with the spreadsheet workload scheduler of Kulkarni, the determination of computationally expensive spreadsheet workloads of Zusman, and the threshold of Park. As a result, the scheduler “selects a power configuration based on the determination” (¶ [0040]). A person having ordinary skill in the art would have been motivated to make this combination because “as the workload at the GPU varies, the configuration of the GPU is varied, thereby conserving resources while maintaining satisfactory performance” (¶ [0009]). Kulkarni, Zusman, Park, and Acharya do not explicitly teach identifying that the number of cells in the first subset of cells exceeds a threshold value. However, in an analogous art, Goncalves teaches determining that the task is a computationally heavy task by: … identifying that the number of cells in the first subset of cells exceeds a threshold value (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.” Examiner’s Note: The number of sub-tasks is compared to a predetermined number to determine a complexity level. The predetermined number is the threshold value), or identifying that one or more default conditions, one or more conditions associated with a profile or account of a user of the spreadsheet, or one or more conditions specified by the user are occurring (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.”); It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine using a predetermined number of sub-tasks for determining complexity of Goncalves with the system that calculates a spreadsheet using a cluster when the cells to be calculated are computationally heavy of Kulkarni, and the determination of computationally heavy tasks of Zusman, Park, and Acharya. As a result, “the complexity level may be used to assign one or more computer resources” (¶ [0051]). A person having ordinary skill in the art would have been motivated to make this combination to “allow for more efficient processing of the computing task as a whole” (¶ [0085]). Kulkarni, Zusman, Park, Acharya, and Goncalves does not explicitly teach that it is the first computer that causes the display device to display a spreadsheet. However, in an analogous art, Simon teaches a method comprising, by a processor of a first computing device (¶ [0039] states “System 800 includes a cloud computing service 802 storing a master copy of collaborative spreadsheet 804.” See FIG. 8 802) causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0005] states “collaborative spreadsheets stored on a cloud computing service. The method includes accessing, from each of a plurality of client computers, a first sheet of a spreadsheet stored on a cloud computing service.” See FIG. 8. Examiner’s Note: client computers are the display device. The client computers receive the spreadsheet from the cloud computing service which is the first computing device causing the display device to display a spreadsheet). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the cloud hosted spreadsheet of Simon with the spreadsheet system of identifying a task that is to be distributed to a cluster of Kulkarni and the determinations of computationally heavy tasks of Zusman, Park, Acharya, and Goncalves. The cloud computing service of Simon and server 106 of Kulkarni together represent the first computing device. As a result, the server 106 of Kulkarni can now completely store the spreadsheet and provide the spreadsheet to client devices. A person having ordinary skill in the art would have been motivated to make this combination because “Cloud computing services provide a way for multiple people at multiple locations to collaborate on the same document” (¶ [0001]) and “client computers 104a-104d may simultaneously access spreadsheet 106 on cloud computing service 102 using a web browser” (¶ [0026]). One of ordinary skill in the art would recognize the benefits of simultaneous collaboration between multiple users in a spreadsheet. Additionally, Simon teaches another benefit stating “displaying the filtered first sheet to the first user, where a second client computer in the plurality of client computers concurrently displays an unfiltered first sheet” ([0004]) which alleviates the issue of when one person wants to view a filtered spreadsheet and another user does not (¶ [0002] states “Thus a collaborator's view of the spreadsheet will automatically change when the user applies a filter. This may be a hindrance to other collaborators who are viewing data that is affected by the filter”). Storing the spreadsheet on the server allows this kind of collaboration. With regard to claim 2, Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon teach the method of claim 1. Kulkarni additionally teaches distributing at least a portion of the tasks to one or more additional computing devices comprises: assigning cells that have not yet been processed to one or more additional subsets (¶ [0056] states “Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computing cluster 108, and determines how to divide the tasks among available computing nodes.” ¶ [0057] states “For example, consider a scenario in which a workbook had four calculations that needed to be performed and a computing cluster included three computing nodes … Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes.” ¶ [0059] states “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: when the scheduler divides the tasks, it is assigning tasks to subsets. Incomplete tasks are also assigned to a different node or subset of tasks. Unprocessed cells are tasks), distributing each of the additional subsets to the one or more additional computing devices to process the functions of the cells of the one or more additional subsets (¶ [0073] states “The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells” and “The request is then sent, such as across a network.” ¶ [0018] states “calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet.” Examiner’s Note: after dividing the tasks into subsets, the request to execute the task is sent to the cluster); and receiving the results that include values for one or more of the cells comprises receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells of the one or more additional subsets (¶ [0060] states “Server 106 also receives the results of calculations of completed tasks from compute nodes 112 of computing cluster 108. For example, after a task has been completed by a compute node 112, such as the calculation of an output value based on a mathematical equation and input values, the output value is returned to server 106”). With regard to claim 5, Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon teach the method of claim 2. Kulkarni additionally teaches wherein assigning the cells that have not yet been processed to the one or more additional subsets comprises: identifying a number of the additional computing devices that are available to support processing the additional subsets (¶ [0073] states “The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells.” Examiner’s Note: during the task division process, the number of available nodes is identified); and dividing the cells that have not yet been processed into a number of subsets that equals the number of the additional computing devices (¶ [0056] states “Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computing cluster 108, and determines how to divide the tasks among available computing nodes.” ¶ [0057] states “For example, consider a scenario in which a workbook had four calculations that needed to be performed and a computing cluster included three computing nodes … Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes.” Examiner’s Note: in the example, four unprocessed tasks were divided into three subsets which matches the three available nodes). With regard to claim 6, Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon teach the method of claim 2. Kulkarni additionally teaches wherein assigning the cells that have not yet been processed into the one or more additional subsets comprises: identifying a first set of one or more of additional computing devices and a second set of one or more of the additional computing devices, wherein the computing devices of the first set have relatively higher computing capacity than the computing devices of the second set (¶ [0057] states “A first of the computing nodes includes dual processors, and the other two computing nodes include a single processor.” Examiner’s Note: the computing node with dual processors makes up the first set. The two computing nodes with a single processor make up the second set); assigning a first group of the cells to the computing devices of the first set; assigning a second group of the cells to the computing devices of the second set (¶ [0057] states “Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes. In this way, all tasks will be completed in the least amount of time.”); With regard to claim 8, Kulkarni teaches a method comprising, by a processor of a first computing device (¶ [0006] states “Another aspect of some embodiments relates to a computer readable storage medium containing computer executable instructions which when executed by a computer perform a method of calculating a workbook including spreadsheet data.” ¶ [0021] states “Server 106 is a computing system that interfaces between client computing system 102 and computing cluster 108.” Examiner’s Note: the server 106 is the first computing device): causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0019] states “Client computing system 102 is any computing system capable of operating a spreadsheet application.” ¶ [0027] states “Output device(s) 216 such as a display.” ¶ [0030] states “each spreadsheet 306 containing cells 308 arranged in columns and rows.” ¶ [0031] states “cells 308 are used to store either values or formulas, or both”); automatically identifying, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0034] states “The output cells do not yet have a known value, and instead include a formula that defines a calculation based on the input cells for calculation of the value.” ¶ [0048] states “spreadsheet data is received from client computing system 102 in the form of an Extensible Markup Language (XML) document.” ¶ [0050] states “The example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster. As shown above, the example schema includes … the input collection defining the collection of inputs to be used for the calculations.” ¶ [0021] states “server 106 receives a request to calculate a workbook from client computing system 102 and oversees the calculation of the workbook across computing cluster 108.”) determining that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0073] states “Operation 710 is then performed to generate and send a calculation request.” ¶ [0075] states “After the request has been sent, operation 712 is then performed to receive the results and update the workbook.” ¶ [0056] states “When a workbook is to be calculated, scheduler 506 evaluates the workbook and determines the number of tasks to be completed. In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation.” ¶ [0059] states “scheduler 506 monitors the computing cluster 108 to be sure that all tasks are completed” and “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: the operation is executed at the cluster between operation 710 and 712. “All tasks,” or the total number of tasks, is a threshold number of tasks. Tasks can correspond to cells. The scheduler monitors the computing cluster which means that the scheduler checks the cluster at a time interval), identifying, based on historical data, that the cells in the first subset of cells contain functions, data set sizes, or both that the system previously determined to be computationally intensive, in response to determining that the functions of cells of the first subset will require a computationally heavy task, instead of the processor of the first computing device processing the task (¶ [0037] states “computing system 102 is inadequate to perform the calculations required to calculate the workbook in the short amount of time that is desired. As a result, the calculation can instead be performed by computing cluster 108.” ¶ [0018] states “calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet”): assigning at least some cells that have not yet been processed to one or more additional subsets (¶ [0056] states “Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computing cluster 108, and determines how to divide the tasks among available computing nodes.” ¶ [0057] states “For example, consider a scenario in which a workbook had four calculations that needed to be performed and a computing cluster included three computing nodes … Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes.” ¶ [0059] states “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: when the scheduler divides the tasks, it is assigning tasks to subsets. Incomplete tasks are also assigned to a different node or subset of tasks. Unprocessed cells are tasks) distributing each of the one or more additional subsets among one or more additional computing devices to process the functions of cells of the additional subsets (¶ [0073] states “The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells” and “The request is then sent, such as across a network.” ¶ [0018] states “calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet” Examiner’s Note: after dividing the tasks into subsets, the requests to execute the task is sent to the cluster), receiving, from each of the one or more additional computing devices, results that include values for one or more the cells of the additional subsets (¶ [0060] states “Server 106 also receives the results of calculations of completed tasks from compute nodes 112 of computing cluster 108. For example, after a task has been completed by a compute node 112, such as the calculation of an output value based on a mathematical equation and input values, the output value is returned to server 106”), and causing the display device to display the values for the cells of the first subset and the values of the cells of the additional subsets in their corresponding cells (¶ [0061] states “Server 106 then communicates the result back to client computing system 102, where it is updated in the workbook 120”). Kulkarni does not explicitly teach determining if a task is computationally heavy. However, in an analogous art, Zusman teaches automatically identifying, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0030] states “For example, calculations requiring extensive time to execute can be offloaded. At decision 207, the spreadsheet application decides whether to offload the computationally expensive spreadsheet task. As discussed herein, the decision can occur as a result of a manual user operation, e.g., directing the spreadsheet app to offload a computationally expensive spreadsheet task or automatically as a result of some other condition, e.g., low battery life of client 110, etc.”) determining that the task is a computationally heavy task by (¶ [0025] states “Once a computationally expensive spreadsheet task is identified, at step 2, the task can be offloaded. In some embodiments, the computationally expensive spreadsheet tasks are automatically identified by the spreadsheet application.”): in response to determining that the functions of cells of the first subset will require a computationally heavy task, instead of the processor of the first computing device processing the task (¶ [0031] states “If the computationally expensive spreadsheet task is to be offloaded, at 209, the spreadsheet application generates a job including data from one or more spreadsheets, e.g., of workbook 117, and an instruction directing the remote service e.g., spreadsheet app service 125, to asynchronously execute the computationally expensive spreadsheet task.” ¶ [0034] states “At 309, the spreadsheet app service executes the computationally expensive spreadsheet task or directs a distributed computing framework to execute the computationally expensive spreadsheet task.” See FIG. 9 Distributed Computing Framework 160): distributing each of the one or more additional subsets among one or more additional computing devices to process the functions of cells of the additional subsets (¶ [0034] states “At 309, the spreadsheet app service executes the computationally expensive spreadsheet task or directs a distributed computing framework to execute the computationally expensive spreadsheet task.” See FIG. 9 Distributed Computing Framework 160); It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine determination that a spreadsheet task can be offloaded of Zusman with the cluster to perform spreadsheet operations of Kulkarni. A person having ordinary skill in the art would have been motivated to make this combination for the purpose of “[offloading] complex and/or time expensive processing tasks” (¶ [0021]) and doing so in an asynchrononus manner which alleviates “inefficiencies including exceedingly long wait times, lost calculation data, timeouts, etc., among other inefficiencies” (¶ [0003] and [0020]). Kulkarni and Zusman do not explicitly teach identifying that processing has not completed for a threshold number of the cells before a threshold time period expires. However, in an analogous art, Park teaches determining that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0068] states “If the number of requests from the first hosts for a predetermined time is a third threshold value or more, the workload monitoring unit 220 may determine that the workload of the memory device 120 is heavy” and “For instance, if the number of requests from the first hosts for a predetermined time is 5,000 or more, it may be determined that the workload of the memory device 120 is heavy”). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the determination that a workload is heavy based on a threshold number of requests not being completed in a predetermined time of Park with the processing of functions of the cells to yield updated values of Kulkarni and the determination of computationally expensive spreadsheet task of Zusman. As a result of the combination, when the task is monitored and the task not has not been completed, that is when a threshold number of tasks has not been completed before a threshold has expired. This means that the task is classified as “heavy” as described in Park. A person having ordinary skill in the art would have been motivated to make this combination to determine if a workload is “heavy” or “light” and then take an appropriate action. Using the determination if a workload is “heavy” or “light,” the system can “[reduce] current consumption due to a refresh operation of a memory system without a reduction in the performance of the memory system” (¶ [0004]). Kulkarni, Zusman, and Park do not explicitly teach identifying that the task is associated with a category of computationally heavy tasks. However, in an analogous art, Acharya teaches determining that the task is a computationally heavy task by: … identifying that the task is associated with a category of defined computationally heavy tasks (¶ [0040] states “The application types 331 is a set of data indicating the expected workload associated with different application types” and “In response to the device driver 103 indicating the application type, the scheduler 102 accesses the application types 331 to determine if the application type is associated with light workloads or heavy workloads.” Examiner’s Note: the application type is the category), It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the application type for determining a light or heavy workload of Acharya with the spreadsheet workload scheduler of Kulkarni, the determination of computationally expensive spreadsheet workloads of Zusman, and the threshold of Park. As a result, the scheduler “selects a power configuration based on the determination” (¶ [0040]). A person having ordinary skill in the art would have been motivated to make this combination because “as the workload at the GPU varies, the configuration of the GPU is varied, thereby conserving resources while maintaining satisfactory performance” (¶ [0009]). Kulkarni, Zusman, Park, and Acharya do not explicitly teach identifying that the number of cells in the first subset of cells exceeds a threshold value. However, in an analogous art, Goncalves teaches determining that the task is a computationally heavy task by: … identifying that the number of cells in the first subset of cells exceeds a threshold value (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.” Examiner’s Note: The number of sub-tasks is compared to a predetermined number to determine a complexity level. The predetermined number is the threshold value), or identifying that one or more default conditions, one or more conditions associated with a profile or account of a user of the spreadsheet, or one or more conditions specified by the user are occurring (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.”); It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine using a predetermined number of sub-tasks for determining complexity of Goncalves with the system that calculates a spreadsheet using a cluster when the cells to be calculated are computationally heavy of Kulkarni, and the determination of computationally heavy tasks of Zusman, Park, and Acharya. As a result, “the complexity level may be used to assign one or more computer resources” (¶ [0051]). A person having ordinary skill in the art would have been motivated to make this combination to “allow for more efficient processing of the computing task as a whole” (¶ [0085]). Kulkarni, Zusman, Park, Acharya, and Goncalves does not explicitly teach that it is the first computer that causes the display device to display a spreadsheet. However, in an analogous art, Simon teaches a method comprising, by a processor of a first computing device (¶ [0039] states “System 800 includes a cloud computing service 802 storing a master copy of collaborative spreadsheet 804.” See FIG. 8 802) causing a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0005] states “collaborative spreadsheets stored on a cloud computing service. The method includes accessing, from each of a plurality of client computers, a first sheet of a spreadsheet stored on a cloud computing service.” See FIG. 8. Examiner’s Note: client computers are the display device. The client computers receive the spreadsheet from the cloud computing service which is the first computing device causing the display device to display a spreadsheet). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the cloud hosted spreadsheet of Simon with the spreadsheet system of identifying a task that is to be distributed to a cluster of Kulkarni and the determinations of computationally heavy tasks of Zusman, Park, Acharya, and Goncalves. The cloud computing service of Simon and server 106 of Kulkarni together represent the first computing device. As a result, the server 106 of Kulkarni can now completely store the spreadsheet and provide the spreadsheet to client devices. A person having ordinary skill in the art would have been motivated to make this combination because “Cloud computing services provide a way for multiple people at multiple locations to collaborate on the same document” (¶ [0001]) and “client computers 104a-104d may simultaneously access spreadsheet 106 on cloud computing service 102 using a web browser” (¶ [0026]). One of ordinary skill in the art would recognize the benefits of simultaneous collaboration between multiple users in a spreadsheet. Additionally, Simon teaches another benefit stating “displaying the filtered first sheet to the first user, where a second client computer in the plurality of client computers concurrently displays an unfiltered first sheet” ([0004]) which alleviates the issue of when one person wants to view a filtered spreadsheet and another user does not (¶ [0002] states “Thus a collaborator's view of the spreadsheet will automatically change when the user applies a filter. This may be a hindrance to other collaborators who are viewing data that is affected by the filter”). Storing the spreadsheet on the server allows this kind of collaboration. With regard to claim 15, Kulkarni teaches a system comprising (¶ [0005] states “an aspect of some embodiments relates to a computing system for controlling the calculation of a workbook.” See FIG. 1): a first computing device (¶ [0021] states “Server 106 is a computing system that interfaces between client computing system 102 and computing cluster 108.” Examiner’s Note: the server 106 is the first computing device); one or more additional computing devices (¶ [0022] states “Computing cluster 108 is a physical and/or logical grouping of computing systems that are configured to operate as computing nodes 112.” See FIG. 1); and a memory that is part of or remote from the first computing device, the memory containing programming instructions that are configured to, when executed by the first computing device (¶ [0005] states “The computing system includes a communication device, a processor, and memory” and “The memory stores program instructions, which when executed by the processor cause the computing system to perform operations”): cause a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0019] states “Client computing system 102 is any computing system capable of operating a spreadsheet application.” ¶ [0027] states “Output device(s) 216 such as a display.” ¶ [0030] states “each spreadsheet 306 containing cells 308 arranged in columns and rows.” ¶ [0031] states “cells 308 are used to store either values or formulas, or both”), automatically identify, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0034] states “The output cells do not yet have a known value, and instead include a formula that defines a calculation based on the input cells for calculation of the value.” ¶ [0048] states “spreadsheet data is received from client computing system 102 in the form of an Extensible Markup Language (XML) document.” ¶ [0050] states “The example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster. As shown above, the example schema includes … the input collection defining the collection of inputs to be used for the calculations.” ¶ [0021] states “server 106 receives a request to calculate a workbook from client computing system 102 and oversees the calculation of the workbook across computing cluster 108.”) determine that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0073] states “Operation 710 is then performed to generate and send a calculation request.” ¶ [0075] states “After the request has been sent, operation 712 is then performed to receive the results and update the workbook.” ¶ [0056] states “When a workbook is to be calculated, scheduler 506 evaluates the workbook and determines the number of tasks to be completed. In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation.” ¶ [0059] states “scheduler 506 monitors the computing cluster 108 to be sure that all tasks are completed” and “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: the operation is executed at the cluster between operation 710 and 712. “All tasks,” or the total number of tasks, is a threshold number of tasks. Tasks can correspond to cells. The scheduler monitors the computing cluster which means that the scheduler checks the cluster at a time interval), identifying, based on historical data, that the cells in the first subset of cells contain functions, data set sizes, or both that the system previously determined to be computationally intensive, assign at least some cells that have not yet been processed to one or more additional subsets (¶ [0056] states “Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computing cluster 108, and determines how to divide the tasks among available computing nodes.” ¶ [0057] states “For example, consider a scenario in which a workbook had four calculations that needed to be performed and a computing cluster included three computing nodes … Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes.” ¶ [0059] states “If a task is not completed, scheduler 506 reassigns the task to another computing node.” Examiner’s Note: when the scheduler divides the tasks, it is assigning tasks to subsets. Incomplete tasks are also assigned to a different node or subset of tasks. Unprocessed cells are tasks); distribute each of the cells of the one or more additional subsets among one or more of the additional computing devices to process the functions of cells of the additional subsets (¶ [0073] states “The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells” and “The request is then sent, such as across a network.” ¶ [0018] states “calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet.” Examiner’s Note: after dividing the tasks into subsets, the request to execute the task is sent to the cluster); upon receiving, from the one or more other computing devices to which cells were distributed, results that include values for one or more the cells of the additional subsets (¶ [0060] states “Server 106 also receives the results of calculations of completed tasks from compute nodes 112 of computing cluster 108. For example, after a task has been completed by a compute node 112, such as the calculation of an output value based on a mathematical equation and input values, the output value is returned to server 106”), cause the display device to display the values for the cells of the first subset and the values of the cells of the additional subsets in their corresponding cells (¶ [0061] states “Server 106 then communicates the result back to client computing system 102, where it is updated in the workbook 120”). Kulkarni does not explicitly teach determining if a task is computationally heavy. However, in an analogous art, Zusman teaches automatically identify, without requiring manual user selection thereof, a first subset of the cells that each include a respective function that includes a variable that depends on the value of a different cell of the spreadsheet (¶ [0030] states “For example, calculations requiring extensive time to execute can be offloaded. At decision 207, the spreadsheet application decides whether to offload the computationally expensive spreadsheet task. As discussed herein, the decision can occur as a result of a manual user operation, e.g., directing the spreadsheet app to offload a computationally expensive spreadsheet task or automatically as a result of some other condition, e.g., low battery life of client 110, etc.”) determine that the task is a computationally heavy task by (¶ [0025] states “Once a computationally expensive spreadsheet task is identified, at step 2, the task can be offloaded. In some embodiments, the computationally expensive spreadsheet tasks are automatically identified by the spreadsheet application.”): in response to determining that a task to be performed on the first subset of the cells is a computationally heavy task (¶ [0031] states “If the computationally expensive spreadsheet task is to be offloaded, at 209, the spreadsheet application generates a job including data from one or more spreadsheets, e.g., of workbook 117, and an instruction directing the remote service e.g., spreadsheet app service 125, to asynchronously execute the computationally expensive spreadsheet task.” ¶ [0034] states “At 309, the spreadsheet app service executes the computationally expensive spreadsheet task or directs a distributed computing framework to execute the computationally expensive spreadsheet task.” See FIG. 9 Distributed Computing Framework 160): distribute each of the cells of the one or more additional subsets among one or more of the additional computing devices to process the functions of cells of the additional subsets ([0034] states “At 309, the spreadsheet app service executes the computationally expensive spreadsheet task or directs a distributed computing framework to execute the computationally expensive spreadsheet task.” See FIG. 9 Distributed Computing Framework 160) It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine determination that a spreadsheet task can be offloaded of Zusman with the cluster to perform spreadsheet operations of Kulkarni. A person having ordinary skill in the art would have been motivated to make this combination for the purpose of “[offloading] complex and/or time expensive processing tasks” (¶ [0021]) and doing so in an asynchronous manner which alleviates “inefficiencies including exceedingly long wait times, lost calculation data, timeouts, etc., among other inefficiencies” (¶ [0003] and [0020]). Kulkarni and Zusman do not explicitly teach identifying that processing has not completed for a threshold number of the cells before a threshold time period expires. However, in an analogous art, Park teaches determine that the task is a computationally heavy task by: processing the functions of the cells of the first subset to yield updated values for the cells of the first subset, and identifying that processing of the functions has not completed for a threshold number of the cells of the first subset before a threshold time period expires (¶ [0068] states “If the number of requests from the first hosts for a predetermined time is a third threshold value or more, the workload monitoring unit 220 may determine that the workload of the memory device 120 is heavy” and “For instance, if the number of requests from the first hosts for a predetermined time is 5,000 or more, it may be determined that the workload of the memory device 120 is heavy”). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the determination that a workload is heavy based on a threshold number of requests not being completed in a predetermined time of Park with the processing of functions of the cells to yield updated values of Kulkarni and the determination of computationally expensive spreadsheet task of Zusman. As a result of the combination, when the task is monitored and the task not has not been completed, that is when a threshold number of tasks has not been completed before a threshold has expired. This means that the task is classified as “heavy” as described in Park. A person having ordinary skill in the art would have been motivated to make this combination to determine if a workload is “heavy” or “light” and then take an appropriate action. Using the determination if a workload is “heavy” or “light,” the system can “[reduce] current consumption due to a refresh operation of a memory system without a reduction in the performance of the memory system” (¶ [0004]). Kulkarni, Zusman, and Park do not explicitly teach identifying that the task is associated with a category of computationally heavy tasks. However, in an analogous art, Acharya teaches determine that the task is a computationally heavy task by: … identifying that the task is associated with a category of defined computationally heavy tasks (¶ [0040] states “The application types 331 is a set of data indicating the expected workload associated with different application types” and “In response to the device driver 103 indicating the application type, the scheduler 102 accesses the application types 331 to determine if the application type is associated with light workloads or heavy workloads.” Examiner’s Note: the application type is the category), It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the application type for determining a light or heavy workload of Acharya with the spreadsheet workload scheduler of Kulkarni, the determination of computationally expensive spreadsheet workloads of Zusman, and the threshold of Park. As a result, the scheduler “selects a power configuration based on the determination” (¶ [0040]). A person having ordinary skill in the art would have been motivated to make this combination because “as the workload at the GPU varies, the configuration of the GPU is varied, thereby conserving resources while maintaining satisfactory performance” (¶ [0009]). Kulkarni, Zusman, Park, and Acharya do not explicitly teach identifying that the number of cells in the first subset of cells exceeds a threshold value. However, in an analogous art, Goncalves teaches determine that the task is a computationally heavy task by: … identifying that the number of cells in the first subset of cells exceeds a threshold value (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.” Examiner’s Note: The number of sub-tasks is compared to a predetermined number to determine a complexity level. The predetermined number is the threshold value), or identifying that one or more default conditions, one or more conditions associated with a profile or account of a user of the spreadsheet, or one or more conditions specified by the user are occurring (¶ [0050] states “the complexity level may depend on the number and/or types of sub-tasks associated with a computing task. For example, if there are more than a predetermined number of sub-tasks associated with a given task, that may indicate that the task is relatively complex.” ¶ [0051] states “a complexity level may be indicated by use of a complexity scale with gradations such as “High,” “Medium,” and “Low,” or “Simple” and “Complex.”); It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine using a predetermined number of sub-tasks for determining complexity of Goncalves with the system that calculates a spreadsheet using a cluster when the cells to be calculated are computationally heavy of Kulkarni, and the determination of computationally heavy tasks of Zusman, Park, and Acharya. As a result, “the complexity level may be used to assign one or more computer resources” (¶ [0051]). A person having ordinary skill in the art would have been motivated to make this combination to “allow for more efficient processing of the computing task as a whole” (¶ [0085]). Kulkarni, Zusman, Park, Acharya, and Goncalves does not explicitly teach that it is the first computer that causes the display device to display a spreadsheet. However, in an analogous art, Simon teaches a method comprising, by a processor of a first computing device (¶ [0039] states “System 800 includes a cloud computing service 802 storing a master copy of collaborative spreadsheet 804.” See FIG. 8 802) cause a display device to display a spreadsheet containing a plurality of cells, wherein each cell is associated with a corresponding value or function (¶ [0005] states “collaborative spreadsheets stored on a cloud computing service. The method includes accessing, from each of a plurality of client computers, a first sheet of a spreadsheet stored on a cloud computing service.” See FIG. 8. Examiner’s Note: client computers are the display device. The client computers receive the spreadsheet from the cloud computing service which is the first computing device causing the display device to display a spreadsheet). It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine the cloud hosted spreadsheet of Simon with the spreadsheet system of identifying a task that is to be distributed to a cluster of Kulkarni and the determinations of computationally heavy tasks of Zusman, Park, Acharya, and Goncalves. The cloud computing service of Simon and server 106 of Kulkarni together represent the first computing device. As a result, the server 106 of Kulkarni can now completely store the spreadsheet and provide the spreadsheet to client devices. A person having ordinary skill in the art would have been motivated to make this combination because “Cloud computing services provide a way for multiple people at multiple locations to collaborate on the same document” (¶ [0001]) and “client computers 104a-104d may simultaneously access spreadsheet 106 on cloud computing service 102 using a web browser” (¶ [0026]). One of ordinary skill in the art would recognize the benefits of simultaneous collaboration between multiple users in a spreadsheet. Additionally, Simon teaches another benefit stating “displaying the filtered first sheet to the first user, where a second client computer in the plurality of client computers concurrently displays an unfiltered first sheet” ([0004]) which alleviates the issue of when one person wants to view a filtered spreadsheet and another user does not (¶ [0002] states “Thus a collaborator's view of the spreadsheet will automatically change when the user applies a filter. This may be a hindrance to other collaborators who are viewing data that is affected by the filter”). Storing the spreadsheet on the server allows this kind of collaboration. With regard to claims 11 and 20, they are rejected using the same rationale as claim 5. With regard to claims 12 and 21, they are rejected using the same rationale as claim 6. Claim(s) 4, 9, and 19 is/are rejected under 35 U.S.C 103 as being unpatentable over Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon, and further in view of Miller Pat. No. US 20190370322 A1 (hereafter Miller). With regard to claim 4, Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon teach the method of claim 1. Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon do not explicitly teach using a directed acyclic graph to identify cells that have dependencies on other cells. However, in an analogous art, Miller teaches wherein identifying the first subset of the cells comprises using a directed acyclic graph to identify cells that have dependencies on other cells (¶ [0027] states “FIG. 2 is a flow diagram that illustrates a directed acyclic graph (DAG) 200 representing the spreadsheet 100 of FIG. 1.” ¶ [0028] states “In the example of FIG. 2, nodes 202-210 are a first node type and node 212 is a second node type. The first node type is an upstream node that has at least one dependent node downstream with the dependency represented by one or more edges leading from the upstream node to the at least one dependent node.” See FIG. 1 and 2) It would have been obvious to a person having ordinary skill in the art prior to the effective filing date to combine using the directed acyclic graph to determine if a cell is a first node type that has dependent downstream node of Miller with the spreadsheet system using a cluster to calculate a spreadsheet of Kulkarni and Simon and the determination of computationally heavy workloads of Zusman, Park, Acharya, and Goncalves. A person having ordinary skill in the art would have been motivated to make this combination because Miller states “The present disclosure significantly reduces superfluous node evaluations” and “The significant reduction in superfluous node evaluations results in an increase in efficiency in recalculations, and ultimately, in an increase in efficiency of the computing device” (¶ [0004]). Miller achieves these improvements by using a directed acyclic graph. With regard to claims 9 and 19, they are rejected using the same rationale as claim 4. Claim(s) 7, 13, and 17 is/are rejected under 35 U.S.C 103 as being unpatentable over Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon, and further in view of Gross et al. Pat. No. US 20240264881 A1 (hereafter Gross). With regard to claim 7, Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon teach the method of claim 1. Although Kulkarni teaches that different computing devices can have different computing capacities (¶ [0057]), Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon do not explicitly teach that the first computing device has less memory, capacity, or both than the additional computing devices. However, in an analogous art, Gross teaches wherein the first computing device has less random access memory, less processing capacity, or both than each of the one or more additional computing devices (¶ [0037] states “The system 100 can operate with a set of compute devices that are homogenous or heterogeneous so that a wide variety of different types of compute devices can be used simultaneously.” ¶ [0038] states “A particular compute device 115 can be a portable and mobile device, such as battery operated smart phone, tablet or laptop computer, an IoT device, or other network connected computing device.” ¶ [0039] states “A typical compute device 115 includes a microcontroller 305 connected to memory 310, which can include both short and long term storage, such as RAM, ROM, a solid-state drive, etc.”). It would be obvious to a person having ordinary skill in the art prior to the effective filing data to combine the compute device with less processing and memory capacity than other compute devices with the environment of a spreadsheet server and a cluster of computing devices because Gross teaches that the compute device can “offload some or all of its unprocessed data chunks to a different compute device for processing there” due to “low battery, lack of memory or insufficient CPU resources” (¶ [0014]). Gross teaches a compute device that has less computing and/or memory capacity than other compute devices because Gross teaches that compute devices are heterogenous (¶ [0037]) and that compute devices have a processor and random access memory (¶ [0038]). The compute device that has less computing and/or memory capacity that offloads unprocessed data chunks is the first device of Kulkarni and Simon. A person having ordinary skill in the art would have been motivated to make this combination to “distribute data processing jobs to a plurality of network connected compute devices that can be remotely accessed, and comprise heterogeneous devices that are unrelated to each other” (¶ [0005]) which improves upon workload distribution systems that “require a forced homogeneity among compute node devices and/or result in underutilization of computing assets and this can result in significant workload and device utilization inefficiency” (¶ [0004]). With regard to claims 13 and 17, they are rejected using the same rationale as claim 4. Response to Arguments The objection to claim 2 is withdrawn. The objection to claim 10 is withdrawn by virtue of claim 10 now being cancelled. Examiner has withdrawn 35 U.S.C. § 112(b) rejections regarding “computationally heavy” in claims 1, 8, and 15. Examiner has withdrawn 35 U.S.C. § 112(b) rejections regarding “relatively more complex” and “relatively less complex” in claims 6, 12, and 21 Applicant's arguments filed 06/26/2026 have been fully considered but they are not persuasive. With regard the 35 U.S.C. § 101 rejection of claims 1-2, 4-9, 11-13, 15, 17 and 19-21, applicant argues that the amendment “instead of the processor of the first computing device processing the task” show an improvement in resource utilization. Thus, applicant argues that this amendment integrates the judicial exception into a practical application. Examiner respectfully disagrees. The amendment states that the first computing device does not perform the processing for the task. However, this does not show that the task has been executed by devices other than the first computing device. The claims merely recite “distributing at least a portion of the task to one or more additional computing devices” and “receiving, from each of the one or more additional computing devices, results that include values for one or more of the cells.” In other words, the claims show that a task is distributed to other computing devices and then results are received without a step of performing the calculation to generate the results. As the claims are, tasks have been moved between computing devices but have not been explicitly executed. This does not show an improvement to the functioning of a computer. Instead, as analyzed in the Step 2A Prong 2 of the 35 U.S.C. § 101 rejection of claims 1, 8, and 15, the additional elements only amount to means to apply an exception and insignificant extra-solution activity of display and data gathering/transmission. Specifically, the amendment “instead of the processor of the first computing device processing the task, distributing at least a portion of the task to one or more additional computing devices” is insignificant extra-solution activity of data transmission (MPEP § 2106.05(g)) because the distributing of data from the first computing device to additional computing devices is incidental to the judicial exception. Further, as analyzed in Step 2B of the 35 U.S.C. § 101 rejection of claims 1, 8, and 15, reevaluating the claims does not show an inventive concept that is significantly more. Examiner maintains the 35 U.S.C. § 101 rejection of claims 1-2, 4-9, 11-13, 15, 17 and 19-21. Applicant’s arguments with respect to the 35 U.S.C. § 103 rejection of claim(s) 1, 8, and 15 have been considered but are moot because the new ground of rejection does not rely on the combination of references applied in the prior rejection of record for any teaching or matter specifically challenged in the argument. Rather, it is the combination of Kulkarni, Zusman, Park, Acharya, Goncalves, and Simon that fully teach the limitations of claims 1, 8, and 15. Conclusion The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. US 20200264928 A1 teaches Predictive Job Admission Control With Feedback US 20150046679 A1 teaches Energy-Efficient Run-Time Offloading Of Dynamically Generated Code In Heterogenuous Multiprocessor Systems US 20230409410 A1 teaches INTELLIGENT DISTRIBUTION OF COMPUTER TASKS ON EDGE COMPUTING DEVICES US 20170135003 A1 teaches COMMUNICATION SYSTEM AND METHOD OF LOAD BALANCING Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a). A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action. Any inquiry concerning this communication or earlier communications from the examiner should be directed to PETER L YUAN whose telephone number is (571)272-5737. The examiner can normally be reached Mon-Fri 7:30am-5pm. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Bradley Teets can be reached at 571-272-3338. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /PETER LI YUAN/Examiner, Art Unit 2197 /BRADLEY A TEETS/Supervisory Patent Examiner, Art Unit 2197
Read full office action

Prosecution Timeline

Dec 08, 2023
Application Filed
Apr 23, 2026
Non-Final Rejection mailed — §101, §103, §112
Jun 09, 2026
Interview Requested
Jun 23, 2026
Examiner Interview Summary
Jun 23, 2026
Applicant Interview (Telephonic)
Jul 23, 2026
Response Filed
Sep 10, 2026
Final Rejection mailed — §101, §103, §112 (current)

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

3-4
Expected OA Rounds
100%
Grant Probability
99%
With Interview (+0.0%)
2y 11m (~2m remaining)
Median Time to Grant
Moderate
PTA Risk
Based on 1 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month