CAREER PLAN TRACKER

A Project

Presented to the faculty of the Department of Compute Science

California State University, Sacramento

Submitted in partial satisfaction of

the requirements for the degree of

MASTER OF SCIENCE in

Computer Science by

Aditya Hiran Pilla

SPRING

2014

© 2014

Aditya Hiran Pilla

ALL RIGHTS RESERVED ii

CAREER PLAN TRACKER

A Project by

Aditya Hiran Pilla

Approved by:

__________________________________, Committee Chair

V. Scott Gordon, Ph.D.

__________________________________, Second Reader

Bob Buckley, MS.

__________________________________, Third Reader

Cici Mattiuzi

____________________________

Date iii

Student: Aditya Hiran Pilla

I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the project.

________ __________________, Graduate Coordinator

Nik rouz Faroughi, Ph.D.

Department of Computer Science

___________________

Date iv

Abstract of

CAREER PLAN TRACKER by

Aditya Hiran Pilla

The prime objective of the Career Plan Tracker is to build a career plan that recommends career tasks given in the career-counseling framework called "The Serious Job Seeker". A unique career plan is generated for each individual user based on the individual user's skill set, personality type and background.

A prominent part of the career plan includes recommendations of career task times for each recommended career task. Moreover, the Career Plan Tracker takes into account the various time restrictions the user may have in his life and generates a career plan for a schedule that is shorter than the recommended ideal schedule. For instance, the ideal schedule to complete the career acquisition process may require three to six months. Nevertheless, if a user has only two months, the user can still have a career plan built for just two months without losing much of the user’s chances in succeeding through the career acquisition process. The Career Plan Tracker categorizes this problem as a multi-objective optimization problem and uses a meta-heuristic algorithm called Simulated Annealing to solve it. v

The Career Plan Tracker is an android application developed for android devices. The backend of the application is hosted on a cloud service called Parse. With the permission of the instructors, this application is developed with the intent of publishing it in the Google play store.

_______________________, Committee Chair

V. Scott Gordon, Ph.D.

_______________________

Date vi

ACKNOWLEDGEMENTS

I am thankful to my parents and their guidance in every aspect of my life. The formulation of the project idea has been influenced greatly from their ideology. I would also like to thank my friends who have helped implement the features I wished to include in my application. Last but not the least, I am very grateful to my project advisors who have constantly been my motivation in the completion of the project. vii

TABLE OF CONTENTS

Page

Acknowledgements ........................................................................................................................ vii

List of Tables .................................................................................................................................. xi

List of Figures ................................................................................................................................ xii

Chapter

1.

INTRODUCTION ....................................................................................................................... 1

1.1 Background ........................................................................................................................... 1

1.2 Scope ..................................................................................................................................... 2

1.3 Disclaimer ............................................................................................................................. 3

1.4 Technologies/Tools Used ...................................................................................................... 3

2.

PROBLEM SPECIFICATION .................................................................................................... 5

2.1 Building the Schedule Recommendation .............................................................................. 5

2.1.1 Philosophy of the Problem ..................................................................................................... 5

2.1.2 Problem Definition .................................................................................................................. 5

2.1.3 Properties of a Career Acquisition Process .......................................................................... 6

2.1.4 Properties of an Ideal Schedule ............................................................................................. 6

2.1.5 Understanding the Personality Type of the Job Seekers .................................................... 7

2.1.6 Understanding the Skills/Options of the Job Seeker that Speeds up the Career

Acquisition Process ............................................................................................................... 9

2.1.7 Multiple Objectives for Building an Optimized Schedule Recommendation for the

Career acquisition process .................................................................................................. 10

2.1.8 Algorithm of Choice: Simulated Annealing ...................................................................... 11

viii

3. SIMULATED ANNEALING .................................................................................................... 13

3.1 Pseudo Code........................................................................................................................ 14

3.2 Implementation ................................................................................................................... 14

3.2.1 Considerations for the Implementation of the Algorithm ................................................ 15

3.2.2 Encoding used for the Simulated Annealing ..................................................................... 15

3.2.3 Initial configuration at the beginning of the Algorithm ................................................... 15

3.2.4 Acceptance Probability ......................................................................................................... 15

3.2.5 Cost function .......................................................................................................................... 17

3.2.6 Neighborhood function ......................................................................................................... 20

3.3 Fitting into the Android Application ................................................................................... 21

4. SETTING UP THE DEVELOPMENT ENVIRONMENT ....................................................... 23

4.1 Setting up the Android development environment ............................................................. 23

4.2 Configuring Androidplot .................................................................................................... 23

4.3 Configuring the Parse Cloud ............................................................................................... 24

4.4 Android Application Setup ................................................................................................. 25

5. USE CASE REPORTS .............................................................................................................. 27

5.1 Use Case Diagram ............................................................................................................... 27

5.2 User Flows .......................................................................................................................... 28

5.2.1 User ......................................................................................................................................... 28

5.2.2 Career Plan Tracker .............................................................................................................. 29

6. DATABASE REQUIREMENTS AND MODELING .............................................................. 30

6.1 Database Requirements ....................................................................................................... 30

6.2 Data Modeling .................................................................................................................... 31

ix

6.3 ER Diagram for the database on the Parse Cloud ............................................................... 32

6.4 ER Diagram for the Local Database stored on the Android Device ................................... 33

7. RESULTS AND ANALYSIS .................................................................................................... 34

7.1 Case study: Computing the Schedule Recommendation for a Sample Job seeker ............. 34

7.1.1 The Career Plan Tracker’s way of Building a Schedule Recommendation

.................. 34

7.1.2 Output ..................................................................................................................................... 38

7.1.3 Comparative Analysis and Conclusion .............................................................................. 38

8. FUTURE WORK ....................................................................................................................... 42

APPENDIX.................................................................................................................................... 43

Code for Simulated Annealing .................................................................................................. 43

References...................................................................................................................................... 50

x

Tables

LIST OF TABLES

Page

1. Input #1 - Jobseeker's Persona....................................................................................................37

2. Input #2 - A fixed constant Ideal Schedule.................................................................................38

3. Start solution for Simulated Annealing.......................................................................................38

4. Input #3.a. - History data of successful jobseekers having writing skills...................................39

5. Input #3.b. - History data of successful jobseekers having reading skills..................................39

6. Input #3.c - History data of successful jobseekers having socializing skills..............................40

7. Input #4 - History data of successful jobseekers having Artistic personality type.....................40

8. Initial configuration of the Simulated Annealing algorithm.......................................................40

9. Output Schedule Recommendation.............................................................................................41 xi

LIST OF FIGURES

Figures Page

1. Overview of the interaction between Android and the Parse Cloud.............................................5

