Virtually every time we interact with a computer program — on our computer, on our tablet, on our smartphones…on our SmartTVs, or our refrigerators … or, on our for some reason also connected toaster oven — we’re in reality interacting with a distributed application.

The device we hold in our hands for sending an email (or, into which we slide our sliced toast … ) will, at the very least, communicate with a server, somewhere out there in “the cloud” — and, most often, communicate with a whole host of servers, and computers … and does so across this thing called “The Internet”.

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 …


Student limit: 24
Prerequisites: INF321 or INF311
  (Having followed INF411, INF421 and/or INF431 probably won't hurt)



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 …