# Web Science/Part1: Foundations of the web
## Lessons

* understand the basic problems when communicating over a shared medium
* understand the origins of ethernet
* be able to name the ethernet header fields
* be able to explain the reason for the preamble
* understand that the cable length has an influence to transfer rate
* understand that speed of light is responsible for the connection between cable length and transfer rate
* be able to calculate the maximum cable length for a given transfer rate
* understand that the cable length is part of the Ethernet protocol
* Understand that Ethernet is a non deterministic program
* Be able to reconstruct a collision detection / resolve algorithm
* Understand what happens if two computers send data at the same time
* get introduced to the concept of an IP-network
* understand that networks can be interconnected
* learn about the importance for decentralization as a design principle
* realize that Local area networks can be fragmented via IP networks
* understand that an IP network as an overlay network is an abstract thing that is not directly reflecting the hardware settings
* understand the notion of an IPv4 address and its components like network and host part
* understand why MAC addresses do not fulfill the requirements of IP addresses.
* get introduced to the notion of an IP router / gateway
* review the definition and concept of an IP network
* understand that IP routing works on the level of IP networks
* understand the concept of subnetting
* review network classes and understand classless inter domain routing.
* get a feeling for the IP header
* get a better understanding of how the protocol works
* understand which header fields are changed while routing
* understand which problems of IP will be solved with the transmition control protocol
* be aware of the limitations of the internet protocol and the internet architecture
* get to know the end to end principle and in which only sender and receiver take care that communication works properly
* understand the concept of a logical connection (virtual communication channel) between two computers on the internet
* understand the importance of acknowledging received messages
* be able to understand the process of establishing a tcp / connection
* understand the concept of a socket in a TCP/IP package
* understand that ports are part of the TCP header
* be able to explain the difference between solicited and unsolicited TCP/IP traffic
* understand how ports can be used for multiplexing internet connections
* understand the concept of windowsize and sliding window
* understand how flow control can prevent TCP connections to overload link layer protocols and slow networks
* In this lesson you will learn some basics on the Question: Why Web Content needs structure and proper markup.
* Understand the Domain Object Model and the DOM tree
* Understand that HTML is just a special dialect of XML
* Understand the relationship between HTML and XML
* Be able to write simple HTML code having learned a few example elements of HTML (headings, paragraphs, lists, tables, links, anchors, emphasize, input fields; but also few dirty ones like italics, color,...)
* See that HTML really is just another simple mark up and has nothing to do with programming
* Be able to structure web Content using HTML and create pages following a specified structure.
* Know about the style attribute and how to use it within HTML elements
* Know already realize that there are some limits using the style attribute
* be able to create websites that follow a certain style guide
* See the problems with inline styles
* Understand that a style sheet gives you freedom
* being able to explain people why they should use style sheets
* be able to name at least 2 important point why to use style sheets
* know how the cascading process works
* know the basic syntax of cascading stylesheets
* know how to include a media file like a graphic to your webpage.
* understand that images like jpg, gif and bitmaps are hard for machines to understand.
* Know how to use a XML based format to create images that are easy to understand for machines and humans an can even make use of stylesheets.
* Understand that metadata is necessary to communicate the semantics of content
* See that using metadata for ranking in search results is a bad idea
* get introduced to modern ways of publishing media data as RDFa
* Understand the separation between content, structure, layout and meta data
* Review HTML, CSS, XML, SVG and RDFa
* Understand what makes a clean HTML markup ("separation of concerns") vs. unclean one ("mixing responsibilities"); and implications (better or worse maintenance, better or worse personalization, better or worse accessibility)
* become aware of the possibilities to create dynamic content within a webserver
* see that you don't have to implement a webserver to be able to serve dynamic content
* understand some main issues like blocking I/O that one should keep in mind when doing server side programming
* see how the web server is the entry point for web applications
* whitelisting of input vs blacklisting and a method of preventing XSS
* understand the basics of HTTP POST requests
* become aware of security issues while transfering data to a web server
* be able to create a simple web form in HTML
* See how a POST request is handled in a Java Servlet
* get to know the Request object
* see how a data base query and more advanced technology can be included to a servlet
* understand how javascript was supposed to support people to fill out web forms
* understand the issues and disadvantages that arise with javascript
* be aware of JavaScript APIs
* know some of the standard JavaScript libraries
* be able to understand the concept of Ajax requests.

## Discussion

* Ethernet
** Communication over a shared Medium
** Ethernet header
** Minimum package length vs maximum cable length
** Collision detection
** Summary, further reading, homework
* Internet Protocol
** Motivation for IP
** Classful IPv4 networks
** IP forwarding algorithm
** IP header
** Summary, further reading, homework
* Transmission Control Protocol
** End to end principle and connection oriented communication
** Three way handshake
** Port numbers
** Sliding window and flow control
** Summary, further reading, homework
* Domain Name System
** Tree structure
** Terminology
** Zones
** Review some facts about DNS
** Delegating DNS queries
** DNS address resolution
** Summary, further reading, homework
* Internet vs World Wide Web
** Summary of the internet architecture
** Motivation and requirements for the World Wide Web
** Design principles of the web
** Uniform Resource Identifier
** Summary, further reading, homework
* Hypertext Transfer Protocol
** Making HTTP requests
** A simple web client
** A simple web server
** HTTP header
** Content negotiation
** Summary, further reading, homework
* Web content
** Problem setting for web content formats
** Working with XML
** HTML for web document structures
** Layout elements in HTML
** Motivating separation of content and layout
** Cascading Style Sheets
** Media content
** Metadata
** Summary, further reading, homework
* Dynamic Web Content
** Basics of server side web programming
** Forms and HTTP post request
** Handling a post request in a Java Servlet
** Client side JavaScript
** Ajax and the XMLHttpRequest class
** Summary, further reading, homework