2. Use-case diagram for the Career Plan Tracker...........................................................................30

3. ER diagram for the server-side data............................................................................................35

4. ER diagram for the client-side data.............................................................................................36

5. Comparison of profits for the two Career Schedules..................................................................42

6. Task-wise comparison between the two Career Schedules........................................................44

xii

1

Chapter 1

INTRODUCTION

1.1 Background

The Career Plan Tracker tries to mimic a real-time career counselor and provides the right guidance required in the job search process.

It is a portable tool designed and developed to fit the needs of a job seeker. To achieve this specification, it is developed as a mobile application on the Android platform. It is important to remove the restrictions imposed by space to cater to the spontaneous needs of a job seeker. The optimality intended to be achieved through this mobile application remains the prime focus in its development.

The recommendation system built into the Career Plan Tracker helps in generating personalized schedules appropriate for each user. The recommendations are primarily based on the user’s profile and the history of all the users who have similar profiles to the user in the present context.

The Career Plan Tracker in its attempt to bridge the gap between career counseling and the job seekers tries to recommend schedules according to the time requirements of the job seeker. For example, a student who is about to graduate in a few days may not have all the time required for an ideal job search process. In a common scenario like this, the Career Plan Tracker can be quite helpful. The application understands the pressure and complication of the scenario and generates an optimal schedule recommendation to minimize the loss of a shortened career acquisition process. Such a recommendation can be motivating for any serious job seeker to pursue the job search more diligently.

2

1.2 Scope

The model developed by the Career Plan Tracker to mimic a real time career counselor has been an experimental attempt to gain an insight into the career acquisition process and the factors that play an important role in building an effective schedule recommendation for the career acquisition process. As a part of the enhancement, it also aims at providing extensive motivation to the job seekers as they progress along their career acquisition process.

The recommendation system of the Career Plan Tracker looks at this as an optimization problem to compress the job search schedules to fit the time requirements without compromising much on the gains of the ideal career acquisition process. This could be achieved only when the generated schedule recommends a tight schedule that can motivate the job seeker closely. Presently, it is developed to have its optimization concentrated upon six factors namely,

1.

Desired time: It is defined as the time that the job seeker intends to complete the whole career acquisition process.

2.

Motivation: The schedule depends on the level of motivation/desperation in the job seeker. This factor usually depends on some kind of a driving force from the job seeker’s background. For example, financial problems in a family or a relationship can lead to an intense motivation in the job seeker. Other examples include job seekers having babies or college age children back at home. The recommendation provided by the Career Plan

Tracker should be complementing any such a scenario.

3.

Personality type: The time duration for completing the career acquisition process may also depend on the personality type of the job seeker. This factor is taken into consideration by storing the time durations of the tasks involved in the career acquisition process. This history of successful job seekers is mapped with the personality types of the

3 job seekers. The personality types considered in this factor springs from a well-known categorization called the Holland Personality Types.

4.

Skills: Some skills have been identified which aid the pace of the career acquisition process. The recommendation system understands this and keeps track of the time durations of the career acquisition process for the job seekers possessing these skills in the past. This is done in the exact similar way as it was done for the personality types discussed above.

5.

Criticality of the career task: All the tasks of the career acquisition process aren’t weighted the same. Some tasks are quite a lot more important and time intensive than the others. For example, the task of preparing a resume is more important for the career acquisition process to succeed. So, this aspect of the career guidance is taken care of while building a recommended schedule.

6.

Ideal Schedule: The preferred schedule should be close to the ideal schedule after taking the other factors into consideration. Having this factor play its part in building the recommended schedule, the probability of success is expected to be high. As this factor is a direct reflection from the advice of the career counselors, it is important to include it as an objective to be met while building the optimized schedule.

1.3 Disclaimer

It is not intended to be fully comprehensive to replace an existing career counselor.

1.4 Technologies/Tools Used

1.

Android platform (ADT bundle) : For developing a mobile application that can be used by the job seekers.

2.

Parse cloud : This provides backend as a service with a web data interface.

4

3.

Programming language : Java

4.

Scripting language for the Android GUI : XML

5.

Query language

: Query language provided by the Parse cloud’s SDK

6.

Algorithms : Simulated Annealing, Knuth shuffle

7.

External libraries : Androidplot for drawing graphs on the Android

8.

IDE : Eclipse

9.

UML editor : Violet

10.

Drawing tool for the ER-diagram : EDraw all in one drawing software

11.

Content for career counseling : The Serious Job Seeker, an ebook.

The database for the Android application is stored on the Parse Cloud. In order, to establish the connection between the Android application and the Parse Cloud and the Android application, a few configuration steps are required which are discussed in a later chapter. The overview of this interaction is illustrated in the figure [6] below.

Figure 1 Overview of the interaction between Android and the Parse Cloud

5

Chapter 2

PROBLEM SPECIFICATION

2.1 Building the Schedule Recommendation

This section encapsulates the main idea behind the Career Plan Tracker. Every job seeker who intends to complete the career acquisition process of finding a job, within a time frame that is shorter than the ideal recommendation, is required to make some clever decisions in order to minimize the losses incurred due to the availability of a shorter time frame. The Career Plan

Tracker eliminates this stressful step for the job seeker and builds a wise schedule recommendation based on a few promising parameters. Hence, the jobseeker will be left with the motivation of completing the career acquisition process with the schedule recommended by the

Career Plan Tracker.

2.1.1 Philosophy of the Problem

Understanding the background of the job seeker helps in generating a tight schedule that keeps the job seeker motivated and active throughout the completion of the career acquisition process. It is essential to model the close dependence between the background of the job seeker and the schedule recommendation so that there will be a continuous drive for the job seeker to work towards the end career goals. In this complex process of building personalized schedule recommendations for job seekers, it is important to list the main objectives required to achieve optimization.

2.1.2 Problem Definition

The ideal schedule of a successful career acquisition process to find a job has to be compressed to fit the shorter available time of the job seeker in an optimized way to fulfill multiple objectives.

6

2.1.3 Properties of a Career Acquisition Process

The career acquisition process essentially includes the popular set of steps [2] that the career counselors usually recommend for finding a job. The Career Plan Tracker is developed based on the career acquisition process defined in a well-established book called the “The Serious

Jobseeker” [2] . Having derived its content, the set of steps are as follows:

Step 1: Getting Organized

Step 2: Awareness

Step 3: Self-Assessment

Step 4: Job Search Strategy

Step 5: Resumes and Portfolios

Step 6: Interview Preparation

Out of these steps, not all of them are equally weighted. In order to distinguish between them, some of them are considered as critical steps. These include the two steps 4 and 5 from the list mentioned above.

2.1.4 Properties of an Ideal Schedule

