<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">OJOp</journal-id><journal-title-group><journal-title>Open Journal of Optimization</journal-title></journal-title-group><issn pub-type="epub">2325-7105</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/ojop.2017.64012</article-id><article-id pub-id-type="publisher-id">OJOp-81511</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject><subject> Engineering</subject><subject> Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  The Usefulness of Dynamic Programming in Course Allocation in the Nigerian Universities
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Harrison</surname><given-names>O. Amuji</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Geoffrey</surname><given-names>U. Ugwuanyim</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Chukwudi</surname><given-names>J. Ogbonna</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Hycinth</surname><given-names>C. Iwu</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Bridget</surname><given-names>N. Okechukwu</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Statistics, Federal University of Technology, Owerri, Nigeria</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>amujiobi@yahoo.com(HOA)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>01</day><month>12</month><year>2017</year></pub-date><volume>06</volume><issue>04</issue><fpage>176</fpage><lpage>186</lpage><history><date date-type="received"><day>9,</day>	<month>August</month>	<year>2017</year></date><date date-type="rev-recd"><day>26,</day>	<month>December</month>	<year>2017</year>	</date><date date-type="accepted"><day>29,</day>	<month>December</month>	<year>2017</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  Having lectured in some universities and polytechnics in Nigeria, the researchers observed problems in course allocations. There are no lay
  -
  down techniques on how courses should be allocated with respect to the minimum and maximum credit a lecturer should carry in a semester. Many lecturers were overloaded while others were under
  -
  loaded. For this reason, dynamic programming model was developed for allocating courses among lecturers in the Nigerian universities using the Department of Statistics, Federal University of Technology Owerri, as a case study. From our analysis, we observed that among all the optimal allocations discovered in the study, the best optimal allocation policy was achieved at the point (1, 2, 1, 2). Allocation of courses in this order will yield an optimal credit hour of 12 per lecturer per semester.
 
