Programming II (261063)

Learning Outcomes

This course aims to teach students to understand and master the concepts
and techniques inherent to the development of dynamic pages for the web,
using relational databases. In short, have contact for the first time with the
main concepts and technologies used in back-end development. Students are
expected to:
• Understand the architecture and operation of web servers and aspects related to its management;
• Analyze the current development ecosystem for the web, mainly in terms of front and back-end development;
• Examine major existing technologies for the development of dynamic pages;
• Acquire theoretical and practical knowledge of the technologies, including communication mechanisms with databases;
• Understand the theoretical foundations necessary for analysis and design of relational databases;
• Design and implement systems for enabling web content management;
• Build a technological background that enables understanding of the concepts inherent in the development of JavaScript pages;
• Know the syntax, the lexicon and the JavaScript semantics;
• Consolidate the development of dynamic web pages of moderate complexity, using databases;
• Apply the knowledge gained in the development of a group project.

Study Program

Unit I. Introduction to the development of dynamic pages for the Web
• Architecture and operation of dynamic pages systems?
• Analysis of the main technologies used in the area?
• Review of the main concepts of JavaScript;
• Framework concept and Model-View-Controller (MVC) design pattern;

Unit II. Development of dynamic pages using Node.js and databases:
• Introduction to NodeJS, NPM and Express framework;
• Express routing and middleware, mainly in terms of communication and authentication management;
• Template engines in NodeJS;
• Development of dynamic pages using DB;
• Design and implementation of web app to content management;

Unit III. Analysis, design and implementation of relational databases:
• Theoretical foundations related to databases and the RDBMS?
• Strategies for analysis and design of relational databases?
• Implementation of relational databases using the SQL language.

Unit IV. Containerization of servers:
• Introduction to containerization;
• Virtual machines vs containerization vs kubernets;
• Installing and configuring Docker;
• Creation and use of containers including a web server and DBR;

Bibliography

MAIN REFERENCES: 

Abreu, L. (2016). Node.js - Construção de Aplicações Web. Lisboa: FCA.
Herron, D. (2020) Node.js Web Development: Server-side web development made easy with Node 14 using practical examples (5th Ed.). Packt Publishing.
Flanagan, D. (2020) JavaScript: The Definitive Guide: Master the World's Most-Used Programming Language (7th Ed.). O’Reilly Media.
Queirós, R., & Portela, F. (2020) Desenvolvimento Avançado para a Web - Do Front-End ao Back-End. Lisboa: FCA.