Ideally, the steps listed above as a part of the career acquisition process [2] will take three to six months. Considering career acquisition process to be a full time serious job, three months would be 480 hours of work. Depending on the importance of each step of the career acquisition process, the total time of three months (i.e. 480 hours) should be well distributed among the career steps. This results in an ideal schedule for the career acquisition process which will be used

7 as one of the parameters to compute the schedule recommendation. An example of ideal schedule is mentioned below:

Step 1: Getting Organized

Step 2: Awareness

Step 3: Self-Assessment

Step 4: Job Search Strategy

Step 5: Resumes and Portfolios

Step 6: Interview Preparation

-

-

-

-

-

-

20 hours

20 hours

40 hours

200 hours

120 hours

80 hours

2.1.5 Understanding the Personality Type of the Jobseekers

The Career Plan Tracker categorizes jobseekers based on their Holland personality type using the

Holland personality type test. The different Holland personality types [2] are listed below as quoted in “The Serious Jobseeker” [2] :

1.

Artistic

 enjoy working in unstructured situations using imagination and creativity

 tend to dislike having to follow rules or set procedures

 enjoy doing things that requiring a sense of design and an appreciation of aesthetics

 these people are frequently innovators who tend to "think way outside the box"

8

2.

Realistic

 enjoy "hands-on" work using tools, equipment, and machinery

 like working outdoors or with plants or animals

 enjoy sports or outdoor activities like rock climbing, biking, hiking or back packing

 don't like doing a lot of paperwork

 frequently work on teams to accomplish tasks or complete projects

3.

Conventional

 prefer work that is detailed and orderly, structured and routine

 enjoy work that involves data and information, rather than people or things

 likes structure with rules that are known

 dislikes having to be creative

 jobs in this area involve orderly processes and record keeping

 these people are reliable, efficient, conforming, and conscientious individuals

4.

Enterprising

 skilled at persuading, leading, performing, influencing or managing others

 able to work to meet organizational goals or economic gain

 highly money motivated

 work requires energy and ambition, and a fair amount of self-confidence

 jobs are usually business related and often involve sales and promotion

 entrepreneurial, energetic and optimistic; establish rapport easily - sociable and talkative

9

 these people are focused on competing and getting ahead

5.

Investigative

 like to observe, learn, analyze, evaluate, and solve problems

 prefer working with information and data, rather than with people or things

 enjoy strategy games (chess, checkers etc.) or computer games

 frequently skilled in math and/ or science

 may play a musical instrument - (music has a math component)

 these people tend to be analytical and may appear quiet and pensive

6.

Social

 like to help people - prefer teaching, communicating, and serving others

 skilled with words - able to share ideas effectively to enlighten or inform others

 able to engage people at a personal and emotional levels

 can work with minimal structure or supervision

 tend not to be significantly money motivated

 these people are altruistic, sociable, friendly and socially responsible

2.1.6 Understanding the Skills/Options of the Job Seeker that Speeds up the Career

Acquisition Process

These include skills and a few options related to the background of the job seekers. They are listed as below:

1.

Writing skills

10

2.

Reading skills

3.

Speaking skills

4.

Presentation skills

5.

Analysis skills

6.

Research skills

7.

Having a huge network of friends or acquaintances

8.

Being social

9.

Being desperate for jobs

10.

Being presentable/expressible

11.

Being organized

12.

Being professional

Job seekers having any of the above skills/options may end up completing the career acquisition process much faster than anticipated. Hence it is important to take this factor into consideration while building a schedule recommendation.

2.1.7 Multiple Objectives for Building an Optimized Schedule Recommendation for the

Career acquisition process

The different objectives include the following:

1.

Ideal schedule factor: The schedule recommendation should closely resemble the ideal schedule.

2.

Criticality of career tasks factor: The more important career steps should have more emphasis and time allotted in the schedule recommendation.

11

3.

Holland personality type factor: The schedule recommendation should closely resemble the schedule of a successful job seeker in the past having a similar Holland personality type.

4.

Career skills/options factor: The schedule recommendation should closely resemble the schedule of a successful job seeker in the past having a similar set of career skills and options.

5.

Motivation/desperation factor: The job seeker’s dedication also depends on the level of desperation for the job. Certain family/relationship problems can raise the level of desperation in the job seeker. In this scenario, the schedule recommendation intends to retain the job seeker’s motivation by recommending a slightly tougher schedule (i.e. a faster paced schedule).

2.1.8 Algorithm of Choice: Simulated Annealing

The Career Plan Tracker uses a simple implementation of simulated annealing to solve this as a multi-objective optimization problem. A detailed explanation of the algorithm and its implementation is given in the next chapter. The following reasons [5] help in the selection of simulated annealing as the algorithm of choice.

1.

Huge solution space: It is hard to use a brute force technique on the huge solution space of the problem.

2.

No relationship between sub problems: The problem cannot be divided into sub problems as in a divide and conquer approach.

3.

Not an incremental problem: An efficient algorithm cannot be written using backtracking or branch and bound to solve this problem very quickly.

12

4.

Not a dynamic programming problem: Difficult to see it as a dynamic programming problem.

5.

Can establish a structure between the solutions: This is useful to determine if hill climbing approaches can be used as two neighboring solutions can have a relationship between them.

6.

Exact solution is not needed: A fairly decent solution would suffice to build a schedule recommendation as there is no way of determining for sure on what works best for the job seekers.

7.

Simpler to implement: The simulated annealing is a much simpler but powerful algorithm to be used.

13

Chapter 3

SIMULATED ANNEALING

Simulated Annealing is a probabilistic method used to find a global maximum on the cost functions of a particular solution space. A solution space consists of a set of all probable solutions to the problem. Usually, this solution space is very large making it impossible to solve the problem in reasonable time using deterministic algorithms. Under a scenario like this, Simulated

Annealing is used.

Simulated annealing is inspired from the commonly used annealing process in metallurgy and material sciences. During this process, metals are heated to high temperatures and are allowed to cool down gradually such that the resulting metal becomes more usable in terms of the metal’s physical properties like ductility. Different cooling rates are used for cooling different metals.

Similar to the annealing process described above, simulated annealing is used with an initial high temperature and a good cooling rate to achieve the desired results. Within the solution space, each solution is located in the neighborhood of a few other solutions. The algorithm works by picking a random start solution from the solution space followed by an iterative annealing process.

During each of these iterations, the algorithm picks the next solution from the neighbors of the previously picked solution. However, this picking up of a solution has a probability associated with it called the acceptance probability. This probability in turn depends on the difference in the costs between the solution picked prior to the current iteration and the solution picked from the currently available neighbors (i.e. in the current iteration). Moreover, the acceptance probability equals one whenever the neighbor solution picked is better than the previously picked solution in terms of the cost which is discussed later in the chapter. Also, the acceptance probability depends on the current temperature of the iteration. When the temperature is high, the probability of