</p></abstract><kwd-group><kwd>Multi-Stage Decision Problem</kwd><kwd> Dynamic Programming</kwd><kwd> Serial Decision Problem</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Dynamic programming is a mathematical technique well suited for the optimization of multistage decision problem. The dynamic programming technique decomposes a multistage decision problem as a sequence of single-stage decision problems. A multistage decision process is one in which a number of single-stage processes are connected in series so that the output of one stage is the input of the succeeding stage. This is a serial dynamic programming since the individual stages are connected head to tail with no recycle. A decision process can be characterized by certain input parameters, S (or data), certain decision variables (X), and certain output parameters (T) representing the outcome obtained as a result of making the decision. The input parameters are called input state variables, and the output parameters are called output state variables. The objective function R, measures the effectiveness of the decisions made and the output that results from these decisions.</p><p>A dynamic programming problem can be stated as follows: find x 1 , x 2 , ⋯ , x n , which optimizes</p><p>f ( x 1 , x 2 , ⋯ , x n ) = ∑ i = 1 n R i = ∑ i = 1 n r i ( x i , s i + 1 ) (1)</p><p>and satisfies the design equations</p><p>s i = t i ( s i + 1 , x i ) , i = 1 , 2 , ⋯ , n . (2)</p><p>The dynamic programming makes use of the concept of sub-optimization and the principle of optimality in solving a problem. An optimal policy (or a set of decisions) has the property that whatever the initial state and initial decision are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decision [<xref ref-type="bibr" rid="scirp.81511-ref1">1</xref>] . It can be grouped into the following four categories depending on the underlying structures of the systems under study, they are: a) serial processes; b) non-serial processes; c) Markov processes; and d) fuzzy processes [<xref ref-type="bibr" rid="scirp.81511-ref2">2</xref>] . These researchers concentrated mainly on the non-serial dynamic programming. They applied dynamic programming to model problems in chemical engineering, natural gas pipeline systems and water resource systems.</p><p>A simplified work was done on dynamic programming formulation [<xref ref-type="bibr" rid="scirp.81511-ref3">3</xref>] . The authors demonstrated the application of dynamic programming using musical instruments and their player and the total man-hour required for playing music. Many researchers on dynamic programming lament the lack of practical applications of the technique. The increasingly powerful computing facilities now available mean that the solution of many hitherto intractable problems is becoming a reality. However, there remains a problem in encouraging students and practitioners to adopt a dynamic programming approach to solution [<xref ref-type="bibr" rid="scirp.81511-ref4">4</xref>] . The author used dynamic programming to model a system whereby revenue support grants are distributed to local authorities, with apparently strong incentives for authorities to reduce expenditure levels. Future spending targets remained heavily dependent on past spending levels.</p><p>Dynamic programming is conceptually a powerful computational technique that can solve nonlinear stochastic control problems involving constraints in the state and control variables [<xref ref-type="bibr" rid="scirp.81511-ref5">5</xref>] . His work presents a new decomposition procedure that reduces both the high-speed memory requirement and the computational time for interpolations in the dynamic programming algorithm. He developed dynamic programming model that can calculating the optimal values of cost and control for states and store only the optimal values of cost for states which is what is needed to be stored in the high-speed memory. Dynamic programming is a mathematical technique for solving certain types of sequential decision problems. A sequential decision problem is a problem in which a sequence of decisions must be made with each decision affecting future decisions [<xref ref-type="bibr" rid="scirp.81511-ref6">6</xref>] . Dynamic programming is quite different in form and concept from linear programming. Dynamic programming is conceptually more powerful and computationally less powerful than linear programming.</p><p>Dynamic programming was used to determine the optimum mix of widths of steel used to “pack” a transformer coil. The approach enables the designer to specify and vary the number of widths to be incorporated into the design. It was found that, beyond a relatively small number, the “coverage” obtained is largely independent of the coil diameter. Transformer coil comprises a series of “plates” of transformer steel packed together. The closer the “packing” is to being circular, the better the design. Thus the designer starts off aiming to fill a circular area with as much transformer steel as possible, this material typically being made available in thicknesses of around 1 mm [<xref ref-type="bibr" rid="scirp.81511-ref7">7</xref>] .</p><p>Dynamic programming was used for cluster sampling [<xref ref-type="bibr" rid="scirp.81511-ref8">8</xref>] . His work considers the problem of partitioning N entities into M disjoint and nonempty subsets (clusters). Except when both N and N-M are very small, a search for the optimal solution by total enumeration for clustering alternatives is quite impractical. The author presents a dynamic programming approach that reduces the amount of redundant transitional calculations implicit in a total enumeration approach. Unlike most clustering approaches used in practice, the dynamic programming algorithm will always converge on the best clustering solution. The efficiency of the dynamic programming approach depends upon the rapid-access computer memory available. Dynamic programming was used for capital allocation of resources. Dynamic programming algorithms were developed for optimal capital allocation subject to budget constraints. By including multi-level projects, reinvesting returns, borrowing and lending, capital deferrals, and project interactions, the authors were able to handle dynamic programming models with several state variables because the optimal returns are monotone non-decreasing step functions [<xref ref-type="bibr" rid="scirp.81511-ref9">9</xref>] .</p><p>Due to problems arising from course allocation in various departments in the Nigerian Universities, where some lecturers will carry excess work load and others carry less, the researchers saw it as a matter of priority to develop a model that will equally distribute courses to different cadres of lecturers in different departments using the department of Statistics, Federal University of Technology Owerri as a case study. A Dynamic programming model, otherwise known as optimal allocation policy, was developed for the study. Dynamic programming is a multi-stage decision process where the solution of the final stage proceeds from the first stage with a recursive relationship. The first stage forms a base for the computation of the second stage etc. From this study, it was observed that among all the optimal allocations, the best optimal allocation policy was achieved at the point (1, 2, 1, 2). This means that each lecturer should be assigned at most one statistics course in both the harmattan and rain semester second year and one course in the harmattan semesters fourth year respectively. On the other hand, lecturers should be allocated two courses each in the third and fifth year rain and harmattan semesters. Allocation of courses in this order will yield an optimal credit hour of 12 per lecturer per semester. In the second year, Statistics courses are being introduced to the students and they have few of those courses to offer while in the fourth year, the students offer fewer courses only in the harmattan semesters due to six-month industrial attachment they attend in the rain semester.</p></sec><sec id="s2"><title>2. Methodology</title><p>Dynamic programming begins by sub-optimizing the last component, numbered 1. This involves the determination of</p><p>f 1 ∗ ( s 2 ) = o p t x i [ R 1 ( x 1 , s 2 ) ] (3)</p><p>The best value of the decision variable x<sub>1</sub> is that which makes the return (or objective) function R<sub>1</sub> assume its optimum value, denoted by f<sub>1</sub>. Both x<sub>1</sub> and f<sub>1</sub> depend on the condition of the input that the component 1 receives from s<sub>2</sub>. Since the particular value s<sub>2</sub> will assume after the upstream components are optimized is not known at this time, this last stage sub-optimization problem is solved for a range of possible values of s<sub>2</sub> and the results are entered into a table. This table contains a complete summary of the results of sub-optimization of Stage 1. Next we move up the serial system to include the last two components. In this two-stage sub-optimization, we have to determine</p><p>f 2 ∗ ( s 3 ) = o p t x 2 , x 1 [ R 2 ( x 2 , s 3 ) + R 1 ( x 1 , s 2 ) ] (4)</p><p>Since all the information about component 1 has already been encoded in the table corresponding to f<sub>1</sub>, this information can then be substituted for R<sub>1</sub> and so on till the final stage</p><p>f i ∗ ( s n , x n ) = o p t x i [ R n ( x i ) + f n + 1 ∗ ( s n − x n ) ] (5)</p><p>The final thing needed is to retrace the steps through the tables generated, to gather the complete set of x i ∗ ( i = 1 , 2 , ⋯ , n ) for the system. This can be done as follows. The nth sub-optimization gives the values of x n ∗ and f n ∗ for the specified value of s<sub>n</sub><sub>+</sub><sub>1</sub>. The known design equation</p><p>s n = f n ( s n + 1 , x n ∗ ) (6)</p><p>can be used to find the input, s n ∗ , to the (n − 1)th stage.</p><p>The data for this paper was collected from the department of Statistics, Federal University of Technology, Owerri. The courses are designated by titles, codes and credit hours attached to each of them. Each of these courses is to be allocated to different cadres of academic staff (lecturers) in the department. The data comprise different Statistics courses offered by the department of Statistics from second year to final year (fifth year) when Statistics courses are actually offered by the students of the department. Few courses are offered in both second and fourth year because in the second year, students are introduced to statistics courses and in the fourth year, second semester (rain), students’ go for industrial training. Out of the entire courses offered by the department, simple random sampling was used to draw six courses each from third and fifth year respectively where the bulk of the courses are offered and the entire courses are drawn in both second and fourth year where fewer courses are offered.</p>A Flow Diagram of the Method<disp-formula id="scirp.81511-formula4"><graphic  xlink:href="//html.scirp.org/file/3-2730138x13.png"  xlink:type="simple"/></disp-formula></sec><sec id="s3"><title>3. Presentation and Analysis of Data</title><sec id="s3_1"><title>3.1. Presentation of Data</title><p>The data to be presented here are:</p><p>1) Cadres of lecturers and level of statistics courses, see <xref ref-type="table" rid="table1">Table 1</xref>.</p><p>2) Cadres of lecturers and credit hours per statistics courses, see <xref ref-type="table" rid="table2">Table 2</xref>.</p></sec><sec id="s3_2"><title>3.2. Analysis of Data</title><p>The standard form of dynamic programming when the final state is fixed and initial state is free is given by</p><p>f n ( s n , x n ) = o p t x i [ R n ( x i ) + f n + 1 ∗ ( s n − x n ) ] (7)</p><p>where x<sub>i</sub> are the stages and S<sub>i</sub> are the states, i = 1 , 2 , ⋯ , n .</p><p>In this section, we analyze the data presented in Tables 3-7.</p><p>1) We represent different cadres of lecturers as “State” and level of courses as “Stages”. Here, we have six states and four stages. Zeroes in the second row represent the origin where no allocation has been made. This is represented in <xref ref-type="table" rid="table3">Table 3</xref>.</p><p>2) <xref ref-type="table" rid="table4">Table 4</xref> is derived from the state and last column of Stage 4 from <xref ref-type="table" rid="table3">Table 3</xref>, since the last stage is fixed.</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Cadres of lecturers and level of STA courses</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Cadre of lecturers</th><th align="center" valign="middle" ></th><th align="center" valign="middle" >200 Level</th><th align="center" valign="middle" >300 Level</th><th align="center" valign="middle" >400 Level</th><th align="center" valign="middle" >500 Level</th></tr></thead><tr><td align="center" valign="middle" >Professors</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >STA 211</td><td align="center" valign="middle" >STA 301</td><td align="center" valign="middle" >STA 411</td><td align="center" valign="middle" >STA 501</td></tr><tr><td align="center" valign="middle" >Readers</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >STA 221</td><td align="center" valign="middle" >STA 321</td><td align="center" valign="middle" >STA 421</td><td align="center" valign="middle" >STA 511</td></tr><tr><td align="center" valign="middle" >Senior lecturers</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >STA 223</td><td align="center" valign="middle" >STA 331</td><td align="center" valign="middle" >STA 431</td><td align="center" valign="middle" >STA 513</td></tr><tr><td align="center" valign="middle" >Lecturer 1</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >STA 212</td><td align="center" valign="middle" >STA 312</td><td align="center" valign="middle" >STA 433</td><td align="center" valign="middle" >STA 502</td></tr><tr><td align="center" valign="middle" >Lecturer 11</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >STA 222</td><td align="center" valign="middle" >STA 336</td><td align="center" valign="middle" >STA 435</td><td align="center" valign="middle" >STA 512</td></tr><tr><td align="center" valign="middle" >Ass. lecturer</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >STA 224</td><td align="center" valign="middle" >STA 342</td><td align="center" valign="middle" >STA 451</td><td align="center" valign="middle" >STA 514</td></tr></tbody></table></table-wrap><p>Source: Department of Statistics, FUTO (2017).</p><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Cadres of lecturers and credit hours per STA courses</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Cadre of lecturers</th><th align="center" valign="middle" ></th><th align="center" valign="middle" >200 Level 1</th><th align="center" valign="middle" >300 Level 2</th><th align="center" valign="middle" >400 Level 3</th><th align="center" valign="middle" >500 Level 4</th></tr></thead><tr><td align="center" valign="middle" >Professors</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >Readers</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >Senior lecturers</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >Lecturer 1</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >Lecturer 11</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >Ass. lecturer</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr></tbody></table></table-wrap><table-wrap id="table3" ><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> State and stages</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >State/Stages</th><th align="center" valign="middle" >1</th><th align="center" valign="middle" >2</th><th align="center" valign="middle" >3</th><th align="center" valign="middle" >4</th></tr></thead><tr><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr></tbody></table></table-wrap><table-wrap id="table4" ><label><xref ref-type="table" rid="table4">Table 4</xref></label><caption><title> Stage 1 of the problem</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >S<sub>4</sub></th><th align="center" valign="middle" >f 4 ∗</th><th align="center" valign="middle" >X 4 ∗</th></tr></thead><tr><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >1</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >2</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >4</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >5</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td></tr></tbody></table></table-wrap><table-wrap id="table5" ><label><xref ref-type="table" rid="table5">Table 5</xref></label><caption><title> Stage 2 of the problem</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >S<sub>3</sub>/X<sub>3</sub></th><th align="center" valign="middle" >0</th><th align="center" valign="middle" >1</th><th align="center" valign="middle" >2</th><th align="center" valign="middle" >3</th><th align="center" valign="middle" >4</th><th align="center" valign="middle" >5</th><th align="center" valign="middle" >6</th><th align="center" valign="middle" >f 3 ∗</th><th align="center" valign="middle" >X 3 ∗</th></tr></thead><tr><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >2</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1 or 2</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1 or 2</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1, 2 or 4</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >5</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1, 2, 4 or 5</td></tr></tbody></table></table-wrap><table-wrap id="table6" ><label><xref ref-type="table" rid="table6">Table 6</xref></label><caption><title> Stage 3 of the problem</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >S<sub>2</sub>/X<sub>2</sub></th><th align="center" valign="middle" >0</th><th align="center" valign="middle" >1</th><th align="center" valign="middle" >2</th><th align="center" valign="middle" >3</th><th align="center" valign="middle" >4</th><th align="center" valign="middle" >5</th><th align="center" valign="middle" >6</th><th align="center" valign="middle" >f 2 ∗</th><th align="center" valign="middle" >X 2 ∗</th></tr></thead><tr><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >1</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >1 or 2</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >1, 2 or 3</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >1, 2, 3 or 4</td></tr></tbody></table></table-wrap><table-wrap id="table7" ><label><xref ref-type="table" rid="table7">Table 7</xref></label><caption><title> Stage 4 (final stage) of the problem</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >S<sub>1</sub>/X<sub>1</sub></th><th align="center" valign="middle" >0</th><th align="center" valign="middle" >1</th><th align="center" valign="middle" >2</th><th align="center" valign="middle" >3</th><th align="center" valign="middle" >4</th><th align="center" valign="middle" >5</th><th align="center" valign="middle" >6</th><th align="center" valign="middle" >f 1 ∗</th><th align="center" valign="middle" >X 1 ∗</th></tr></thead><tr><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >0</td><td align="center" valign="middle" >0</td></tr><tr><td align="center" valign="middle" >1</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >2</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >3</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >0 or 1</td></tr><tr><td align="center" valign="middle" >4</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >4</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" ></td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >0, 1 or 2</td></tr><tr><td align="center" valign="middle" >5</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >7</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" ></td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >1, or 2</td></tr><tr><td align="center" valign="middle" >6</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >10</td><td align="center" valign="middle" >9</td><td align="center" valign="middle" >6</td><td align="center" valign="middle" >1</td><td align="center" valign="middle" >12</td><td align="center" valign="middle" >1 or 2</td></tr></tbody></table></table-wrap><p>3) Tables 5-7 are obtained recursively from Equation (7) using <xref ref-type="table" rid="table4">Table 4</xref> as the first stage.</p><p>Since the final stage was fixed, we obtain <xref ref-type="table" rid="table4">Table 4</xref> from the first and last column of <xref ref-type="table" rid="table3">Table 3</xref> above. The optimal value X 4 ∗ correspond to the values in the column of S<sub>4</sub>.</p><p>Applying the formula in Equation (7) and using <xref ref-type="table" rid="table4">Table 4</xref> as a starting point, we obtain Tables 5-7 below. See Appendices 1-3 for the computation of these Tables respectively.</p><p>In <xref ref-type="table" rid="table8">Table 8</xref>, we calculate the optimal course allocations starting from <xref ref-type="table" rid="table7">Table 7</xref>. This is calculated by taking the various combinations from the last value of state (S<sub>1</sub>) as 6 and X 1 ∗ = 1. And we do the needed computations as shown in <xref ref-type="table" rid="table8">Table 8</xref> to obtain the optimal course allocation.</p><table-wrap id="table8" ><label><xref ref-type="table" rid="table8">Table 8</xref></label><caption><title> Optimal allocations</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >S<sub>1</sub> = 6; X 1 ∗ = 1</th><th align="center" valign="middle" >2) S<sub>1</sub> = 6; X 1 ∗ = 2</th></tr></thead><tr><td align="center" valign="middle" >S<sub>2</sub> = 6 ? 1 = 5; X 2 ∗ = 1</td><td align="center" valign="middle" >S<sub>2</sub> = 6 ? 2 = 4; X 2 ∗ = 1</td></tr><tr><td align="center" valign="middle" >S<sub>3</sub> = 5 ? 1 = 4; X 3 ∗ = 1</td><td align="center" valign="middle" >S<sub>3</sub> = 4 ? 1 = 3; X 3 ∗ = 1</td></tr><tr><td align="center" valign="middle" >S<sub>4</sub> = 4 ? 1 = 3; X 4 ∗ = 3</td><td align="center" valign="middle" >I<sub>4</sub> = 3 ? 1 = 2; X 4 ∗ = 2</td></tr><tr><td align="center" valign="middle" >(1, 1, 1, 3)</td><td align="center" valign="middle" >(2, 1, 1, 2)</td></tr><tr><td align="center" valign="middle" >3) S<sub>1</sub> = 6; X 1 ∗ = 1</td><td align="center" valign="middle" >5) S<sub>1</sub> = 6; X 1 ∗ = 2</td></tr><tr><td align="center" valign="middle" >S<sub>2</sub> = 6 ? 1 = 5; X 2 ∗ = 2</td><td align="center" valign="middle" >S<sub>2</sub> = 6 ? 2 = 4; X 2 ∗ = 2</td></tr><tr><td align="center" valign="middle" >S<sub>3</sub> = 5 ? 2 = 3; X 3 ∗ = 1</td><td align="center" valign="middle" >I<sub>3</sub> = 4 ? 2 = 2; X 3 ∗ = 1</td></tr><tr><td align="center" valign="middle" >S<sub>4</sub> = 3 ? 1 = 2; X 4 ∗ = 2</td><td align="center" valign="middle" >S<sub>4</sub> = 2 ? 1 = 1; X 4 ∗ = 1</td></tr><tr><td align="center" valign="middle" >(1, 2, 1, 2)</td><td align="center" valign="middle" >(2, 2, 1, 1)</td></tr><tr><td align="center" valign="middle" >4) S<sub>1</sub> = 6; X 1 ∗ = 1</td><td align="center" valign="middle" ></td></tr><tr><td align="center" valign="middle" >S<sub>2</sub> = 6 ? 1 = 5; X 2 ∗ = 3</td><td align="center" valign="middle" ></td></tr><tr><td align="center" valign="middle" >S<sub>3</sub> = 5 ? 3 = 2; X 3 ∗ = 1</td><td align="center" valign="middle" ></td></tr><tr><td align="center" valign="middle" >S<sub>4</sub> = 2 ? 1 = 1; X 4 ∗ = 1</td><td align="center" valign="middle" ></td></tr><tr><td align="center" valign="middle" >(1, 3, 1, 1)</td><td align="center" valign="middle" ></td></tr></tbody></table></table-wrap><p>Thus, the allocation of courses to lectures according to <xref ref-type="table" rid="table8">Table 8</xref> above will yield estimated optimum credit hours of 12 for each lecturer per semester. See the last value in f 1 ∗ of <xref ref-type="table" rid="table7">Table 7</xref>.</p></sec></sec><sec id="s4"><title>4. Interpretation of Results</title><p>Calculations in Section 3.2 are presented in Appendices 1-3. Hence, the optimal allocation policy of (1, 1, 1, 3) in <xref ref-type="table" rid="table8">Table 8</xref> means the allocation of one Statistics course to each lecturer in each cadre in second, third, fourth year and three courses to each cadre of lecturer in the fifth (final) year will yield optimal credit hour of 12 for each lecturer per semester.</p><p>(2, 1, 1, 2) in <xref ref-type="table" rid="table8">Table 8</xref> means the allocation of two Statistics courses to each lecturer in each cadre in second year, one course each in third and fourth year and two courses to each cadre of lecturer in the fifth (final) year will yield optimal credit hour of 12 for each lecturer per semester.</p><p>(1, 2, 1, 2) in <xref ref-type="table" rid="table8">Table 8</xref> means the allocation of one Statistics course to each lecturer in each cadre in second year, two courses each to each lecturer in third year, one course to each lecturer in fourth year and two courses to each cadre of lecturer in the fifth (final) year will yield optimal credit hour of 12 for each lecturer per semester.</p><p>(1, 3, 1, 1) in <xref ref-type="table" rid="table8">Table 8</xref> means the allocation of one statistics course to each lecturer in each cadre in second year, three courses each to each lecturer in third year, one course to each lecturer in fourth year and one course to each lecturer in each cadre in the fifth (final) year will yield optimal credit hour of 12 for each lecturer per semester.</p><p>(2, 2, 1, 1) in <xref ref-type="table" rid="table8">Table 8</xref> means the allocation of two Statistics courses to each lecturer in each cadre in second and third year and allocation of one fourth and fifth year courses to each lecturer in each cadre will yield optimal credit hour of 12 for each lecturer per semester.</p></sec><sec id="s5"><title>5. Conclusion</title><p>In this paper, dynamic programming was applied in allocating courses to lecturers in the Nigerian universities, using the Department of Statistics, Federal University of Technology, Owerri, Imo State as a case study. An optimal 12 credit hours was obtained for each lecturer in each cadre for the semester. Among all the optimal allocations policies presented in section 4, the best optimal allocation is achieved at the point (1, 2, 1, 2). This means that each lecturer should be assigned at most one course in both harmattan and rain semester of second year and one course in harmattan semester of fourth year when fewer number of Statistics courses are offered due to introduction of Statistics courses to second year students and also due to six-month industrial training by the fourth year students in the rain semester. On the other hand, lecturers should be allocated two courses each in the third and fifth year rain and harmattan semesters, when all the students are back for their normal academic session. Allocation of courses in this order will yield an optimal credit hour of 12 per lecturer per semester. This is highly reasonable as opposed to the use of rule of thumb which overload some lecturers with more courses and under load others with fewer courses.</p></sec><sec id="s6"><title>Cite this paper</title><p>Amuji, H.O., Ugwuanyim, G.U., Ogbonna, C.J., Iwu, H.C. and Okechukwu, B.N. (2017) The Usefulness of Dynamic Programming in Course Allocation in the Nigerian Universities. Open Journal of Optimization, 6, 176-186. https://doi.org/10.4236/ojop.2017.64012</p></sec><sec id="s7"><title>Appendices</title><p>Computations of Tables 5-7</p><p>In these appendices, we show how Tables 5-7 were computed from Equation (7). The values of current state and stages were substituted while the previous stage forms the starting point in the current stage. This recursive relationship continues until the final stage is obtained.</p><p>Appendix 1. Computation of Stage 2 presented in <xref ref-type="table" rid="table5">Table 5</xref>.</p><p>Appendix 2. Computation of Stage 3 presented in <xref ref-type="table" rid="table6">Table 6</xref>.</p><p>Appendix 3. Computation of Stage 4 presented in <xref ref-type="table" rid="table7">Table 7</xref>.</p></sec></body><back><ref-list><title>References</title><ref id="scirp.81511-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Rao, S.S. (2009) Engineering Optimization: Theory and Practice. 4th Edition, John Wiley &amp; Sons, Inc., Canada.</mixed-citation></ref><ref id="scirp.81511-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Esogbue, A.O. and Marks, B.R. (1974) Non-Serial Dynamic Programming: A Survey. Journal of the Operational Research Society, 25, 253-265.</mixed-citation></ref><ref id="scirp.81511-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Adelson, R.M., Norman, J.M. and Laporte, G. (1976) A Dynamic Programming Formulation with Diverse Applications. Journal of the Operational Research Society, 27, 119-121.</mixed-citation></ref><ref id="scirp.81511-ref4"><label>4</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Smith</surname><given-names> P. </given-names></name>,<etal>et al</etal>. (<year>1989</year>)<article-title>Dynamic Programming in Action</article-title><source> Journal of the Operational Research Society</source><volume> 40</volume>,<fpage> 779</fpage>-<lpage>787</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.81511-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Wong, P.J. (1970) A New Decomposition Procedure for Dynamic Programming. Operations Research, 18, 119-131. https://doi.org/10.1287/opre.18.1.119</mixed-citation></ref><ref id="scirp.81511-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Howard, R.A. (1966) Dynamic Programming. Operations Research, 12, 317-348.https://doi.org/10.1287/mnsc.12.5.317</mixed-citation></ref><ref id="scirp.81511-ref7"><label>7</label><mixed-citation publication-type="journal" xlink:type="simple"><name name-style="western"><surname>Moores</surname><given-names> B. </given-names></name>,<etal>et al</etal>. (<year>1986</year>)<article-title>Dynamic Programming in Transformer Design</article-title><source> Journal of the Operational Research Society</source><volume> 37</volume>,<fpage> 967</fpage>-<lpage>969</lpage>.<pub-id pub-id-type="doi"></pub-id></mixed-citation></ref><ref id="scirp.81511-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Jensen, R.E. (1969) A Dynamic Programming Algorithm for Cluster Analysis. Operations Research, 17, 1034-1057. https://doi.org/10.1287/opre.17.6.1034</mixed-citation></ref><ref id="scirp.81511-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Nemhauser, G.L. and Ullmann, Z. (1969) Discrete Dynamic Programming and Capital Allocation. Operations Research, 15, 494-505. https://doi.org/10.1287/mnsc.15.9.494</mixed-citation></ref></ref-list></back></article>