Solving Timetabling Problem Using Genetic and Heuristic Algorithms