This paper discusses the various modes of operations of cargo ships which are liner operations, tramp shipping and industrial operations, and mathematical programming, simulation , and heuristic method that can be used to solve ships routing and scheduling problems for each of these operations. In particular, this paper put emphasis on a crude oil tanker scheduling problem. The problem is to achieve an optimal sequence of cargoes or an optimal schedule for each ship in a given fleet during a given period. Each cargo is characterized by its type, size, loading and discharging ports, loading and discharging dates, cost, and revenue. Our approach is to enumerate all feasible candidate schedate schedules for each ship, where a candidate schedule specifies a set of cargoes that can be feasibly carried by a ship within the planning horizon , together with loading and discharging dates for each cargo in the set. Provided that candidate schedules have been generated for each ship, the problem of choosing from these an optimal schedule for each ship is formulated as a set partitioning problem, a set packing problem, and a integer generalized network problem respectively. We write the PASCAL programs for schedule generator and apply our approach to the crude oil tanker scheduling problem similar to a realistic system.