This dissertation proposes new methodologies for the supervisory control of concurrent systems. The focus of this work is on discrete-event concurrent systems. However, the extension of the discrete-event methods to concurrent systems with continuous dynamics is also approached. Petri nets are a convenient discrete-event representation of concurrent systems, and are used here for the modeling of concurrent systems. Several discrete-event supervisory control problems are approached here. First, the enforcement of specifications described as linear inequalities in terms of three Petri net parameters is considered. Then, the decentralized supervisory control problem is considered for specifications described by linear marking inequalities. The decentralized supervision problem is approached in three settings: no communication, unrestricted communication, and restricted communication. Finally, procedures for deadlock prevention and liveness enforcement are presented. Additionally, new results relating deadlock and liveness to the structure of a Petri net are also presented. The main feature of the supervision methods proposed in this dissertation is that they rely on the structure of the Petri net. This structural approach has computational benefits and allows the supervisor design to be independent of the initial state of the system. The methods are given in a general supervision setting, which makes no assumptions on the structure of the Petri nets and allows partial controllability and partial observability to be present. This dissertation addresses also the supervisory control problem in the more general framework of hybrid systems, that is, systems involving both discrete-event and continuous dynamics. A two-level approach is proposed. The lower level design is concerned with the development of controllers for the continuous part of the hybrid systems. The higher level design is concerned with the design of a supervisor coordinating the operation of the lower level controllers, according to given discrete-event specifications. At the higher level the controlled hybrid systems are abstracted as Petri nets. Petri net methodologies can then be applied to design the appropriate supervisor. The discrete-event setting here is extended to model some of the hard constraints arising in the supervision of hybrid systems. Extensions of discrete-event methods to this setting are also approached. Finally, the controller design at the lower level is considered in a discrete-time setting. The controller design produces both a controller and a Petri net abstraction for the higher level. This dissertation aims to contribute to the automated design of controllers for complex systems. This work is believed to be relevant for applications in a variety of areas, including automated manufacturing, robotics, computer networks, and traffic control.