DATABASES AND WEB PROGRAMMING A - L

Academic Year 2020/2021 - 3° Year
Teaching Staff Credit Value: 12
Scientific field: ING-INF/05 - Information processing systems
Taught classes: 70 hours
Exercise: 30 hours
Term / Semester: 1° and 2°

Learning Objectives

  • Database

    The course covers the fundamental concepts of management and design of database systems. Topics include data models (ER and relational); query languages (SQL);
    implementation techniques of database management systems (index structures and nd query processing); noSQL databases.

    The learning objectives of the course, expressed according to the Dublin descriptors, are:

    Knowledge and understanding

    a) To understand the main concepts of management and design of database systems
    b) To understand concepts and tools for querying databases of different nature (therefore with structured and unstructured data) and at different scales
    c) To understandi the role and the impact that data and their correct modeling may have on software applications using them

    Applying knowledge and understanding

    a) To be able to design, starting from the requirements, a relational (and non) relational database, from a conceptual, logical and physical point of view.

    b) To be able to understand and use the SQL language to manage data and perform efficient queries.

    c) To be able to create and query unstructured databases (NoSQL) by manipulating JSON documents

  • Web Programming

    The module deals with the methodological tools for the design of modern web-based information systems (Web Information Systems). In particular the module covers concepts for designing and developing the back-end (server-side programming) and front-end (client-side programming) of a web application. Particular emphasis will be given to the development of "responsive" front-ends The module covers also design and implementation techniques based on the Model-View-Controller (MVC) architectural pattern.

    The module will finally presents elements on programming techniques for the implementation of interactive GUIs (e.g., AngularJS and React) and hybrid applications for mobile (e.g., Ionic).

    The learning objectives of the course, expressed according to the Dublin descriptors, are:

    Knowledge and understanding

    • Understanding the main design concepts of Web Information Systems
    • Understanding concepts and tools for the development of efficient back-end components and function front-end interfaces, that satisfy project requirements
    • Understanding concepts and tools that support separation of responsibilities, roles and code reuse in the development of a web application

    Applying knowledge and understanding

    • Designing and implementing a multi-platform and multi-device web application, on both the client side and the server side
    • Implementing web applications that handle data interaction (DBMS) and the integration with other web systems (REST API)
    • Designing and implementing the user experience of a web application

Course Structure

  • Database

    Lectures, hands-on exercises, laboratory and seminars.

    Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

  • Web Programming

    Lectures, hands-on exercises, laboratory and seminars.

    Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.


Detailed Course Content

  • Database

    Models and Languages for Database Management

    • Fundamentals of Database Management Systems (DBMS)
    • Relational databases:
      • Relational Model: basic concepts, integrity* constraints and keys*.
      • SQL language: data definition*, data modification*, queries*, views*, transactions*.
      • Advanced SQL: triggers*, procedures* and assertions
      • An example of relational DMBS: MySQL.
    • Database NoSQL: JSON*
      • ACID vs BASE*
      • "Scheme-less"* models
      • NoSQL DB types*: key-value, document-based, column-based and graph-based
      • CAP Theorem*
      • Overview of NoSQL frameworks: MongoDB, Redis, Cassandra, HBase, Neo4j
      • MongoDB*: Selectors, Search, Sort, Pipeline, Grouping

    Design of databases

    • Conceptual design: E/R model*, conceptual design strategies*, quality verification.
    • Logical design: restructuring of the E / R schemes,* translation into the relational model*.
    • Physical design: storage structures for tables and indices*. Hashing techniques. Query execution and optimization
    • Database normalization: normal forms*

    * Topics to know and understand to pass the exam.

  • Web Programming

    * Essential skills required to pass the course

    Foundations of web programming and server-side development *

    • HTML, CSS and Document Object Model (DOM)
    • Apache-MySQL-Php
    • HTML and PHP: forms, sessions, cookies
    • PHP: Variables, Arrays, Procedures, Interaction with HTML Forms, GET e POST methods, sessions, cookies
    • Database access with PHP

    Web information Systems design and client-side application development *

    • Javascript: forms, functions, object model (window, document, form objects), events
    • Page manipulation: CSS Selectors, Positition selectors and operations with objects (DOM manipulation)
    • AJAX: asynchronous requests, texf/HTML/JSON responses
    • The MVC (Model-View-Controller) pattern: examples of software design within an MVC-based framework

    Advanced Web Programming Techniques

    • Design and implementazione of interactive GUI (e.g., AngularJS, React)
    • Design and implementation of hybrid apps for mobile (e.g., Ionic)

Textbook Information

  • Database

    1. Basi di dati - 4/ed, Modelli e linguaggi di interrogazione. Di: Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone, Casa editrice: Mc-Graw-HIll

    2. Teaching materials provided by the instructor

  • Web Programming

    Instructor notes