COMP519 Web Programming Lecture 1: Overview of COMP519 Handouts

Ullrich Hustadt

Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool Contents

1 Overview Information Learning Outcomes

2 Background Internet and WWW: A First Definition Internet and WWW: History Internet and WWW: A Modern Definition Distributed Systems: Fundamental Questions Distributed Systems: Model-View-Controller Examples Web Programming versus App Programming

COMP519 Web Programming Lecture 1 Slide L1 – 1 Overview Information COMP519 Web Programming

• Module co-ordinator: Dr Ullrich Hustadt, Ashton Building, Room 1.03, [email protected] • Delivery: • Two or three lectures per week (≈28 in total) • Two lab sessions per week (≈18 in total) Refer to your personal timetable for dates, times, and places

• On-line resources: http://cgi.csc.liv.ac.uk/~ullrich/COMP519/ • Assessment: Four programming assignments each worth 25% of the module mark (68 hours vs 48 hours on COMP518; one working day per week)

COMP519 Web Programming Lecture 1 Slide L1 – 2 Overview Information Recommended Books

1 . Bates: Web Programming: Building Internet Applications (3rd ed). John Wiley & Sons, 2006. 2 A. Beautieu: Learning SQL (2nd ed). ’Reilly, 2009. 3 . . Davis and .A. Phillips, Learning PHP & MySQL (2nd ed). O’Reilly, 2007. 4 . Schafer, Web Standards programmer’s reference: HTML, CSS, JavaScript, Perl, Python, and PHP. Wiley, 2005. 5 . . Schwartz, . Phoenix, and bd foy: Learning Perl (6th ed). O’Reilly, 2011. 6 . C. Zakas: Professional Javascript for Web Developers (2nd ed). Wiley, 2009. http://readinglists.liverpool.ac.uk/modules/comp519.html

COMP519 Web Programming Lecture 1 Slide L1 – 3 Overview Learning Outcomes Learning Outcomes

By the end of this module, a student should 1 have an understanding of the range of programming techniques and languages available to organisations and businesses and be able to choose an appropriate architecture for a web application; 2 be able to demonstrate abilities to design and implement maintainable web sites; 3 be able to make informed and critical decisions regarding client development using HTML and JavaScript; 4 be able to design and implement reasonably sophisticated server-side applications using one or more suitable technologies; 5 have the knowledge to critically analyse and evaluate web applications; 6 have a critical and systematic understanding of web protocols.

COMP519 Web Programming Lecture 1 Slide L1 – 4 Overview Learning Outcomes Learning Outcomes in a Nutshell

By the end of this module, a student should • be able to design, develop and evaluate web applications

COMP519 Web Programming Lecture 1 Slide L1 – 5 Background Internet and WWW: A First Definition Web 6= Internet

Internet A physical network of networks connecting billions of computers and other devices using common protocols (TCP/IP) for sharing and transmitting information

World Wide Web [Old] A collection of interlinked multimedia documents (web pages stored on internet connected devices and accessed using a common protocol (HTTP))

Key distinction: • The internet is hardware plus protocols while the world wide web is software plus protocols • The world wide web is an application using the internet to transmit information, just like many others, for example, email, SSH, FTP

COMP519 Web Programming Lecture 1 Slide L1 – 6 Background Internet and WWW: History History (1)

• 1969: ARPANET (precursor of the Internet) • 1971: First e-mail transmission • 1971: File Transfer Protocol (FTP) • 1972: Vadic VA3400 modem (1,200 bit/s over phone network) • 1977: RSA public-key cryptography • 1977-79: EPSS/SERCnet (first UK networks between research institutions) • 1981: IBM PC 5150 • 1981: Hayes Smartmodem (300 bit/s; computer controlled) • 1982: TCP/IP standardised • 1985: FTP on TCP standardised

COMP519 Web Programming Lecture 1 Slide L1 – 7 Background Internet and WWW: History History (2)

• mid 1980s: Janet (UK network between research institutions with 2 Mbit/s backbone and 64 kbit/s access links) • 1986: U.S. Robotics HST modem (9600 bit/s) • late 1980s: TCP/IP networks expand across the world • 1991: Janet adds IP service • 1991: Gopher / World Wide Web • 1991: GSM (second generation cellular network) digital, circuit switched network for full duplex voice telephony • 1995: First public releases of JavaScript and PHP • 1997: World Wide Web slowly arrives on mobile phones