14 accepting the neighbors is high and as the temperature reduces, this probability decreases. Finally, when the temperature reaches a minimum stable temperature, the annealing process stops and the current solution at the end of this process is usually a good enough solution for the problem.

For the multi-objective optimization problem discussed in the previous chapter, one probable job seeker’s schedule in the career acquisition process is treated as one solution in the solution space.

Simulated Annealing is then used to find the global maximum which represents the best possible schedule for the jobseeker’s career acquisition process.

3.1 Pseudo Code

Step 1: initialize the starting temperature and the cooling rate

Step 2: pick a start solution

Step 3: make current solution equal to start solution

Step 4: while ( temperature > 1 )

Step 5: get neighbor solution from the current solution

Step 6: if (acceptance probability > random value) then

Step 7: make current solution equal to the neighbor solution

Step 8: else reject the neighbor solution.

Step 9: reduce the temperature according to the cooling rate

Step 10: repeat from Step 4

3.2 Implementation

The specific implementation to solve the problem under consideration is attached to the appendix of the document. However, the important details pertaining to the major components of the algorithm are mentioned in this section.

15

3.2.1 Considerations for the Implementation of the Algorithm

1.

It is important to select cheaper functions (cost and neighborhood functions) in the implementation of this algorithm in order to satisfy the timing requirements of the Career

Plan Tracker.

2.

Clamping: Negative time recommendations in the schedule recommendation should be avoided at the time of choosing the neighbor. This is accomplished by making the acceptance probability zero in cases of negative time recommendations and is called clamping the solution space.

3.2.2 Encoding used for the Simulated Annealing

Decimal encoding is used to represent the career task times in hours. As the career steps are fixed and predetermined, array of type ‘int’ is used to represent the task times in the order of the career steps listed earlier. For example, the career task time for the “Getting organized” step is always stored in the 0 th index of the array as it is the first step of the career acquisition process..

3.2.3 Initial configuration at the beginning of the Algorithm

Start temperature = 1,000,000

Cooling rate = 0.99999

Start solution = ideal schedule of the career acquisition process

3.2.4 Acceptance Probability

The acceptance probability determines whether to accept or reject a neighbor during the annealing process.

If the new energy i.e. the energy of the neighbor is better than the energy of the current solution, then the acceptance probability is 1. This means that the neighbor is definitely accepted. But if the

16 new energy isn’t better than the energy of the current solution, then the acceptance probability [12] is computed as e (newEnergy - energy)/T . This means that during the earlier temperatures of the annealing process, the probability of accepting a neighbor even if its energy is worse than the energy of the current solution is high. As the temperature decreases, this probability reduces.

The acceptance probability is zero when the neighbor has at least one negative career task time included in the schedule recommendation. double acceptanceProbability(double energy, double newEnergy, double temperature) [12]

{

// If the new solution is better, accept it.

if ( newEnergy >= energy && newEnergy>0)

{

return 1.0;

}

// If the new solution is worse, calculate an acceptance probability.

If ( newEnergy > 0) return Math.exp((-energy + newEnergy) / temperature);

else return -1; // If the energy is negative reject the solution.

}

17

3.2.5 Cost function

The cost function determines the profit of the solution and is considered to represent the energy of the solution at the time of computing the acceptance probability. The equations used in the cost function are as follows:

Profit = (1 – vp) / (hpt + cs + c + is + m)

Where, vp = validating penalty hpt = Holland personality type factor cs = career skills/options factor c = criticality factor is = ideal schedule factor m = motivation factor

The validating penalty ensures that none of the career task times in the schedule recommendation are negative. It also ensures that none of the career tasks occupy a huge proportion of the career acquisition process. vp = 100 if there is at least one career task time that is negative in the schedule or if just one of the career tasks occupy a large proportion in the career acquisition process.

= 0 otherwise

The hpt factor ensures that the schedule recommendation is closely similar to the successful job seekers in the past who have possessed similar personality types as the current user. hpt = ∑ (careerTaskTimeForHpt i

/ totalIdealTime – careerTaskTimeForCurrentSolution / totalDesiredTime)

Where,

18 careerTaskTimeForHpt i

= The average time taken to complete the career task i by job seekers of the similar personality type as the current user. careerTaskTimeForCurrentSolution i

= The time recommendation of the career task i from the current solution of the annealing process. totalIdealTime = The ideal time to complete all the career tasks i.e. 480 hr. totalDesiredTime = Desired time of the current user.

The career skills/options factor ensures that the schedule recommendation is closely similar to the successful job seekers in the past who have possessed similar career skills/options as the current user. cs = ∑ (careerTaskTimeForCs i

/ totalIdealTime – careerTaskTimeForCurrentSolution i

/ totalDesiredTime)

Where, careerTaskTimeForCs i

= The average time taken to complete the career task i by job seekers having similar career skills/options as the current user. careerTaskTimeForCurrentSolution i

= The time recommendation of the career task i from the current solution of the annealing process. totalIdealTime = The ideal time to complete all the career tasks i.e. 480 hr. totalDesiredTime = Desired time of the current user.

The criticality factor makes sure that the lesser important tasks of the schedule are compressed first. In this way, the critical career tasks retain their important in the schedule recommendation. c = sum_critical_factors / sum_non_critical_factors

19 sum_critical_factors = ((careerTaskTimeForCurrentSolution

3

+

careerTaskTimeForCurrentSolution

4

)

/ totalDesiredTime) –

((idealCareerTaskTime

3 totalIdealTime)

+ idealCareerTaskTime

4

) sum_non_critical_factors = ((careerTaskTimeForCurrentSolution

0

+ careerTaskTimeForCurrentSolution

1 + careerTaskTimeForCurrentSolution

2

+ careerTaskTimeForCurrentSolution

5

)

/ totalDesiredTime) –

/

((idealCareerTaskTime

0

+ idealCareerTaskTime

1 + idealCareerTaskTime

2

+ idealCareerTaskTime

5

) / totalIdealTime)

The ideal schedule factor ensures that the schedule recommendation is close to the ideal schedules usually recommended by real time career counselors. is = ∑ (idealCareerTaskTime i

/ totalIdealTime – careerTaskTimeForCurrentSolution i

/ totalDesiredTime)

Where, idealCareerTaskTime i

= The ideal time to complete the career task. careerTaskTimeForCurrentSolution i

= The time recommendation of the career task i from the current solution of the annealing process. totalIdealTime = The ideal time to complete all the career tasks i.e. 480 hr. totalDesiredTime = Desired time of the current user.

