Applications Engineering


Application Architectures (Sem. 2)

Learning outcomes

a) to analise and know the most important structural and behavioural software patterns for complex and large
scale systems.
b) acquire knowledge on how to develop multi-tier software systems, allowing independent and controlled
evolution from its components.
c) acquire knowledge on the application server concept and technologies involved. To be able to chose the
ideal programming model in order to provide service parametrization to the envisaged architecture.

Syllabus

Architectural Definition of a Software System: structural and behavioural patterns. Advanced topics on object
oriented programming. Service Oriented Architectures. Component based programming.
Multi-tier programming: usage of application servers as a runnable context.
Development strategies to enforce layer independency and autonomous evolution. Concurrent Programming.
Building services as an interoperability strategy.

Teaching methodologies and evaluation

- Formal lectures with presentation of the state of the art and analysis of small case studies.
- group work practical assignments, with software tools support when appropriate.
- Group work on a project with tutorial guidance.
The evaluation process aims at determining, not only the level of knowledge in the different subjects
addressed on the course, but also the students capability of integrating and applying them. The evaluation
consists of two components: a written exam and a group project.
The final mark with be the result of the weighed average of the marks of the two components.

Bibliography

1. Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph
Johnson, John M. Vlissides, November 1994.
2. MDA Explained: The Model Driven Architecture: Practice and Promise, Anneke Kleppe, Jos Warmer, Wim
Bast, Addison-Wesley Professional, May 2003
3. Java Persistence with Hibernate, Christian Bauer, Gavin King, Manning Publications, 2007
4. Enterprise JavaBeans, 3.0, Bill Burke, Richard Monson-Haefel, O'Reilly, May 2006
5. Artigos científicos relevantes a definir em cada ano lectivo/relevant papers (to be defined on an anual basis).

Database Administration (Sem. 1)

Learning outcomes

Recognize and explain the main performance, reliability, and scale challenges in data management systems.
Recall and describe query processing and transactional mechanisms in database management systems.
Plan and apply data management solutions that combine, compose, and configure data management
mechanisms.
Estimate and assess the behavior of data management systems.

Syllabus

Introduction: Architecture of a database management system; characterization of target applications; main
performance, reliability, and scale challenges.
Query processing: Physical data structures; iteration and relational operators; redundancy with indexes and
materialized views; query planning and optimization.
Isolation and recovery: concurrency anomalies; locking and multi-version; performance and optimization
strategies; atomicity vs durability; logging and checkpointing; backups.
“Big Data”: replication and partitioning (“sharding”) in relational/transactional systems; distributed database
systems (NoSQL); data models, indexing and materialization;distributed execution with “map-reduce”.
Case studies: OLTP benchmarks (e.g. TPC-C) and exploratory data analisys application; PostgreSQL and
HBase.

Teaching methodologies and evaluation

Lecturing of main theoretical concepts and live demonstration of key mechanisms and systems to be used.
Incremental development, analysis, and optimization of a toy benchmark applicaiton, following a script during
contact hours, highlighting main challenges and solutions.
Autonomous group project, analysing and optimizing a realistically sized application (e.g., an open source
implementation of a TPC benchmark).
Evaluation and grading includes two components: individual written exam and group project.

Bibliography

H. Garcia-Molina, J. Ullman and J. Widom. Database Systems: The Complete Book. Prentice-Hall, 2006 (2nd
Edition).
J. Gray and A. Reuter. Transaction processing: Concepts and techniques. Morgan-Kaufmann, 1993.
B. Charron-Bost, F. Pedone, A. Schipér (Eds.) Replication: Theory and Practice. Springer, 2010.

Data-Center Infrastructure (Sem. 1)

Learning outcomes

To understand and explain the trade-offs between cost, performance and dependability in datacenter design
and implementation.
Ability to select the appropriate technology for each scenario.
Use redundancy, virtualization and centralized management mechanisms in the conception, implementation
and operation of a data-center.
Understand and establish infrastructures capacities in order to timely upgrade or scale them.
Ability to identify the bottlenecks of the infrastructures.

Syllabus

Data Storage Infrastructure:
NAS/SAN (Network Attached Storage / Storage Area Network)
RAID;
Physical volume management;
Filesystems
key-value stores
Backup and restore policies
Services Infrastructure:
Redundant services;
Servers virtualization;
Management and monitoring:
Systems management
Performance analysis
Monitoring
Services and infrastructure security

Teaching methodologies and evaluation

The lectures will present both the subjects of the course and self contained problems related to the subjects
being studied.
There will be some exercises or projects aiming at solving and implementing the presented problems.
For the final classification both the practical problems implementation reports and the written exam will be
accounted.

Bibliography

• Load Balancing Servers, Firewalls, and Caches, Chandra Kopparapu, Wiley
• Storage Area Network Essentials, Richard barker, Paul Massiglia, Wiley, 2000
• Blueprints for High Availability, Evan Marcus, Hal Stern Wiley
• LDAP System Administration, Gerald Carter, O'Reilly
• DNS and BIND, Paul Albitz, Cricket Liu, O'Reilly
• LDAP System Administration, Gerald Carter, O'Reilly
• Virtual Private Networks, Charlie Scott, Paul Wolfe, Mike Erwin, O'Reilly
• The Art of Capacity Planning, John Allspaw, O’Rilley

Interactive Systems (Sem. 2)

Learning outcomes

• The ability to design user interfaces
• Saber avaliar as interfaces concebidas recorrendo às técnicas mais apropriadas
• Compreender e explorar diferentes técnicas de desenvolvimento de camadas interactivas
• Saber desenvolver camadas de apresentação que permitam evolução controlada e independente das
camadas de lógica e de dados.

Syllabus

• Human-Computer Interaction: fundamentals of HCI (definition of usability, Norman's interaction model), usercentered development.
• Model-based user interfaces development: the Cameleon reference framework; modeling domain, tasks,
abstract and concrete interfaces, the UsiXML language; user interface prototyping (low vs. high fidelity
prototypes), device independence and adaptation; design patterns.
• Web development: 'server side' vs. 'client side' technologies; 'server side' development (HTML5, CSS, JSP),
'client side' development (DOM, Javascript), synchronous vs. asynchronous interfaces (AJAX).
• Evaluation of user interfaces: empirical vs. analytical evaluation, evaluation by inspection; model based
evaluation.

Teaching methodologies and evaluation

Theoretical classes to introduce students to the different topics in the syllabus, and Laboratory classes were
students will carry out mini-projects in order to consolidate knowldge. Written exam plus a group assignment.

Bibliography

• Human-Computer Interaction, third edition. Dix et al. (2004), Pearson/Prentice-Hall.
• Designing Interfaces, 2nd edition. Jenifer Tidwell (2011), O'Reilly.
• Professional JavaScript for Web Developers. Zakas (2005), Wrox.
• Artigos e capítulos de livro a seleccionar numa base anual.