COMP519 Web Programming Lecture 1 Slide L1 – 8 Background Internet and WWW: History History (3)

Current Applications: • Communication via e-mail, Twitter, etc • Joint manipulation of concepts and actions: Collaborative editing, Crowd sourcing, Wikis (Wikipedia) • E-Commerce: Online auctions and markets • Social media, social networks, virtual learning environments

COMP519 Web Programming Lecture 1 Slide L1 – 9 Background Internet and WWW: A Modern Definition Web 6= Internet

World Wide Web [New] An infrastructure that allows to easily develop, deploy, and use distributed systems

Distributed systems A system in which components located on networked computers communicate and coordinate their actions by passing messages in order to achieve a common goal

COMP519 Web Programming Lecture 1 Slide L1 – 10 Background Internet and WWW: A Modern Definition Web 6= Internet

World Wide Web [New] An infrastructure that allows to easily develop, deploy, and use distributed systems

Key points: • The internet already eased the development of distributed systems by providing an appropriate infrastructure for that • The world wide web eases the development and deployment of interfaces to such system via a combination of web pages and ubiquitous web browers • The world wide web then allows every (authorised) person to instantaneously interact with such systems • Search engines allow users to easily find distributed systems that are useful to them

COMP519 Web Programming Lecture 1 Slide L1 – 11 Background Distributed Systems: Fundamental Questions Distributed Systems: Fundamental Questions

Software developers have to consider a wide, but rather stable, range of questions including: • Where can or should computations take place? • Where can or should data be stored? • How fast can data be transferred/communicated? • What is the cost of data storage/computations/communication depending on how/where we do it? • How robustly/securely can data storage/computations/communication be done depending on how/where we do it? • How much energy is available to support data storage/computations/communication depending on how/where we do it? • What is the legality of data storage/computations/communications depending on how/where we do it? The possible answers to each of these questions is also rather stable, but the ‘right’ answers change

COMP519 Web Programming Lecture 1 Slide L1 – 12 Background Distributed Systems: Model-View-Controller Distributed Systems: Model-View-Controller

We use the Model-View-Controller software design pattern to discuss some of these questions in more detail: • The model manages the behaviour and data • The view renders the model into a form suitable for interaction • The controller receives user input and translates it into instructions for the model

1 Where should the viewbe rendered? • On the user’s computer • On a central server (farm) possibly shared by a multitude of users

COMP519 Web Programming Lecture 1 Slide L1 – 13 Background Distributed Systems: Model-View-Controller Distributed Systems: Model-View-Controller

We use the Model-View-Controller software design pattern to discuss some of these questions in more detail: • The model manages the behaviour and data • The view renders the model into a form suitable for interaction • The controller receives user input and translates it into instructions for the model 2 Where should the behaviour of the model be computed? • Close to the user, on a single computer exclusively used by the user • Away from the user, on a central server (farm) shared by a multitude of users • Distributed, on several computers owned by a large group of users COMP519 Web Programming Lecture 1 Slide L1 – 14 Background Distributed Systems: Model-View-Controller Distributed Systems: Model-View-Controller

We use the Model-View-Controller software design pattern to discuss some of these questions in more detail: • The model manages the behaviour and data • The view renders the model into a form suitable for interaction • The controller receives user input and translates it into instructions for the model 3 Where should the data for the model be held? • Close to the user, on a single computer exclusively used by the user • Away from the user, on a central server (farm) shared by a multitude of users • Distributed, on several computers owned by a large group of users COMP519 Web Programming Lecture 1 Slide L1 – 15 Background Distributed Systems: Model-View-Controller Distributed Systems: Fundamental Questions

• Software developers have to consider a wide, but rather stable, range of questions • The possible answers to each of these questions is also rather stable • The ‘right’ answer to each these questions will depend on • the domain in which the question is posed • available technology • available resources

• The ‘right’ answer to each of the questions changes over time • We may go back and forth between the various answers • The reasons for that are not purely technological, but includes • legal factors • social factors • economic factors

COMP519 Web Programming Lecture 1 Slide L1 – 16 Background Examples NLS