The motivation factor ensures that all the non critical tasks are compressed more. m = - (sum_non_critical_factors)

20

} double getProfit(int [ ] currentSolution)

{ return

(1-getValidatingPenalty(currentSolution)) *

(getHPTFactor(currentSolution) + getCareerSkillsFactor(currentSolution) + getCriticalityFactor(currentSolution) + getIdealScheduleFactor(currentSolution) + getMotivationFactor(currentSolution))-1 ;

3.2.6 Neighborhood function

Randomly select two career tasks from the schedule recommendation. Add an hour to the first task and subtract an hour from the second task. For selecting the career tasks, a uniformly distributed random function (using the Knuth shuffle algorithm [9] ) is used. This has an asymptotic complexity of O(n).

21

} int[ ] getNeighbor(int [ ] current)

{

/* Generate the neighbor by randomly adding 1 to half of the elements and -1 to

the remaining half. If odd, one element remains unaltered.*/ int [ ] indices = new int[current.length]; int [ ] neighbor = new int[current.length]; for(int i=0;i<current.length;i++) indices[i]=i;

/* Knuth shuffle is used to have a uniformly distributed random arrangement of the

elements of the array. */ indices = shuffle(indices); [10]

//Neighbor function alters only two elements neighbor[indices[0]] = current[indices[0]]+1; neighbor[indices[1]] = current[indices[1]]-1; for(int k=2;k<indices.length;k++) neighbor[indices[k]] = current[indices[k]]; return neighbor;

3.3 Fitting into the Android Application

The simulated annealing approach is tested to consistently produce reliable schedules at the end of the annealing process. With the configuration used in this implementation, it takes about 1 min and 2 seconds of computer time to complete its execution. Hence, it will be a good choice to have it run as a background service in the Android device. This solves the problem of long execution time of the algorithm.

22

The advantage of running the algorithm as a background service is that the job seeker can be prompted to complete other important tasks like reading an introduction to the career acquisition process. By the time the algorithm completes its execution the job seeker will finish other tasks that are not dependent on the algorithm. In this way the job seeker needn’t wait till the algorithm completes its execution.

} void computeScheduleSA() [9]

{

Log.d("SA","Starting career plan builder service in the background");

Intent startServiceIntent = new Intent(getApplicationContext(),

CareerPlanBuilderService.class); startService(startServiceIntent);

23

Chapter 4

SETTING UP THE DEVELOPMENT ENVIRONMENT

This chapter intends to explain the steps required in the configuration of Android and the Parse cloud SDKs along with the development environment necessary for building Android mobile applications.

4.1 Setting up the Android development environment

The Android developer tools (ADT) bundle is available for download on the Android developers’ web page. This download included everything that is needed to get started with the Android application development. The ADT bundle [6] includes the following:

1.

Eclipse IDE with built in ADT plugin

2.

Android SDK tools

3.

Android Platform tools

4.

The latest Android platform

5.

The latest Android system image for the emulator

The Android SDK [6] provides you the API libraries and developer tools necessary to build, test, and debug apps for Android.

4.2 Configuring Androidplot

AndroidPlot [13] is an open source library for creating dynamic and static charts within your

Android application. It was designed from the ground up for the Android platform, is compatible with all versions of Android from 1.6 onward. It support the following types of charts:

1.

Line charts

2.

Bar charts

3.

Pie charts

24

4.

Step charts

5.

Scatter charts

To configure the development environment to use this library, it is required to download the latest version into the 'libs' folder of the Android project.

4.3 Configuring the Parse Cloud

For the Parse cloud to respond to the requests of the Career Plan Tracker, the following steps have to be accomplished. This configuration [7] enables the Career Plan Tracker to communicate with the Parse cloud and meet the data requirements. The steps [7] are as follows:

1.

Download the SDK’s zip file and extract its contents into the “libs” folder of the Android project. Make sure that the contents are directly put under the libs folder as a nested folder is not recognized here.

2.

From the Android Activity components used in the Android project, the communication with the Parse cloud can be established through the import of appropriate packages provided by Parse.

3.

Parse cloud generates a unique application id/client key for the Career Plan Tracker. This information is added to the “onCreate()” method of the startup activity of the Career Plan

Tracker. The code snippet is shown below as an example. public void onCreate()

{

}

Parse.initialize(this, "bmqQtsv0chgM0ydvcBzhm0ineK3VVJBGh6prcakp",

"49PPwrWYCSPgr2vvd66r3pGwIO2UfZV29uX3rooF");

25

4.

The Career Plan Tracker should request the following permissions: a) INTERNET b) ACCESS_NETWORK_STATE

To enable these permissions, the following lines of code should be added to the file

“AndroidManifest.xml”.

<uses-permission android:name = "android.permission.INTERNET" />

<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />

5.

For testing the SDK installation, the following code snippet can be used in the

“onCreate()” method of the startup activity. This code creates a new database object on the cloud which can be seen on the data browser of the Parse.

ParseObject testObject = new ParseObject("TestObject"); testObject.put("foo", "bar"); testObject.saveInBackground();

4.4 Android Application Setup

To study the specific problem specified in the earlier chapters, the Career Plan Tracker is developed. Career Plan Tracker is an Android application that stores the job seeker profiles on the cloud. It retrieves the relevant information needed for the computation of an optimal schedule that caters to the needs of the job seekers.

26

Once the ADT bundle is downloaded, Android projects can be directly created from the Eclipse

IDE. The options for creating a project lies in the File menu of the IDE. Creating an Android project commences the development of the Career Plan Tracker.

27

Chapter 5

USE CASE REPORTS

5.1

Use-case Diagram

The UML notation of the use-cases is illustrated in the diagram below. The next section gives more details in terms of the user flows within the Android application.

Figure 2 Use-case diagram for the Career Plan Tracker

28

5.2 User Flows

5.2.1 User

The user of the Career Plan Tracker will be a job seeker who intends to find a job.

Main Flow:

1.

Signs up/logs in by providing username and password.

2.

Selects the career skills/options which the user possesses.

3.

Takes the Holland personality test.

4.

Views the user’s profile page which displays a summary of the user’s personality type and career skills/options.

5.

Reads the introduction about the career acquisition process and the career tasks needed to be completed.

6.

Receives a schedule recommendation from the Career Plan Tracker to follow through the career acquisition process.

7.

Reads information from the ebook, “Serious Job Seeker” when prompted by the Career

Plan Tracker.

8.

Completes every career task given in the schedule.

9.

Gives appropriate feedback when prompted by the app.

10.

Clicks on the “done” button when the user achieves the goal.

Exceptional Flow:

1.

Incorrect login credentials provide error message for the user.

2.

