Mobile Computing

Mobile devices such as mobile phones, smart watches, and other wearable devices can interact seamlessly by relying on available communication infrastructures. This course focuses on challenges and opportunities arising from the use of systems of mobile devices or “mobile sensing systems”. Following an overview of applications enabled by mobile sensing systems the focus will be devoted to the most significant technologies, including hardware platforms, programming environments and tools. Relevant aspects related to the design and development of a mobile sensing system, including the handling of sensors, the design of user interfaces, the management of local and remote sensor data storage, privacy and security issues will be investigated and addressed. In order to gain practical hands-on experience, students will learn in the lab sessions how to design, implement, and demonstrate Android-based mobile sensing applications.


The goal of this course is to convey the fundamentals of communication in Cyber-Physical Systems. Both wired and wireless communication technologies will be considered. The course will be accompanied by hands-on tutorials. The main contents of the course include: (1) Communication in Cyber-Physical Systems: Requirements and challenges, (2) Basic communication technologies for wired networks (e.g., CAN bus, Ethernet, USB, optical communication), (3) Basic communication technologies for wireless networks (e.g., ZigBee, NFC, Bluetooth, Wi-Fi), (4) Networking protocols for Cyber-Physical Systems, (5) Performance evaluation of communication protocols for Cyber-Physical Systems and (6) Hands on tutorials (e.g., CAN bus and Zigbee).

Computer Networking

The Internet provides global connectivity for applications and end-users. We want to understand, on the one hand, how common distributed applications such as the world-wide web use the network (the Internet), and on the other hand how the network is designed and how it provides its services to applications. This course serves the designers of distributed applications, as well as network designers as an introduction to advanced studies in computer networking. The course covers the architecture of networked applications and the network itself, their fundamental protocols, and the design principles behind them. This includes applications such as the Web, e-mail, and peer-to-peer systems; the two most important transport protocols of the Internet, namely UDP and TCP with its provisions for reliability and congestion control; and the network layer, with the structure of routers and the network as a whole, packet forwarding, and the basics of interdomain and intradomain routing.   … Read More

Computer Architecture

The overall goal of this course is to understand the logical structure of a modern computer, from its basic building blocks to its more complex components. This knowledge is intended to provide the basis for system design and performance analysis, both for hardware and software systems. The concepts learned in this course are also foundational elements for the design of compilers and operating systems. Contents Computer systems are a combination of their hardware and software. Whether you intend to design the next breed of microprocessor, the next Java compiler, or the greatest C++ application, a computer scientist is best served by understanding what is going on under the hood of the computer. Why? Simply put, knowing how a program is translated into the electronics allows it to be more efficiently written. This course will address issues such as digital logic, machine representation of data, basic CPU and instruction-set architecture, memory … Read More