Programming for Internet Communication Along the Stack
In this course, students will develop solutions that relate to Internet communication. We will consider all aspects of the Internet ecosystem, including lower layers up to the application layer for the current Internet as well as the Internet of Things. Participants will work in smaller groups (3-4 students), where each group will focus on a specific builing block. This will allow to adapt to interests and expertises (e.g., web vs. embedded system programming).
Note that we intend to use the results of this software project to revamp the old super computers in the entrance area of the CS building (i.e., the PDP 11 and the Russian clone). We will extend both computers by network-capabale devices, sensors, screens, and your software (a) to demonstrate the Internet of Things and (b) to give insights into the current state of the Internet backbone.
Below you find some initial topics, which we will clarify during the first meeting.
Embedded / IoT Programming
You will develop applications for embedded devices. The software base is the open source operating system RIOT.
Internet Backbone Measurements
You will develop applications that process live BGP data and check if an attack is happening. The software base is the RTRlib and BGPMON/BGPStream.
You will develop a web interfaces that shows the state of the super computers to remote participants. Your web frontend should be suitable for mobile devices.
If you have questions in advance, feel free to contact Matthias Wählisch.
A. S. Tanenbaum, Modern Operating Systems, 3rd ed. Upper Saddle River, NJ, USA: Prentice Hall Press, 2007.
Shelby, Zach, and Carsten Bormann. 6LoWPAN: The wireless embedded Internet. Vol. 43. Wiley. com, 2011.
A. Dunkels, B. Gronvall, and T. Voigt, "Contiki - a lightweight and flexible operating system for tiny networked sensors." in LCN. IEEE Computer Society, 2004, pp. 455-462.
P. Levis, S. Madden, J. Polastre, R. Szewczyk, K. Whitehouse, A. Woo, D. Gay, J. Hill, M. Welsh, E. Brewer, and D. Culler, "TinyOS: An Operating System for Sensor Networks," in Ambient Intelligence, W. Weber, J. M. Rabaey, and E. Aarts, Eds. Berlin/Heidelberg: Springer-Verlag, 2005, ch. 7, pp. 115-148.
Oliver Hahm, Emmanuel Baccelli, Mesut Günes, Matthias Wählisch, Thomas C. Schmidt, "RIOT OS: Towards an OS for the Internet of Things," in Proceedings of the 32nd IEEE International Conference on Computer Communications (INFOCOM), Poster Session, April 2013.
M.R. Palattella, N. Accettura, X. Vilajosana, T. Watteyne, L.A. Grieco, G. Boggia and M. Dohler, "Standardized Protocol Stack For The Internet Of (Important) Things", IEEE Communications Surveys and Tutorials, December 2012.
J. Wiegelmann, Softwareentwicklung in C für Mikroprozessoren und Mikrocontroller, Hüthig, 2009
In this course you will be expected to write code. The outcome of your software project should be a concrete contribution to the RIOT code base, and take the shape of one or more pull request(s) to the RIOT github (https://github.com/RIOT-OS/RIOT). Before you start coding, refer to the starting guide