• 1960ies: Computer terminals start to be used to interact with computers • 1968: NLS “oN-Line System” (Douglas Engelbart, SRI)

A ‘networked’ computer system with GUI, off-line mode, ‘e-mail’, collaborative word processing, hypertext, video conferencing and mouse is demonstrated

(The picture shows one of several terminals connected to a mainframe computer) Videos of the demo are available at http://www.youtube.com/watch?v=JfIgzSoTMOs

COMP519 Web Programming Lecture 1 Slide L1 – 17 Background Examples Thin clients, fat clients and cloud clients

• 1970ies: Computer terminals continue to dominate • 1978: DEC VT100 Intel 8080 processor 3 kb main memory Monochrome graphics Like NLS, this is a terminal connected to a mainframe computer via serial lines Key points: • The data is stored on the mainframe computer which also computes the behaviour of the model • The view is computed on the mainframe computer and only displayed on the terminal • The terminal receives user inputs and relays it to the mainframe computer that translates it into instructions for the model • This architecture dominated the industry for about 20 years COMP519 Web Programming Lecture 1 Slide L1 – 18 Background Examples The PC Era

• 1981: IBM PC 5150 • 1983: Apple Lisa First PC with a graphical user interface • 1985: Microsoft Windows 1.0 • 1987: HyperCard Hypermedia system for Mac • 1988: HyperStudio HyperCard clone for MS Windows • 1991: Instant Update Collaborative editor for Mac OS • 1992: CU-SeeMe Video Conferencing Key points: • Model, View and Controller are stored and computed locally on the PC • It took 24 years to catch up with NLS • This architecture dominated the industry for about 20 years

COMP519 Web Programming Lecture 1 Slide L1 – 19 Background Examples The Post-PC Era

• 1992: IBM Simon Personal Communicator (First smartphone) • 1996: Nokia 9000 Communicator • 2007: Apple iPhone Samsung 32-bit RISC ARM 128MB main memory 4-16GB flash memory ‘Apps’ / Web browser

• 2011: Google Chromebook Intel Atom processor 2GB main memory 16GB SSD Web-based applications In effect the Chromebook is a ’terminal’ connected to Google’s servers and others via a wireless network

COMP519 Web Programming Lecture 1 Slide L1 – 20 Background Examples The Post-PC Era

• 2011: Google Chromebook Intel Atom processor 2GB main memory 16GB SSD Web-based applications

Key points: • The data is stored on a server farm (the ‘cloud’) which also computes the behaviour of the model • The view is either computed on a server farm or on the terminal • The terminal receives user inputs and either relays those to the server farm or directly translates it into instructions for the model • This architecture has fought for dominance for 15 years • Will it dominate the future?

COMP519 Web Programming Lecture 1 Slide L1 – 21 Background Examples Thin clients, fat clients and cloud clients

• The Google Chromebook gives very similar answers to the fundamental questions as the DEC VT100 the possible answers to the fundamental questions stay the same • The; PC gave very different answers to the fundamental questions the ‘right’ answers change with time • The; Google Chromebook is more advanced than the DEC VT100 in (almost) every aspect we are not going around in circles, ; we always advance technologically

COMP519 Web Programming Lecture 1 Slide L1 – 22 Background Web Programming versus App Programming Web Programming versus App Programming

• Web Programming relies on web browsers as means to render user interfaces that are coded in HTML/CSS • Web Programming relies on HTTP as the main protocol to exchange information within a distributed system • Web-based apps use a mix of server-side and client-side computing • Web-based apps can be changed almost instantaneously and on a per-user basis • App Programming relies on directly coded ‘native’ interfaces (Swift/Java) • App Programming can rely on arbitrary protocols to exchange information within a distributed system • Programmers have more flexibility and more control when developing ‘traditional’ apps

It is not obvious which approach is better and in which situation COMP519 Web Programming Lecture 1 Slide L1 – 23 COMP519 Web Programming Lecture 2: HTML (HTTP and HTML5 Basics) Handouts

Ullrich Hustadt

Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool Contents

3 HTTP Introduction History Requests Character Encodings 4 HTML Introduction History Elements, Attributes and Values 5 Further Reading

COMP519 Web Programming Lecture 2 Slide L2 – 1 HTTP Introduction HTTP

