Queueing networks with blocking frequently arise in performance studies of computer systems, distributed systems, and communication systems. Despite their potential applicability, their use is not widespread. This is mainly due to the absence of comprehensive tools for analyzing such systems. This research aims at rectifying this situation by developing algorithms for the analysis of multi-class queueing networks with blocking. So far, such multi-class queueing networks have not been studied in the open literature. In order to achieve this objective, small configurations will be analyzed first. These configurations will be in the form of merge, split, and tandem multi-class queueing networks with blocking. The results and experience obtained from the analysis of these configurations will then be consolidated in order to obtain solution techniques for arbitrary configurations. Finally, these solution techniques will be incorporated into existing algorithms for general queueing networks, in order to further increase their usefulness.