At the time of reading information from the ebook, “Serious Job Seeker”, if the website is down, the respective error is displayed as it is.

29

3.

Clicks the “done” button before achieving the goal. In this case the user can click back the “I am not done” button to resume.

5.2.2 Career Plan Tracker

Main Flow:

1.

When the user completes the Holland personality test, the data required for running the algorithm is retrieved from the Parse cloud and is stored in a local database.

2.

Once the local database is populated, the simulated annealing algorithm is executed on the background thread.

3.

Finally, when the user completes the career acquisition process i.e. when the “done” button is hit, the user data gets stored in the cloud database.

Exceptional Flow:

1.

When there is no internet connectivity, the app stops working as it cannot establish a communication with the Parse cloud.

30

Chapter 6

DATABASE REQUIREMENTS AND MODELING

6.1 Database Requirements

The data used in the Career Plan Tracker is modelled and stored on the server (i.e. the Parse

Cloud) and the data needed locally for building an optimized schedule recommendation is stored on the user’s Android device.

The data requirements on the server side are specified below:

1.

The details and the authentication credentials of the users have to be stored.

2.

The list of different Holland personality types has to be stored.

3.

The list of career skills/options that may impact the pace of the career acquisition process has to be stored.

4.

The list of career tasks that make up the career acquisition process has to be stored.

5.

The mapping between the users and the Holland personality types must be modelled.

6.

The mapping between the users and the career skills/options must be modelled.

7.

The time taken by the successful job seekers to complete each career task has to be stored under the mapping between users and the career task times.

The data requirements on the client side are specified below:

1.

The average time taken for completing each career task in the past, when a user possesses any of the career skills/options has to be computed and stored for every career skill/option the client selects.

2.

The average time taken for completing each career task in the past for the specific

Holland personality types that are similar to the client has to be stored.

3.

The motivation factor associated with the client should be stored.

31

4.

The desired time in which the client intends to complete the career acquisition process is stored.

6.2 Data Modeling

BCNF normalization is used to model the database schemas on both the server and the client.

BCNF Decomposition Algorithm [11] :-

Input: Relational data R + FD’s for R

Output: Decomposition of R into BCNF relations with Lossless join

Algorithm:-

Step1: Compute keys for R

Step2: Repeat until all relations are in BCNF:

Pick any R` with A`-> B` that violates BCNF

Decompose R` into R1(A,B) and R2 (A, rest)

Compute FD’s for R1 and R2

Compute key for R1 and R2

The resultant normalized schema is illustrated below using the ER diagram notation for the data on the server and client sides.

6.3 ER Diagram for the database on the Parse Cloud

32

Figure 3 ER diagram for the server-side data

6.4 ER Diagram for the Local Database stored on the Android Device

33

Figure 4 ER diagram for the client-side data

34

Chapter 7

RESULTS AND ANALYSIS

A sample schedule recommendation for a job seeker is discussed here to understand the inner working of the Career Plan Tracker. The job seeker’s background is considered as the input to the

Career Plan Tracker’s recommendation system. Following that is the list of steps carried out before executing the algorithm.

7.1 Case study: Computing the Schedule Recommendation for a Sample Job seeker

7.1.1 The Career Plan Tracker’s way of Building a Schedule Recommendation

Table 1 Input #1 - Jobseeker’s persona

Desired time for completing the career 400 hours acquisition process

Prominent Holland personality type Artistic

Motivation

Career skill/Option #1

Career skill/Option #2

Career skill/Option #3

Yes

Writing

Reading

Socializing

The persona specifies that the job seeker is motivated to successfully complete the career acquisition process as quickly as possible. It also specifies the desired time in which the job seeker intends to complete the career acquisition process.

Compression factor = desired time / ideal time = 400/480 = 0.8333

35

Career task

Getting organized

Table 2 Input #2: A fixed constant Ideal Schedule

Time (in hours)

20

Awareness

Self-assessment

Job search strategy

Resumes and portfolio preparation

Interview preparation

20

40

200

120

80

The ideal schedule is compressed using the compression factor and considered for the start solution of the algorithm. So the start solution, at the beginning of the annealing process looks like the below schedule.

Career task

Getting organized

Awareness

Self-assessment

Table 3 Start solution for Simulated Annealing

Time (in hours)

16

16

33

Job search strategy

Resumes and portfolio preparation

Interview preparation

166

100

66

The total time for the schedule is 397 hours which is well within the desired time requirement of the job seeker. This initial schedule has a profit of 4.645161290322581. So, ideally the schedule

36 recommendation that the Career Plan Tracker builds should produce a better schedule that fits better for the given persona of the job seeker.

Table 4 Input #3.a - History data of successful jobseekers having writing skills

Career skill/Option #1 Writing

Average time for getting organized 15 hours

Average time for awareness

Average time for self-assessment

Average time for job search strategy

Average time for resumes and portfolio

Average time for interview preparation

15 hours

35 hours

235 hours

100 hours

90 hours

Table 5 Input #3.b - History data of successful jobseekers having reading skills

Career skill/Option #2 Reading

Average time for getting organized

Average time for awareness

Average time for self-assessment

8 hours

10 hours

37 hours

Average time for job search strategy

Average time for resumes and portfolio

Average time for interview preparation

195 hours

110 hours

120 hours

Table 6 Input #3.c - History data of successful jobseekers having socializing skills

Career skill/Option #3 Socializing

Average time for getting organized

Average time for awareness

Average time for self-assessment

Average time for job search strategy

20 hours

20 hours

50 hours

150 hours

Average time for resumes and portfolio

Average time for interview preparation

140 hours

100 hours

Table 7 Input #4: History data of successful job seekers having Artistic personality type

Prominent Holland personality type Artistic

Average time for getting organized

Average time for awareness

15 hours

15 hours

Average time for self-assessment

Average time for job search strategy

Average time for resumes and portfolio

Average time for interview preparation

30 hours

220 hours

110 hours

90 hours

37

Table 8 Initial configuration of the Simulated Annealing algorithm

Temperature 1,000,000

Cooling rate 0.99999

38

7.1.2 Output

A schedule recommendation is generated mimicking the end of a real-time career counseling session. The final schedule looks like the schedule given below:

Table 9 Output Schedule Recommendation

Career task

Getting organized

Awareness

Self-assessment

Job search strategy

Resumes and portfolio preparation

Interview preparation

Time (in hours)

12

14

33

166

97

75

7.1.3 Comparative Analysis and Conclusion

The schedules generated by the two approaches are discussed.

First approach (Without the Career Plan Tracker): Take the ideal schedule and compress it using the compression factor. This might be the way to generate a schedule to satisfy the time requirements of the job seeker in the absence of the Career Plan Tracker.

