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.
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.
- 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.
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).
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.
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.
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.
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.
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.
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
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.
• 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
• 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.
• 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.
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.
• 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.