• Web clients (web browsers) and web servers use HTTP (Hypertext Transfer Protocol) to communicate with each other • More generally, HTTP is an application-layer protocol for distributed systems

COMP519 Web Programming Lecture 2 Slide L2 – 2 HTTP History HTTP: History

• 1991 – HTTP 0.9 first documented version of the protocol • 1996 – HTTP/1.0 first version of HTTP that was an Internet Engineering Task Force (IETF) informational RFC (RFC 1945) HTTP 0.9 and HTTP/1.0 require a separate TCP/IP connection for every resource request • 1997 – HTTP/1.1 first version of HTTP that was an Internet Engineering Task Force (IETF) formal standard (RFC 2068) HTTP/1.1 can reuse a TCP/IP connection to request several resources from the same server • 1997-2014 • 2015

COMP519 Web Programming Lecture 2 Slide L2 – 3 HTTP History HTTP: History

• 1991 – HTTP 0.9 • 1996 – HTTP/1.0 • 1997 – HTTP/1.1 • 1997-2014 Minor improvements and clarifications of HTTP/1.1 are developed • 2015 – HTTP/2 • Major revision of HTTP with focus on efficiency and privacy improvements • HTTP/2 allows a server to push resources to client even before they are requested • HTTP/2 puts more emphasis on encrypted connections

COMP519 Web Programming Lecture 2 Slide L2 – 4 HTTP Requests HTTP Requests

Browser/Client −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−→ Server GET /index.html HTTP/1.1 Host: www.example.com

Browser/Client ←−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Server HTTP/1.1 200 OK Header Date: Mon, 24 Sep 2018 22:38:34 GMT Content-Type: text/html; charset=UTF-8 Content-Encoding: UTF-8 Content-Length: 138 Last-Modified: Wed, 10 Jan 2018 23:11:55 GMT Server: Apache/2.4.34 (Unix) (Red-Hat/Linux) ETag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Connection: close

Message body An Example Page Hello World, this is a very simple HTML document.

Wikipedia Contributors: Wikipedia, The Free Encyclopedia, 16 September 2018 23:26 https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol. [accessed 13 Sep 2017]

COMP519 Web Programming Lecture 2 Slide L2 – 5 HTTP Character Encodings Character Encodings

• Computers operate on bits (0/1) and sequences of bits • To store a text, it needs to be encoded as a sequence of bits To retrieve a text, a sequence of bits needs to be decoded back to a sequence of characters • Early examples of such encodings are • 7-bit ASCII (American Standard Code for Information Interchange) • 8-bit ANSI (American National Standards Institute) • 8-bit Windows-1252 • 8-bit Mac OS Roman • However these allow to encode at most 256 characters the languages of the world contain many more characters ;

COMP519 Web Programming Lecture 2 Slide L2 – 6 HTTP Character Encodings Character Encodings

• UTF-8 is a modern solution to this problem: (Almost?) every known character is mapped to a sequence of 1x8 bits to 4x8 bits • Within UTF-8, ANSI characters retain their encoding

Char ASCII ANSI UTF-8 Mac OS Roman a 1100001 01100001 01100001 01100001 ˆa 11100010 11100010 10001001 ¨a 11100100 11100100 10001010 α 11001001:10100011

• When two systems exchange texts, then they need to agree which encoding they are using A HTTP header uses ASCII ; A HTTP message body can use an arbitrary encoding COMP519; Web Programming Lecture 2 Slide L2 – 7 HTML Introduction Hypertext and HTML

• The Hypertext Markup Language is the language for specifying the static part of a web page / elements of an interface • The terms ‘hypertext’ and ‘hypermedia’ were coined by Ted Nelson in 1963 as part of a model he developed for creating and using linked content • The idea of hypertext is attributed to Vannevar Bush who in in 1945 described a hypothetical hypertext device called Memex in a magazine article • Hypertext documents contain links to other hypertext documents, creating an associative trail that readers can choose to follow • Markup is a general term for special symbols (tags) that are added to to provide additional information about document structure, content type, formatting, etc

COMP519 Web Programming Lecture 2 Slide L2 – 8 HTML History HTML: Chronology

