Teaching Assistant – Internet Applications Design and Implementation
Graduate course, NOVA School of Science and Technology | NOVA FCT, Department of Informatics, 2026
2nd Semester of 2025/2026
Overview
I taught laboratory classes for graduate students in the MSc in Computer Science and Engineering. Responsibilities include conducting labs, supporting the development of the course project, providing feedback on submissions, and holding office hours.
Course:
Internet Applications Design and Implementation 2025/2026
Description: This course addresses the architectures, specification methods, and implementation techniques behind modern Internet applications. It covers inversion-of-control architectural patterns, the development of web and single-page applications, the specification and orchestration of web services, the internal structure of the browser as a runtime, data- and user-centric application design, performance and scalability pitfalls, and the specification and implementation of security policies.
The project developed in this course is based on a Kotlin stack with ReactJS and TypeScript for client development. Server-side using Spring Boot, Hibernate, and MySQL — using mainstream tools such as Git, Maven, and modern IDEs.
Learning Objectives
Know:
- Architectural patterns for inversion of control and software architectures specific to Internet applications.
- Principles of developing web applications and single-page web applications.
- Mechanisms for specifying and implementing web services and web service orchestrations.
- The internal structure of an Internet browser and its client applications.
- Principles of data-centric and user-centric development of Internet applications.
- The main data-abstraction mechanisms used in Internet applications.
- Major performance pitfalls of Internet applications and their workarounds.
- Specification and implementation mechanisms for security policies in Internet applications.
Know-how:
- Use development frameworks that implement architectural styles for Internet applications.
- Specify and build web and cloud applications supporting thin, flat, and native clients.
- Specify and build client applications with reactive and rich behaviour.
- Implement authentication mechanisms and specify the core security rules of an Internet application.
- Specify and efficiently use data-abstraction layers such as Object-Relational Mappings.
- Design and deploy Internet applications that are efficient and maintainable.
Syllabus
- Software architecture for Internet applications; inversion-of-control patterns; presentation-abstraction-control; SaaS; web and service-oriented architectures; single-page applications, plugins, and mash-ups; the browser as a virtual machine.
- Specification of web and service applications; data-centric (resource-based) modeling; user-centric specification (IFML); business-process modeling (BPMN); web service orchestration (BPEL).
- Data and control abstractions; REST and SOAP; Object-Relational Mappings (Hibernate, ActiveRecord); relational and NoSQL data layers; data manipulation languages; reactive programming models; OO-based data validation.
- Performance, scalability, and monitoring; ORM pitfalls; load balancing; queuing; caching; search and indexing; logging and monitoring.
- Security of Internet applications; access control models (RBAC); third-party authentication; common attacks (SQL injection, XSS).
Bibliography
- Martin Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
- Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, 3rd edition, Addison-Wesley, 2015.
- Chris Richardson, Microservices Patterns, Manning, 2018.
- Marco Brambilla, Piero Fraternali, Interaction Flow Modeling Language: Model-Driven UI Engineering of Web and Mobile Apps with IFML, Morgan Kaufmann, 2014.
- Robert C. Martin, Clean Architecture: A Craftsman’s Guide to Software Structure and Design, Prentice Hall, 2017.
Prerequisites
Students should be proficient programmers with knowledge of Software Engineering, relational database design, and Distributed Systems.
