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 analysing users’ feedback, such as user reviews in App Store or logs of users sessions with the system, in order to envisage new requirements 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 their analysis, verification and evolution.