Requirements engineering (RE) is one of the crucial phases in software development. It can be defined as the process of discovering the purpose of a software system by identifying stakeholders and their needs, and documenting these in a form that is amenable to analysis, communication, and subsequent implementation (Nuseibeh and Easterbrook, 2000). Mistakes in the requirements gathering and analysis may determine the failure of the entire development process and of the system itself. Moreover, in the last years, a new trend in system development is that of gathering and analyse knowledge from the users of the system that may be used for system evolution. This Requirements Engineering course intends to offer an overview on the most relevant problems and advanced methods and techniques for the whole requirements engineering process, from requirements elicitation, to analysis, validation and verification, till requirements prioritization and release planning.