• 1989, Berners-Lee HTML 1 Very basic, limited integration of multimedia added in 1993, web browser Mosaic supported many additional features • 1994, IETF HTML 2.0 Tried to standardize these additional features, but during 1994–96, web browsers Netscape and IE supported many new, divergent features • 1995, IETF HTML 3.0 Proposed, but never received approval • 1996, W3C HTML 3.2 Again attempted to unify all features into a single standard but also dropped some tags that were in HTML 2.0

COMP519 Web Programming Lecture 2 Slide L2 – 9 HTML History HTML: Chronology

• 1997, W3C HTML 4.0 Tried to discourage the use of ‘frames’, dropped Netscape visual tags, and introduced CSS; defined three variants: • Strict: Deprecated elements are forbidden • Transitional: Deprecated elements are allowed • Frameset: Frames are allowed • 1999, W3C HTML 4.01 Minor changes, the three variations are maintained • 2000, ISO ‘ISO HTML’ ISO/IEC 15445:2000, based on HTML 4.01 Strict

COMP519 Web Programming Lecture 2 Slide L2 – 10 HTML History HTML: Chronology

• 2000, W3C XHTML 1.0 Reformulation of all three HTML 4.01 variations in XML Unlike HTML, anyone can define their own tags and attributes Unlike HTML, XHTML requires strict adherence to coding rules • 2001, W3C XHTML 1.1 Based on XHTML 1.0 Strict, introduces modules

COMP519 Web Programming Lecture 2 Slide L2 – 11 HTML History HTML: Chronology

• 2014, W3C HTML5 Shifts the focus from ‘semantically describing scientific documents’ to ‘supporting web applications’ • 2016, W3C HTML 5.1 Adds features for more responsive web apps and improved navigation • 2017, W3C HTML 5.1 2nd Edition

COMP519 Web Programming Lecture 2 Slide L2 – 12 HTML Elements, Attributes and Values Elements, Attributes and Values

• The HTML5 specification defines a set of elements, attributes, and attribute values and their meanings (semantics) (there are more than 100 different elements alone) • Authors of HTML documents should not use elements, attributes, or attribute values for purposes other than their intended semantic purpose otherwise documents might not be processed correctly ; (still, most authors violate this rule) • HTML5 follows the separation of concerns design principle: a system should be divided into parts with functionality that overlaps as little as possible in HTML5 semantics and presentation are (mostly) separated • For; the full specification of the most recent version see S. Faulkner, A. Eicholz, T. Leithead, A. Danilo, editors: HTML 5.1 2nd Edition. W3C Recommendation, 3 October 2017. https://www.w3.org/TR/html51/ (accessed 05 October 2017)

COMP519 Web Programming Lecture 2 Slide L2 – 13 HTML Elements, Attributes and Values Elements, Attributes and Values

• Most elements consist of a start tag and a matching end tag, with some content in between • The general form of a start tag where tagName is a non-empty sequence of alphanumberic ASCII chars, attrib1,. . . ,attribN, N ≥ 0, are attributes and value1,. . . ,valueN, N ≥ 0, are attribute values • A end tag/ closing tag takes the form

Examples: My first HTML document CS Website

COMP519 Web Programming Lecture 2 Slide L2 – 14 HTML Elements, Attributes and Values Elements, Attributes and Values

• So-called void elements only have a start tag area base br col embed hr img input keygen link meta param source track wbr • The start tags of void elements can be made self-closing by ending the tag with /> instead of >, optionally preceded by a space Examples:


• Comments take the form and cannot be nested

COMP519 Web Programming Lecture 2 Slide L2 – 15 HTML Elements, Attributes and Values Elements, Attributes and Values

• HTML5 distinguished between different categories of attributes • Required attributes: needed by elements of a particular type to function correctly • Optional attributes: used to modify the default functionality of an element • Standard attributes: supported by a large number of element types • Event attributes: used to link an element to code that is run if a particular event happens in the element’s context • Standard attributes include: • id: meant to provide a document-wide unique identifier for an element that can be used to refer to that specifc element • class: assigns an element to a named group either for semantic or for presentation purposes • title: assigns a subtextual explanation to an element; in a web browser typically shown if the mouse ‘hovers’ over the element • style: allows to change the presentation of an element

COMP519 Web Programming Lecture 2 Slide L2 – 16 HTML Elements, Attributes and Values Non-ASCII Characters

