A corollary to this is, that every relevant modern application is a distributed application, which uses the Internet and the cloud — and, in a nutshell, the purpose of this MODAL is to teach you how to competently develop those applications.


Specifically, we will give a high-level view of “how the Internet works”: what is routing, and DNS? What is TCP/UDP/IP? What’s a proxy? A switch? A router? What is an IP address? And what’s this thing called IPv6?


With this baggage, we will work through a set of tutorials, introducing the (language) primitives for distributed systems developments — including interactions with (for example) web-servers, and with Twitter, as well as development of your own server applications….in fact, we will in one of those tutorials develop a on-line, multi-player, game.


We will offer these tutorials in Java — and, also in C, for those looking for an opportunity to pick up a (professional) programming language. And we will see how easy it is for a client program written in C to communicate with a server written in Java (and vice-versa, of course).


Once you’ve worked through the tutorials, you’ll be teaming up with your best buddy, and together put what you’ve learned to good use: you’ll work together on a project of your choosing — either, one defined by yourself, or one from among a catalogue proposed by your teachers. This may include topics such as collaborative software, multi-player games, a “social media aggregator” — or maybe even a network of annoying Twitter-bots, which will retweet and/or debunk the regurgitations of your favorite politicians … your imagination is (literally) the only limit …