Computer networks are pervasive and we use them daily yet we often do not give a lot of thought to how they are put together, work, how applications use them, and what the underlying fundamental principles are that allow us to build and design applications using computer networks. In this course you should:
- Become comfortable with writing and working with different programs that use computer networks
- Learn the terminology associated with networking
- Learn the key paradigms and strategies used in developing applications that use computer networks
- Be able to apply the key paradigms and strategies to write programs and/or explain the operation of the Internet.
- Become familiar with the basic concepts of how the Internet is put together and operates and basic protocols that are used.
In particular the material will be framed by looking at the key strategies and models for addressing:
- Design strategies for scalability and reliability in distributed systems
- The use of layers and abstractions to understand and simplify designs.
- Routing, naming and addressing
- Isolation, data loss and performance
- Privacy and Security