• The HTML5 specification defines a large number of named characters with the general format &name; allows access to non-ASCII and reserved characters ; Named char Rendered as Named char Rendered as â ˆa < < ä ¨a > >

Examples α α & & • Arbitrary characters can also be accessed using &#dec; and &#xhex; where dec and hex are decimal and hexadecimal encodings for a character Named char Rendered as Named char Rendered as â ˆa < < ä ¨a > >

Examples α α & &

COMP519 Web Programming Lecture 2 Slide L2 – 17 Further Reading Revision and Further Reading

Read • Chapter 1: The Basics of HTML of S. Schafer: Web Standards Programmer’s Reference. Wiley Publishing, 2005. Harold Cohen Library 518.532.S29 or E-book http://library.liv.ac.uk/record=b2174141

COMP519 Web Programming Lecture 2 Slide L2 – 18 COMP519 Web Programming Lecture 3: HTML (HTLM5 Elements: Part 1) Handouts

Ullrich Hustadt

Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool Contents

6 HTML HTML5 Documents The head-element The body-element

7 HTML Elements for the Body Structure Headings Lists Paragraphs Div- and Span-element Address Hyperlinks

8 Further Reading

COMP519 Web Programming Lecture 3 Slide L3 – 1 HTML HTML5 Documents HTML5 Documents

• An HTML5 document has a very simple form: It consists of a DOCTYPE-declaration and an html-element html-element

• An html-element has the form head-element body-element

• It is recommended that the start tag of an html-element specifies the language used in the document

COMP519 Web Programming Lecture 3 Slide L3 – 2 HTML The head-element Head

• The head-element should include a title-element (typically appears in the (tab) title bar of a browser) • The head-element should also include meta data such as the author of the page, a description of its content, keywords • The head-element can also include Cascading Style Sheet (CSS) definitions or links to external style sheets • The head-element can also include JavaScript code or links to files containing such code

The Highway Code

COMP519 Web Programming Lecture 3 Slide L3 – 3 HTML The body-element Body

• The body-element contains the content that is to be displayed by a web browser including • Articles, sections, footers, and navs • Headings • Paragraphs • Lists and tables • Images • The body-element may contain PHP code that is executed by the web server, producing HTML markup, that is then merged with the other content before being send to a web browser • The body-element may contain JavaScript code that reacts to events in the web browser and can dynamically change the content

COMP519 Web Programming Lecture 3 Slide L3 – 4 HTML Elements for the Body Structure Structuring the Body

• An article-element contains text that makes header- sense on its own element • A section-element contains text on the same nav- theme element • A header-element contains introductory text section- for a document, article, or section elements aside- article- element • A footer-element typically contains the elements author of the document, copyright information, footer- links to terms of use, contact information, etc element • A nav-element contains a set of navigation hyperlinks Several of these could be in one body-element • An -element contains related but aside The elements are seman- independent content to the articles/sections tic, not layout related

COMP519 Web Programming Lecture 3 Slide L3 – 5 HTML Elements for the Body Structure Structuring the Body

article-elements and section-elements header- are typically nested inside each other: element • In an HTML document corresponding to a nav- scientific paper one expects several element section-elements (for introduction, section- conclusion, etc) inside one article-element elements aside- • In an HTML document corresponding to a article- element newspaper one expects several elements article-elements (one for each report/story) footer- inside one section-element element The whole newspaper would consist of several section-elements (sport, business, etc)

COMP519 Web Programming Lecture 3 Slide L3 – 6 HTML Elements for the Body Headings Headings

• Sections are meant to be organised into a hierarchy (not necessarily using nested section-elements) • The hierarchy can be up to six levels deep • The heading elements h1 to h6 allow to specify a heading for a section at the corresponding level, with h1 being the highest level and h6 the lowest • Web browsers typically use font-size and font-weight to distinguish between headings at different levels

Fruit

Apples

Colour

Taste

Oranges

Colour

Taste

http://cgi.csc.liv.ac.uk/~ullrich/COMP519/examples/headings.html

COMP519 Web Programming Lecture 3 Slide L3 – 7 HTML Elements for the Body Headings Structure and Headings

Temporal Logic Reasoning

Ullrich Hustadt, University of Liverpool, UK