Make a programming project related to the life cycle of a software application, emphasizing the implementation step.
Person in charge
Alicia Ageno Pulido (
Alejandro Ivan Paz Ortiz (
Borja Valles Fuente (
Guillem Godoy Balil (
Jordi Turmo Borrás (
Juan Francisco Fernandez Carrasco (
Miquel Sanchez Marre (
Ricardo Fernández Domenech (
Salvador Medina Herrera (
Sergio Álvarez Napagao (
G5 [Avaluable] - To be capable to work as a team member, being just one more member or performing management tasks, with the finality of contributing to develop projects in a pragmatic way and with responsibility sense; to assume compromises taking into account the available resources.
- To plan the objectives, operation rules, responsibilities, agenda and review procedure of the work. To identify conflicts, negotiate and solve them in a effective way. To adapt oneself to different kinds of groups (big/small, technical/mixed, same space/at distance). To interact efficiently and promote the participation with other group members.
Entrepreneurship and innovation
G1 [Avaluable] - To know and understand the organization of a company and the sciences which govern its activity; capacity to understand the labour rules and the relation between planning, industrial and business strategies, quality and benefit. To develop creativity, entrepreneur spirit and innovation tendency.
- To have initiatives which generate opportunities, new objects or solutions, with a process and market implementation vision, and to imply other team members in projects which have to be developed (capacity to perform autonomously).
Common technical competencies
CT2 - To use properly theories, procedures and tools in the professional development of the informatics engineering in all its fields (specification, design, implementation, deployment and products evaluation) demonstrating the comprehension of the adopted compromises in the design decisions.
- To design, develop, select and evaluate computer applications, systems and services and, at the same time, ensure its reliability, security and quality in function of ethical principles and the current legislation and normative.
- To demonstrate knowledge and capacity to apply the needed tools for storage, processing and access to the information system, even if they are web-based systems.
- To design and evaluate person-computer interfaces which guarantee the accessibility and usability of computer systems, services and applications.
CT3 - To demonstrate knowledge and comprehension of the organizational, economic and legal context where her work is developed (proper knowledge about the company concept, the institutional and legal framework of the company and its organization and management)
- To demonstrate knowledge about the ethical dimension of the company: in general, the social and corporative responsibility and, concretely, the civil and professional responsibilities of the informatics engineer.
CT4 - To demonstrate knowledge and capacity to apply the basic algorithmic procedures of the computer science technologies to design solutions for problems, analysing the suitability and complexity of the algorithms.
- To identify the most adequate algorithmic solutions to solve medium difficulty problems.
- To reason about the correction and efficiency of an algorithmic solution.
- To demonstrate knowledge and capacity to apply the fundamental principles and the basic techniques of the intelligent systems and its practical application.
CT5 - To analyse, design, build and maintain applications in a robust, secure and efficient way, choosing the most adequate paradigm and programming languages.
- To choose, combine and exploit different programming paradigms, at the moment of building software, taking into account criteria like ease of development, efficiency, portability and maintainability.
- To know, design and use efficiently the most adequate data types and data structures to solve a problem.
- To design, write, test, refine, document and maintain code in an high level programming language to solve programming problems applying algorithmic schemas and using data structures.
- To design the programs¿ architecture using techniques of object orientation, modularization and specification and implementation of abstract data types.
- To use the tools of a software development environment to create and develop applications.
- To demonstrate knowledge and capacity to apply the fundamental principles and basic techniques of parallel, concurrent, distributed and real-time programming.
CT6 - To demonstrate knowledge and comprehension about the internal operation of a computer and about the operation of communications between computers.
- To demonstrate knowledge and capacity to manage and maintain computer systems, services and applications.
CT8 - To plan, conceive, deploy and manage computer projects, services and systems in every field, to lead the start-up, the continuous improvement and to value the economical and social impact.
- To demonstrate the comprehension of the importance of the negotiation, effective working habits, leadership and communication skills in all the software development environments.
- To control project versions and configurations.
Use previously acquired programming skills to develop a medium-sized programming project, select appropriate algorithms and data structures and build a program correctly and efficiently.
Organize the design and implementation work of a medium-sized team (three to four people) according to a predetermined schedule. This organization includes both the overall planning and the allocation of tasks between group members.
Identify program specification, design and implementation components that can be factorised and immediately resolved and use object-orientation (OO) mechanisms for effective factorisation.
Understand object-oriented design and programming principles and the advantages and disadvantages of adopting this programming paradigm.
Use class and inheritance mechanisms to avoid redundancy and capture specification, design and implementation abstractions. They should also understand the advantages of this use of object orientation in terms of reliability, modifiability, portability, reusability and productivity.
Deal effectively with anomalous program situations using, if necessary, the exception mechanism provided by the programming language.
Design a reasonably usable and effective user interface for a program using a GUI library.
ISE review: Specification, class diagrams and use cases.
Life cycles. Project definition. Requirements. Functional specification. Initial domain modelling. UML class (domain) diagram. Use case diagram. Textual explanation. Case study.
Introduction to Java and OO concepts in Java.
Object-oriented (OO) specification, design and programming. Classes, objects, attributes, methods and relationships. Encapsulation and hiding, abstraction and classification, inheritance. Polymorphism, static and dynamic binding. Other relationships: association, aggregation, dependency.
Design and implementation in Java of the Three-tier architecture
The three-tier architecture design paradigm and its Java implementation
Verification. Program testing and debugging. Component testing. Testing and integration strategies. Test planning. Scaffolding and regression tests. Testing help tools (junit). Handling errors and exceptions.
Design patterns in Java
Some of the classical design patterns will be explained and implemented in Java (decorator, state, singleton, etc)
Basic Concepts of Interface design in Java
How to design a simple graphical user interface using Java standard libraries and applying the principles of 3-layer arquitecture
Software development toolchain
There will be an overview of the typical toolchain to develop software: version control (git), testing integration (junit)
Software life cycle review
Review of software engineering concepts and UML.
Practical example of (part of) a first delivery. Objectives:345 Contents:
Implementation principles and design.Students will fully implement the domain model and the basic algorithmic kernel for the project and provide test suites for the implemented part. Objectives:8123645 Week:
Second delivery of the project
Intermediate project delivery. The documentation should include the complete diagram of classes (UML) of the project. Objectives:8123745 Week:
Third delivery of the project
Final project delivery. The documentation should include the full implementation of the project and the test suites as appropriate, and the user manual. Each team will also give a presentation of their project. Objectives:81236745 Week:
Supervision of first assignment
Laboratory classes related to the first assignment. Objectives:8123645 Contents:
Topics will be explained in a practical way through the use of numerous examples.
The theory lessons will introduce the necessary knowledge, techniques and concepts for the course project.
Some of the laboratory classes (probably towards the beginning of the course) will be used to briefly present notations, languages, libraries and tools. In most laboratory classes, however, students take the initiative. A number of hours are available for project groups to work together and to discuss any doubts they have with the lecturer.
The two-hour theory classes and two-hour laboratory classes will take place once a week, except for the last two weeks (laboratory classes only). First week there are no laboratory classes (and there are two theory sessions).
The bulk of work on the subject will be on the project, which will have a strong algorithmic and data structure component.
The approach to implementing this project will be as follows:
- Students (15-20) from a laboratory group will form teams of four.
- Each laboratory group will be assigned a tutor.
- Within each team, a single student will be responsible for class programming and testing.
Given that the project is team work in which all team members (and only team members) must participate, the final project mark will be weighted according to a work factor (FT). This work factor is a score (0 <= FT <= 1) representing the work of each team member. The work factor will be determined on the basis of task distribution within the team (provided at the first and third deliveries) and the final presentation of the team. Work factors will be published together with the last project delivery marks.
Transversal competency in teamwork: Assessment will be based on a simple formula, with the group tutor scoring competency aspects for each team member.
Transversal competency in entrepreneurship and innovation: Assessment will be based on a simple formula, with the group tutor scoring competency aspects for each team member.
Students are expected to be able to:
- Solve medium-difficulty algorithmic problems from clear specifications and implement their solutions in an imperative programming language.
- Understand basic program structuring mechanisms (modularisation, encapsulation, abstract data types, classes) and apply them to small and medium-sized tasks (a small number of modules).
- Understand object-oriented programming elements (classes, objects, execution mechanisms).
- Use an imperative object-oriented language.
- Use and program data structured in this language.
- Use libraries in this language.
- Master basic error location and correction strategies for simple modules.
NO HI HA CANVIS RESPECTE LA INFORMACIÓ PUBLICADA A LA GUIA DOCENT
NO HI HA CANVIS RESPECTE LA INFORMACIÓ PUBLICADA A LA GUIA DOCENT excepte que:
- En cas de restriccions al 50% de presencialitat:
- Les classes de teoria seran virtuals en l'horari establert.
- Les classes de laboratori seran presencials.
NO HI HA CANVIS RESPECTE LA INFORMACIÓ PUBLICADA A LA GUIA DOCENT
- Les classes de laboratori passarien a ser reunions virtuals de el professor de laboratori amb els seus grups de pràctiques en l'horari de la classe de laboratori corresponent.
- La presentació final del projecte passaria a ser virtual.
Where we are
B6 Building Campus Nord
C/Jordi Girona Salgado,1-3
08034 BARCELONA Spain
Tel: (+34) 93 401 70 00