Conversational Agents are one of the most impressive evidence of the recent resurgence of Artificial Intelligence. In fact, there is now a high expectation for a new generation of dialogue systems that are able to naturally interact and assist humans in a number of scenarios, including virtual coaches, personal assistants and automatic help desks. From the market perspective, there is an increasing interest for applications that support interaction in natural language, like Amazon Alexa and Google Home. This course provides an overview of state-of-art techniques used to develop dialogue systems in the broader context of Computational Linguistics. We specifically address task-oriented systems, where the dialogue is targeted to help the user for a certain task (e.g. booking a train, buy a product, blocking a credit card, etc.). Students will be introduced to core components of a dialogue system: utterance understanding, (e.g. frame semantics approaches), dialogue management (e.g. probabilistic and end-to-end approaches), and response generation. We will present experimental results obtained over publicly available datasets.