ECTS credits ECTS credits: 4.5
ECTS Hours Rules/Memories Student's work ECTS: 70.5 Hours of tutorials: 2 Expository Class: 10 Interactive Classroom: 30 Total: 112.5
Use languages Spanish, Galician
Type: Ordinary Degree Subject RD 1393/2007 - 822/2021
Departments: Electronics and Computing
Areas: Computer Science and Artificial Intelligence
Center Higher Technical Engineering School
Call: First Semester
Teaching: With teaching
Enrolment: Enrollable
The objective of this subject is to train students in the development of applications based on the concept of service. Thus, students will be able, on the one hand, to identify situations for which the use of stateless service-based architectures provides an ideal solution, and on the other hand, to practically use current technology for the design and implementation of stateless services, as well as the development of clients that consume such services. More specifically, the specific objectives of the subject are the following:
OBJ 1. Understand the concept of service.
OBJ 2. Know the principles and architectural styles based on services.
OBJ 3. Comprehend the concept of stateless services.
OBJ 4. Understand the characteristics of stateless applications.
OBJ 5. Design and develop service APIs.
OBJ 6. Adopt standards and best practices for the development of a service API.
OBJ 7. Design and develop client applications based on service APIs.
THEORY
Topic 1. Introduction to Service Engineering. Historical context.
a. Client-server architectures
b. RPC
c. Service-oriented architectures
Topic 2. Distributed components and architectural styles. SOAP and REST
Topic 3. Concept of service. Stateless services.
a. Resources
b. HTTP verbs
c. Status codes
d. HTTP headers and messages
Topic 4. Service design: best practices.
a. Documentation of stateless services
Topic 5. Design patterns for service-based applications.
a. Caches
b. Versioning
c. Layered design
d. SLAs and usage rates
e. Security in stateless services
Topic 6. Technology for the development of service-based applications.
PRACTICES
The practical part of the subject will consist of the development of a project, in small groups (2/3 people), in which students must propose and develop an application based on REST services. The development of this application will be guided by the professor during interactive sessions. In the development of this application, students must follow the principles presented in the expository classes, and the professor will provide the necessary feedback to ensure equivalent complexity in all projects.
BIBLIOGRAPHY
MASSE, Mark. REST API Design Rulebook. 1st Edition, O'Really Media, 2011. ISBN: 978-1449310509.
RICHARDSON, Leonard, AMUNDSEN, Mike. RESTful Web APIs, 1st Edition, O’Really Media, 2013. ISBN: 978-1449358068.
MADDEN, Neil, API Security in Action. 1st Edition, Manning, 2020. ISBN: 978-1617296024.
SUPPLEMENTARY BIBLIOGRAPHY
ALLAMARAJU, Subbu. RESTful Web Services Cookbook, 1st Edition. O’Really Media, 2010. ISBN: 978-0596801687.
GUTIERREZ, Felipe. Pro Spring Boot 3: An Authoritative Guide with Best Practices, 3rd Edition. Apress, 2024. ISBN: 978-1484292938
WIERUCH, Robin. The Road to React. 2025 Edition. https://www.roadtoreact.com/
Here's the English translation, maintaining the format:
The student will acquire a set of specific competencies in service engineering, as well as a series of generic competencies applicable to any software program development, and finally, some transversal competencies that impact the student's personal skills and their interactions with other students. Given this, the competencies are as follows:
BASIC AND GENERAL
CB03 - That students have the ability to gather and interpret relevant data (usually within their area of study) to make judgments that include a reflection on relevant social, scientific, or ethical issues.
CG04 - Ability to define, evaluate, and select hardware and software platforms for the development and execution of computer systems, services, and applications.
CG05 - Ability to conceive, develop, and maintain computer systems, services, and applications using software engineering methods as an instrument to ensure their quality, in accordance with the acquired knowledge.
CG06 - Ability to conceive and develop centralized or distributed computer systems or architectures integrating hardware, software, and networks in accordance with the acquired knowledge.
CG8 - Knowledge of basic subjects and technologies, which enable learning and development of new methods and technologies, as well as those that provide great versatility to adapt to new situations.
TRANSVERSAL
TR01 - Instrumental: Ability to analyze and synthesize. Ability to organize and plan. Oral and written communication in Galician, Spanish, and English. Information management skills. Problem-solving. Decision-making.
TR02 - Personal: Teamwork. Work in a multidisciplinary and multilingual team. Interpersonal skills. Critical reasoning. Ethical commitment.
TR03 - Systemic: Autonomous learning. Adaptation to new situations. Creativity. Initiative and entrepreneurial spirit. Motivation for quality. Sensitivity towards environmental issues.
SPECIFIC
RI1 - Ability to design, develop, select, and evaluate computer applications and systems.
RI8 - Ability to analyze, design, build, and maintain applications robustly, securely, and efficiently, choosing the most appropriate paradigm and programming languages.
RI11 - Knowledge and application of the characteristics, functionalities, and structure of Distributed Systems, Computer Networks, and the Internet, and the ability to design and implement applications based on them.
RI13 - Knowledge and application of the necessary tools for storing, processing, and accessing Information Systems, including web-based ones.
TI2 - Ability to select, design, deploy, integrate, evaluate, manage, and maintain software technologies within appropriate cost and quality parameters.
TI5 - Ability to select, deploy, integrate, and manage information systems that meet organizational needs, with identified cost and quality criteria.
TI6 - Ability to conceive systems, applications, and services based on network technologies, including the Internet, web, e-commerce, multimedia, interactive services, and mobile computing.
The teaching methodology focuses on the practical aspects of service engineering and the concepts that differentiate these architectures from other approaches. Therefore, students should be able to understand the advantages and disadvantages of using services and to competently develop a program following this paradigm. With this in mind, two types of learning activities are distinguished: lectures and practical sessions in small groups. Thus:
(i) Lectures (10 hours): These are aimed at explaining the concepts that support service engineering, emphasizing (a) the advantages that service-based architectures offer compared to other distributed paradigms; and (b) the types of problems they solve. These concepts are approached, on the one hand, theoretically, independent of languages and technologies, and on the other hand, by exemplifying the most widely used technologies and implementations today. These sessions will be complemented by the resolution of practical cases in REST API design.
(ii) Practical Sessions in Small Groups (30 hours): These sessions are designed for students to acquire proficiency in the design, description, and implementation of stateless service APIs, as well as their invocation from different types of clients. In these practical sessions, students will develop, in small groups, a project of a certain complexity that demonstrates the usefulness of service engineering for solving distributed problems. Attendance at these classes by students is MANDATORY (Article 1c of the Regulations on class attendance in official bachelor's and master's degrees at USC).
Considering this teaching methodology, competencies RI1, RI8, RI11, RI13, TI2, TI5, TI6, CG4, and CG6 have specific content associated with the theoretical and practical parts of a subject like Service Engineering, which extends web architecture design methodologies to provide greater flexibility and scalability. Furthermore, it should be noted that service architectures and solutions are part of modern information systems implemented in companies.
On the other hand, competencies TI2 and CG5 will be worked on in the practical part of the subject, with a special emphasis on the development of services that meet the standards of flexibility and low coupling inherent in service engineering.
Finally, competency TR1 will be addressed in both parts, either through the resolution of theoretical cases or in the development of the project where students must face the problems presented and synthesize the concepts of Service Engineering; competency TR2 will be addressed during practical sessions, where students will develop a project in pairs; and competency TR3 will be addressed in the practical part, as it is where students must adapt to a new paradigm and propose a problem that is both interesting and realistic to them.
The subject's assessment will take place in three different, yet complementary, ways. These methods aim to evaluate the student's practical competence in implementing solutions based on service engineering and their mastery of the theoretical concepts of this discipline.
ORDINARY OPPORTUNITY
(1) Resolution of practical cases during lecture hours. Students will need to design a solution to a proposed problem, adhering to specific restrictions given by the professor and focusing on a particular aspect of service API design. A total of 3 such activities will be completed throughout the course: the first after covering topic 3b, the second upon completion of topic 3, and the third after finishing topic 5. These activities, avaliable but not mandatory (Article 1a of the USC Regulations on class attendance for official bachelor's and master's degrees), will allow for the evaluation of the internalization of the theoretical concepts presented, and will account for 20% of the final subject grade. To ensure all students can participate in this grading, the completion date for the exercises will be announced both in class and via the Virtual Campus with a minimum of one week's notice. Furthermore, the grades for these exercises will be provided, at the latest, two weeks after the submission date.
(2) Final exam. This exam will involve solving a complex practical case (similar to those developed during the course but less focused on a specific aspect of API design). Students will need to demonstrate their mastery of all concepts related to the design of service-based applications. This exam will constitute 20% of the final grade and passing it is an ESSENTIAL REQUIREMENT TO PASS THE SUBJECT.
(3) Completion of a project in small groups (2/3 people) where students will implement a REST service-based application. This project will have a single submission, at the end of the semester, and a presentation in class to classmates and the professor. The presentation will be assessed based on the complexity, detail, and correctness of the proposed solution's service-oriented design. The grade for this part will be divided between a grade awarded by the other groups (30%) and by the professor (70%), and will constitute 60% of the final grade for the subject. The project grade will be provided, at the latest, two weeks after the submission date, and always ensuring a minimum of 2 weeks' notice before the final exam date. IT IS ESSENTIAL TO PASS THIS PART OF THE ASSESSMENT TO PASS THE SUBJECT.
ATTENDANCE CONTROL
Attendance at a minimum of 80% of the interactive session hours is OBLIGATORY (Article 1 of the USC Regulations on class attendance for official bachelor's and master's degrees), as project development will be guided during these sessions and advice will be provided to ensure applications of similar complexity. Attendance will be tracked via signature sheets that students must complete at the end of each session. Any student who does not attend a minimum of 80% of the interactive hours will be considered "NOT PRESENTED".
EXTRAORDINARY OPPORTUNITY
In the extraordinary opportunity, only parts 2 and 3 will be evaluated, so the weight of the final exam increases to 40%. The project (part (3)) will be carried out individually and its evaluation will be solely by the professor, maintaining a weight of 60% in the final grade. Additionally, if a student passes either the theoretical or practical component in the ordinary opportunity, that grade will be retained for the extraordinary opportunity.
In the event of fraudulent completion of exercises or tests, the provisions of the Regulations on the evaluation of students' academic performance and grade review will apply.
In accordance with the ETSE Plagiarism Policy (approved by the ETSE Board on 12/19/2019), total or partial copying of any practical or theoretical exercise will result in a failing grade for both opportunities of the course, with a grade of 0.0 in both cases.
As previously indicated, attendance at practical sessions is mandatory, and active participation is also expected to make the most of the time. In addition to this, students will need extra time to work on the following aspects:
Theoretical Instruction (10 hours): This time is dedicated to presenting theoretical concepts related to the design of service-based applications and to solving cases and discussing solutions applied to real-world scenarios.
Interactive Instruction (30 hours): This time is for project development during interactive sessions, meaning the design and implementation of the service-based application and its presentation to the rest of the students. During these sessions, feedback on project development will also be provided, and students can directly ask questions to the professor to solidify the concepts used in the project.
Student Personal Work (71.5 hours): This time is necessary for students to complete parts of the project that they won't have time to finish during the practical sessions. During this period, students can internalize the concepts of service-oriented architectures and how to apply them to solve a real project. This is because interactive sessions focus more on understanding the project and the general approach to solving it, while the detailed work needed to complete it must be done during this additional practical work time.
To truly benefit from this subject and grasp the concepts of Service Engineering with some fluidity, it's highly advisable to make the most of both the theoretical classes and practical sessions. As outlined in the syllabus and teaching methodology, these activities are directly interconnected. It's also strongly recommended that students explore the supplementary materials provided (web pages on technology, online courses for development environments, descriptions of successful case studies, etc.). These resources offer additional explanations beyond what's covered in face-to-face classes, helping to solidify and deepen understanding of Service Engineering and stateless service development. Finally, while not strictly necessary, it's recommended to have previously taken courses in Web Application Development, Distributed Computing, and Security.
In this subject, the virtual campus will be used extensively for providing content, making announcements, and resolving student queries. The preferred language for teaching the classes is Galician.
Victor Jose Gallego Fontenla
Coordinador/a- Department
- Electronics and Computing
- Area
- Computer Science and Artificial Intelligence
- Phone
- 881815520
- victorjose.gallego [at] usc.es
- Category
- Professor: Intern Assistant LOSU
Wednesday | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Galician | IA.04 |
Thursday | |||
16:00-17:00 | Grupo /CLE_01 | Galician | IA.S1 |
01.16.2026 10:00-14:00 | Grupo /CLIL_01 | IA.11 |
01.16.2026 10:00-14:00 | Grupo /CLE_01 | IA.11 |
06.30.2026 10:00-14:00 | Grupo /CLIL_01 | Classroom A2 |
06.30.2026 10:00-14:00 | Grupo /CLE_01 | Classroom A2 |