Application of Markov Chains
Preface:
For a masters project, come up with another example which interests you and has been approved by your adviser; for example, a masters teaching option student might consider an educational question and collect data which can generate a transition matrix.
Example: Computer programming languages
Since the sale of the first commercial computer, UNIVAC I, in 1951, the programming languages available for software development have gone through many generations of change, just as hardware has. Programmers in the early 1950s had only assembly language available. While allowing full access to hardware, assembly language is tedious, highly detailed, and offers no portability to other systems. In the late 1950s, IBM sponsored the language FORTRAN to assist scientific efforts, while the US Navy produced the COBOL language to unify their considerable record keeping operations. Both had compilers for many different platforms, giving some portability. In the 1960s, C evolved from Bell Labs, offering high portability as well as both higher level and lower level capability. It also complemented the increasingly popular UNIX operating system, much of which is written in C.
Despite these improvements, however, programmers did not show a substantial increase in productivity. Studies in the 1960s found commercial COBOL programmers averaging only 7 lines per day of tested, runnable code. Ten years later, the figure was not much higher, despite tools such as debuggers, text editors and better compilers.
Software Information
For each of the languages listed below, briefly discuss the capabilities of it with regard to
| portability | objects |
| graphical interfaces | functions |
The languages we begin considering are
| COBOL | Fortran |
| C | C++ |
| Visual Basic | JAVA |
If you feel another language should be considered, please do so! This is your model!
Data Collection
The student conducting the project should interview at least 30 computer science students and/or professionals. From each, find out what language they now program in and what language they see themselves moving to next. In the latter case, find out what features are most attractive.
Additionally, using the Help Wanted section from the Sunday paper of a city, or a comparable publication, survey all software jobs and develop a distribution showing the mix of jobs currently available with regard to languages.
Modeling
You should now be able to set up two mathematical structures, a distribution vector describing the current state of programming languages, and a transition matrix. Keep in mind that each column must have nonegative entries adding up to one, and the distribution vector should also have this property. Clearly identify in your report which states correspond to which languages.
In the world of computer software development, 5 years is an eternity. Use your model to predict the distribution of languages among programmers 5 years from now. Compare this to the 'steady state' distribution for your transition matrix.
Recommendation
Based upon your work, what suggestions would you make to a person entering the software development job market if they wish their career to get off to a solid start?
Key words: Markov process, Markov chain, steady state vector, transition matrix, eigenvalues.
Reference(s): An excellent video lecture from Gilbert Strang at MIT can be found here. It is also recommended to view all of the videos from Dr. Strang leading up to eigenvalues and eigenvectors.