Second approach (With the Career Plan Tracker): Provide the inputs required for the Career Plan

Tracker’s recommendation system (i.e. the simulated annealing algorithmic implementation) and let the Career Plan Tracker build a schedule recommendation.

For comparing the schedules generated by both these approaches, the following figures can be used:

39

1.

The cost function used in the simulated annealing algorithm: This computes the profit of using a particular career schedule with respect to the six objectives of the career schedule discussed in chapter 1.

2.

Analyzing the difference in the schedules with respect to the job seeker’s persona given.

These two figures are discussed in further detail as follows.

Profit of the Career Schedules

4

3

2

1

6

5

Profit of the career schedule

0

1 2

Figure 5 Comparison of profits for the two Career Schedules

The first bar in the chart represents the profit (metric that shows how well the schedule satisfies the six objectives mentioned in the earlier chapters) of the career schedule generated by direct compression to satisfy the time requirements of the job seeker. Whereas the second bar in the chart represents the profit of the career schedule recommended by the Career Plan Tracker.

As the profits are computed based on the cost function discussed in the chapter of simulated annealing, the profits turn out to have a precision of 14 digits. Hence, what seems to be a minor

40 difference in the profits displayed on the graph, can, in reality scale to represent a really huge difference.

Moreover, the career schedule generated by approach 1 isn’t too bad in the first place. As this is the exact reflection of an ideal schedule but for a shortened timeframe, it is quite good to be used in real practice. But as the Career Plan Tracker builds a much better schedule in terms of the six factors considered, the usefulness of this mobile application can be considered enormously high.

The second figure analyzes each career step of the schedule recommendation built by the Career

Plan Tracker. Comparing it with the schedule generated from approach 1 mentioned earlier in this section, and relating it back with the persona of the job seeker can help us derive some interesting observations. The comparison is illustrated graphically in the figure below:

180

160

140

120

100

80

60

40

20

0

Career schedule generated without the career plan tracker

Career Schedule generated by the career plan tracker

Figure 6 Task-wise comparison between the two Career Schedules

41

The graph shows how slightly the two schedules differ but yet generate a huge difference in the profits of the career schedules. It might well be the case that the time duration chosen i.e. of 480 hours might be small enough to result in smaller difference in the schedule. But on the other side, these slight differences when summed up forms a much bigger difference that is clearly evident from the previous graph which compares the overall profit of the entire career schedule.

This graph also depicts compression based on the six factors that form the objective of the compression. For example, the lesser important tasks can be observed to be more compressed.

Also, the higher career task time for the career task, “Interview preparation” is attributed to a similar history data (with respect to the personality types and the career skills/options) that has been observed in the past.

Considering the fact that, a few minor changes to the career schedule with the help of the Career

Plan Tracker may help the job seekers find a job faster satisfies the objective of this project.

42

Chapter 8

FUTURE WORK

1.

The sample history data used as the input for the algorithm in the Career Plan Tracker can be replaced with a more accurate data that the Career Plan Tracker expects to record as time passes on.

2.

The Career Plan Tracker can be made a cross platform application by extending its support for the iPhones, Windows phones and the web.

3.

Presently, all the objectives are considered equally important. But in the future, as history data will be available, the more important objectives can be weighted higher than the others while building the schedule recommendation.

4.

More objectives can be added to the optimization problem that the Career Plan Tracker presently solves.

5.

Better user interfaces can be developed for larger screen devices like the tablets.

6.

More fun features can be added to the Career Plan Tracker to make it more interesting to use.

43

APPENDIX

Code for Simulated Annealing import java.util.Random; public class Experiment1 {

//Input from the seriousjobseeker private static final int no_of_career_steps = 6;

//Considered as a full-time job for a 3 month duration = 480 hours private static final int total_ideal_time = 480; private static final int [] ideal_schedule =

{20,20,40,200,120,80};

//The time before which the jobseeker aspires to find a job private static final int total_desired_time = 400;

//Values to get from the external database private private

//Initialized with sample data static static final final int int

[]

[] ct_hpt = {15,15,30,220,110,90}; ct_skill_reading =

{8,10,37,195,110,120}; //Initialized with sample data private static final int [] ct_skill_writing =

{15,25,35,235,100,90}; //Initialized with sample data private static final int [] ct_skill_social = {20,20,50,150,140,

100}; //Initialized with sample data

// Calculate the acceptance probability private static double acceptanceProbability( double energy, double newEnergy, double temperature)

{

// If the new solution is better, accept it if (newEnergy >= energy && newEnergy>0) { return 1.0;

}

// If the new solution is worse, calculate an acceptance probability if (newEnergy > 0) return Math.exp((-energy + newEnergy) / temperature); else return -1;

} private static double getProfit( int [] currentSolution)

{

44 return (1-

getValidatingPenalty(currentSolution))/(getHPTFactor(currentSolution)+g

etCareerSkillsFactor(currentSolution)+getCriticalityFactor(currentSolut ion)+getIdealScheduleFactor(currentSolution)+getMotivationFactor(curren tSolution));

} private static int [] getNeighbor( int [] current)

{

/*Generate the neighbor by randomly adding 1 to half of the elements and -1 to the remaining half. If odd, one element remains unaltered.*/ int int

[] indices = new

[] neighbor = indices[i]=i; new int [current.

int length

[current.

for ( int i=0;i<current.

length ;i++)

]; length ];

/*Knuth shuffle is used to have a uniformly distributed random arrangement of the elements of the array*/ indices = shuffle(indices);

//Neighbor function alters only two elements neighbor[indices[0]] = current[indices[0]]+1; neighbor[indices[1]] = current[indices[1]]-1; for ( int k=2;k<indices.

length ;k++) neighbor[indices[k]] = current[indices[k]]; return neighbor;

} private static int [] shuffle( int [] indices)

{ for ( int i =0; i<indices.

length ; i++)

{

Random rand = new Random(); int r = rand.nextInt(i+1); //Random number between 0 and i

//Swap the elements at r and i

} return indices;

} int temp = indices[r]; indices[r] = indices[i]; indices[i] = temp;

public static void main(String[] args) {

//Simulated Annealing - algorithm starts here double temperature = 1000000; double cooling_rate = 0.99999; double compressionFactor =

( double ) total_desired_time /( double ) total_ideal_time ;

//Initialize with the initial solution int [] currentSchedule = new currentSchedule[0] = ( new int [ no_of_career_steps ];

Double(20*compressionFactor)).intValue(); currentSchedule[1] = ( new

Double(20*compressionFactor)).intValue(); currentSchedule[2] = ( new

Double(40*compressionFactor)).intValue(); currentSchedule[3] = ( new

Double(200*compressionFactor)).intValue(); currentSchedule[4] = ( new

Double(120*compressionFactor)).intValue(); currentSchedule[5] = ( new

Double(80*compressionFactor)).intValue();

