1. A method for scheduling a computation for execution on a computer comprising a plurality of functional units interconnected by a plurality of interconnections, the computation being representable by a data-flow graph having a plurality of nodes and a plurality of edges and the method comprising: (a) computing a loop-period of the computation; (b) scheduling the plurality of nodes for throughput by assigning an execution cycle and a functional unit to each node of the plurality of nodes; (c) adjusting the scheduling of flexible nodes of the plurality of nodes to reduce the number of interconnections required in any execution cycle if the number of interconnections required exceeds the number of interconnections in the plurality of interconnections; and (d) allocating the plurality of edges to one or more of the plurality of interconnections.