Internet Programming-LEIC

Course: BSc in Computer Science and Computer Engineering
Curricular Unit (UC)

Internet Programming

Mandatory X
Scientific Area IC
Year: 3rd Semester: 1st ECTS: 6 Total Hours: 160
Contact Hours T: TP: 67.5 PL: S: OT:
Professor in charge

 José Luís Falcão Cascalheira

T - Theoretical; TP - Theory and practice; PL - Laboratory; S - Seminar; OT - Tutorial.

  • Intended learning outcomes

    Students who successfully complete this course unit be able to:

    1. Know the main components of the of the World Wide Web architecture
    2. Understand the HTTP protocol
    3. Demonstrate theoretical and practical knowledge on key standards associated with the client component (web browser)
    4. Know the main presentation patterns used in server component
    5. Understand, use and extend a server technology, with significant industrial adoption, for creating web applications
    6. Design and implement Web applications for small and medium complexity, including authentication features, maintenance of conversation state, viewing and editing data
    7. Software development is group, using a distributed version control system for its support, to maintain the produced software artifacts and its corresponding documentation



  • Syllabus


    I. Architecture of the World Wide Web: Resource Identification (URI), interaction (HTTP) and representation (HTML).

    II. Distribution of web content (HTTP protocol

    III. Support Infrastructures for the creation of user interface in web applications and their programming model.

    IV. Client Component (web browser): description, visual formatting, programmatic manipulation and total and partial updates of the GUI.

    V. Server component: static content distribution, dynamic generation of content; programming model on the server, using the MVC pattern; maintaining state (view, session and application); HTTP requests intercepting.

    VI. Distribution consequences in the programming model and corresponding reference architectures. Caching mechanisms.

    VII. Apply the studied subjects by developing small and medium complexity web applications with support for data persistence.

  • Evidence of the syllabus coherence with the curricular unit’s intended learning outcomes

    For most students, this course represents the first contact with the problems inherent to the development of distributed applications, achieved through the web platform.  The main elements of this platform are introduced (I to III of the syllabus). The client component (web browser) is presented, with its associated standardized technologies (IV). The server component is also described, identifying the key architectural patterns used in its development, which are demonstrated in practice through a web infrastructure with significant industrial adoption (V). The development of a web application with small or medium complexity is used to practice the transmitted concepts and technologies and to put students before some of the problems associated with the development this type of applications (VI and VII).

  • Teaching methodologies

    Theoretical and practical teaching in 30 lectures (15 lessons of 3 hours and 15 1.5 hours). The lectures are intended for presentation and explanation of the topics and their practical application demonstration. The main topics are further explored by developing a web application throughout the semester, in groups of 2 or 3 students. The application development is divided in 3 stages, each one introducing new requirements to incorporate the subjects being presented.

    Learning outcomes (1) to (6) are evaluated individually through the written exam conducted at the end of the semester (E), and through the evaluation of each stage of the practical work delivered during the semester (P). During follow-up of group work performed in practical lectures, the learning outcomes (6) and (7) are also assessed. All learning outcomes are also evaluated in the group final discussion of work group. The final grade is assigned according to the following formula: 40%*E + 60%*P.

  • Evidence of the teaching methodologies coherence with the curricular unit’s intended learning outcomes (3.000 characters).

    In theoretical sessions the basic concepts for developing web applications are presented. In practice sessions, these concepts are complemented with examples related to the practical work, practiced and consolidated in its development. The stages of the practical work gradually increase complexity, in order to incorporate the new themes addressed throughout the semester. At each stage online documentation is made available, incorporated in the version control system used. This documentation includes the implemented features and decisions made at each stage. In the final stage, documentation is created in the form of a final report, which describes the work entirely, its architecture, implementation decisions and their corresponding rationales.

  • Main Bibliography:


    • W3C Technical Architecture Group, Architecture of the World Wide Web, Volume One,, 2004.
    • Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616.
    • M. Haverbeke, Eloquent JavaScript: A Modern Introduction to Programming, No Starch Press, 2011. ISBN 9781593272821,
    • J. Wilson, Node.js 8 the Right Way: Practical, Server-Side JavaScript That Scales, The Pragmatic Bookshelf, 2017. ISBN 9781937785734