Many real-world systems are intrinsically nonlinear. This thesis proposes various algorithms for designing control laws for input-affine single-input nonlinear systems. These algorithms, which are based on the concept of quotients used in nonlinear control design, can break down a single-input system into cascade of smaller subsystems of reduced dimension. These subsystems are well defined for feedback-linearizable systems. However, approximations are required to handle non-feedback-linearizable systems. The method proceeds iteratively and consists of two stages. During the forward stage, an equivalence relationship is defined to isolate the states that are not directly affected by the input, which reduces the dimension of the system. The resulting system is an input-affine single-input system controlled by a pseudo-input which represents a degree of freedom in the algorithm. The pseudo-input is a complementary state required to complete the diffeomorphism. This procedure is repeated (n − 1) times to give a one-dimensional system, where n is the dimension of the system. The backward stage begins with the one-dimensional system obtained at the end of the forward stage. It iteratively builds the control law required to stabilize the system. At every iteration, a desired profile of the pseudo-input is computed. In this next iteration, this desired profile is used to define an error that is driven asymptotically to zero using an appropriate control law. The quotient method is implemented through two algorithms, with and without diffeomorphism. The algorithm with diffeomorphism clearly depicts the dimension reduction at every iteration and provides a clear insight into the method. In this algorithm, a diffeomorphism is synthesized in order to obtain the normal form of the input vector field. The pseudo-input is the last coordinate of the new coordinate system. A normal projection is used to reduce the dimension of the system. For the algorithm to proceed without any approximation, it is essential that the last coordinate appears linearly in the projection of the transformed drift vector field. Necessary and sufficient conditions to achieve linearity in the last coordinate are given. Having the pseudo-input appearing linearly enables to represent the projected system as an input-affine system. Hence, the whole procedure can be repeated (n−1) times so as to obtain a one-dimensional system. In the second algorithm, a projection function based on the input vector field is defined that imitates both operators, the push forward operater and the normal projection operator of the previous algorithm. Due to the lack of an actual diffeomorphism, there is no apparent dimension reduction. Moreover, it is not directly possible to separate the drift vector field from the input vector field in the projected system. To overcome this obstacle, a bracket is defined that commutes with the projection function. This bracket provides the input vector field of the projected system. This enables the algorithm to proceed by repeating this procedure (n−1) times. As compared with the algorithm with diffeomorphism, the computational effort is reduced. The mathematical tools required to implement this algorithm are presented. A nice feature of these algorithms is the possibility to use the degrees of freedom to overcome singularities. This characteristic is demonstrated through a field-controlled DC motor. Furthermore, the algorithm also provides a way of approximating a non-feedback-linearizable system by a feedback-linearizable one. This has been demonstrated in the cases of the inverted pendulum and the acrobot. On the other hand, the algorithm without diffeomorphism has been demonstrated on the ball-on-a-wheel system. The quotient method can also be implemented whenever a simulation platform is available, that is when the differential equations for the system are not available in standard form. This is accomplished numerically by computing the required diffeomorphism based on the data available from the simulation platform. Two versions of the numerical algorithm are presented. One version leads to faster computations but uses approximation at various steps. The second version has better accuracy but requires considerably more computational time.