display(currentSchedule);

//Setting the best solution as the initial solution int [] bestSchedule = new int [ no_of_career_steps ]; bestSchedule[0]=20; bestSchedule[1]=20; bestSchedule[2]=40; bestSchedule[3]=200; bestSchedule[4]=120; bestSchedule[5]=80; double bestProfit = 0.0; //getProfit(bestSchedule); while (temperature > 1)

{

//Create a neighbor int double

[] neighbor = getNeighbor(currentSchedule);

currentProfit = getProfit(currentSchedule); double neighborProfit = getProfit(neighbor);

System.

out .print( "current profit:

" +currentProfit+ "\tneighbor profit:

" +neighborProfit);

//Check whether to keep the neighbor

45

46 if (acceptanceProbability(currentProfit, neighborProfit, temperature) > 0.999) {

//Keep the neighbor currentSchedule = neighbor;

System.

out .print( "\tAccepted\n" );

} else

System.

out .print( "\t\tRejected\n" );

//Check if the current schedule is the best so far if (currentProfit > bestProfit)

{

}

{

}

display(bestSchedule);

System.

out .println( "Best profit: " +bestProfit); private static double getHPTFactor( int [] current) double for

{

(

} bestProfit = currentProfit; for ( int k=0;k< no_of_career_steps ;k++)

{

} temperature *= cooling_rate;

sum=0; int bestSchedule[k] = currentSchedule[k];

i=0; i<current.

length ; i++) sum = sum+

Math.abs(( double ) ct_hpt [i]/( double ) total_ideal_time -

( double )current[i]/( double ) total_desired_time );

}

} return private

Math.abs(sum); static double getCareerSkillsFactor( int [] current)

{ double sum = 0; for ( int i=0; i<current.

length ; i++)

{ sum +=

Math.abs((( double ) ct_skill_reading [i]+( double ) ct_skill_social [i]+( doubl

47 e ) ct_skill_writing [i])/(3*( double ) total_ideal_time ) -

( double )current[i]/( double ) total_desired_time );

} return Math.abs(sum);

} private static double getCriticalityFactor( int [] current)

{

//Critical tasks should be compressed more

//Sum of non critical actual career task times double sum_non_critical =

(current[0]+current[1]+current[2]+current[5])/ total_desired

_time - ( ideal_schedule [0] + ideal_schedule [1] + ideal_schedule [2] + ideal_schedule [5])/ total_ideal_time ;

/*The above value should be big positive to represent more compression of the non critical tasks*/ double non_critical_factor = 20 - sum_non_critical;

//Sum of critical portions of the schedule double sum_critical =

(current[4]+current[3])/ total_desired_time -

( ideal_schedule [4] + ideal_schedule [3])/ total_ideal_time ;

}

//The above value should be a small positive or negative

/*The resulting factor is critical/non_critical and is supposed to be as small as possible for improving the profit of the neighbor*/

} return sum_critical/non_critical_factor; private static double getIdealScheduleFactor( int [] current)

{ double for

{

(

sum=0; int i=0; i<current.

length ; i++) sum = sum+

Math.abs(( double ) ideal_schedule [i]/( double ) total_idea l_time -

( double )current[i]/( double ) total_desired_time );

} return Math.abs(sum);

48 private static double getMotivationFactor( int [] current)

{

//The non citical tasks should be compressed more return -

((current[0]+current[1]+current[2]+current[5])/ total_desire d_time -

( ideal_schedule [0]+ ideal_schedule [1]+ ideal_schedule [2]+ idea l_schedule [5])/ total_ideal_time );

} private static double getValidatingPenalty( int [] current)

{

/* The career task time for none of the career tasks should be negative.

Also to keep the career task time close to the corresponding ideal career task time with respect to the proportion its going to make up in the total time we add penalty appropriately.

These conditions will always be considered while computing the neighbor.

*/ int penalty=0; for ( int i=0;i<current.

length ;i++) if ((current[i]<0) ||

((current[i]+200)/ total_desired_time > ideal_schedule [i]/ total_ideal_time )) penalty += 100; return penalty;

} private static void display( int [] schedule)

{

System.

System.

out out

.println(

.println(

"\n\nSchedule: " );

"Getting Organized: " +schedule[0]+ " hours" );

System.

System.

out out

.println(

.println(

"Awareness: " +schedule[1]+

"Self Assessment: "

" hours"

+schedule[2]+

);

" hours" hours"

);

System.

out

);

.println( "Job Search Strategy: " +schedule[3]+ "

System.

out .println( "Resumes and Portfolios: " +schedule[4]+ " hours" );

System.

out .println( "Interview Preparation: " +schedule[5]+ " hours" ); int sum=0; for ( int i=0;i<schedule.

length ;i++)

}

}

{ sum += schedule[i];

}

System.

out .println( "Total number of hours " +sum);

49

50

REFERENCES

1.

V.S. Gordon, “Simulated Annealing”, from the class “Artificial Intelligence”, California

State University, Fall 2012.

2.

C. Mattiuzzi, “The Serious Jobseeker” – an electronic book on careers, California State

University Sacramento, © 2013.

3.

S.J. Russell, P. Norvig, “Artificial Intelligence – A Modern Approach” 3 rd Edition,

Prentice Hall, © 2009.

4.

R. Buckland, “Simulated Annealing” – lecture video, from the class “Computing – The

Art of Design”, University of New South Wales, retrieved 3/28/2014 (Youtube).

5.

“Introduction to Android” - developer’s guide for the open source Android platform,

“developer.android.com”

, retrieved 2/12/2014.

6.

“Android Guide” - tutorials and documentation using Parse cloud.

7.

L. Angrave, “Creative, Serious and Playful Science of Android Apps” – lecture videos,

University of Illinois – Urbana Champaign,

“courser.org”

, retrieved 2/1/2014.

8.

A. Porter, “Programming Mobile Applications for Android Handheld Devices” – lecture videos, University of Maryland. “courser.org” , retrieved 3/15/2014.

9.

R. Sedgewick, “Random Shuffle” – lecture video, from the online class “Algorithms –

Part 1”, Princeton University, “courser.org” , retrieved 2/28/2014.

10.

J. Widom, “Relational Design Theory” – lecture videos, from the online class

“Introduction to Databases”, Stanford University, “courser.org” , retrieved 6/6/2013.

11.

L. Jacobson, "Simulated Annealing for Beginners", “theprojectspot.com” , retrieved

3/3/2014 (Blog).

12.

"Androidplot" - an open source graphing library for building Android applications,

“androidplot.com” , retrieved 2/15/2014.

51