Metodología de la Programación
- Prácticas de Laboratorio (28 Hours)
- Clases Expositivas (21 Hours)
- Prácticas de Aula/Semina (7 Hours)
- Tutorías Grupales (2 Hours)
This subject is part of the Programming field of study, being a Basic Core Formation module. It is taught after the Introduction to Programming subject of the first semester.
Other subjects included in the Programming field of study are Data Structures, Programming Technologies and Paradigms, Algorithms, Programming Languages Design, Entertainment Software and Videogames, Software for Mobile Devices and Software for Robots.
This subject is taught in the second semester of the first year. Its 6 ECTS credits imply 150 working hours, where 60 of them are classroom hours and 90 should be used as individual work.
The 60 classroom hours are taught the following way. Each week, there are 2 hours of theory (up to 21 hours), a seminar hour (up to 7 hours) and 2 hours of laboratory classes (up to 29 hours). Besides, 2 hours will be used for group tutorials.
The subject tackles object-oriented programming, programming methodology and an introduction to multi-threading programming.
The major requirement is to have fulfilled (totally of partially) the learning objectives of the subject Introduction to Programming taught in the first semester of the first year.
Competences
The competences to be achieved by the student after taking this subject are part of those competences defined in the degree in Software Engineering. In some cases these general competences are divided to specify which part of the general competence should be acquired by the student.
1- Specific Competences
Bas.3 | Ability to understand and master the basic concepts of discrete mathematics, logic, algorithms y computational complexity, and their application to solve engineering problems. |
Com.6 | Knowledge and application of the basic algorithmic procedures of the basic computer science technologies used to design solutions, analyzing the suitability and complexity of the proposed algorithms. |
Com.7 | Knowledge, design and use, in an efficient way, of the most appropriate types and data structures to solve a programming problem. |
Com.8 | Ability to analyze, design, build and maintain applications in a robust, secure, safe and efficient way, choosing the most appropriate paradigm and programming language. |
Com.14 | Knowledge and application of the basic principles and techniques of the parallel, concurrent, distributed and real time programming. |
2- General Competences
CG3 | Ability for Abstraction |
CG4 | Analysis and synthesis |
CG5 | Competence to analyze, select and use basic and support software tools. |
CG11 | Competence to work in group. |
CG20 | Creativity |
CG22 | Ability to plan and organize. |
CG25 | Critical reasoning. |
CG26 | Ability to learn and work in an autonomous way. |
CG28 | Motivation for quality. |
3-Learning Results
RA.P-1 | Knowledge of the basic use of computers, programming, and engineering programs. [CG-5] |
RA.P-3 | Analyze, design, implement, select, evaluate and maintain computer applications and systems, assuring their reliability and quality by applying the theories, principles, methods and practices of software engineering. The most appropriate paradigm and programming language should be chosen considering limitations in cost, time, existence of previously developed systems, and the organization limitations themselves. [Com.8] [CG-3] [CG-4] [CG-11] [CG-20] [CG-26] [CG-28] |
RA.P-4 | Knowledge and application of the basic algorithmic procedures of the basic computer science technologies used to design solutions, analyzing the suitability and complexity of the proposed algorithms. [Bas.3] [Com.6] [Com.7] [CG-3] |
RA.P-5 | Knowledge and application of the basic principles and techniques of the parallel, concurrent, distributed and real time programming. [Com.14] [CG-11] |
RA.P-6 | Ability to solve integration problems based on strategies. Available standards and technologies. [CG-4] [CG-22] |
RA.P-8 | Know the new technologies used by programming languages, analysis of their tendency and judgment capacity for the analysis of new technologies and paradigms. [CG-25] |
The aforementioned competences mean that students should be able to:
Bas.3 Ability to understand and dominate the basic concepts of discrete mathematics, logic, algorithms and computational complexity, and their application to solve engineering problems.
- Understand and be able to use algorithms in the object-oriented paradigm
- Apply the different abstraction levels that an algorithm can be expressed in
Com.6 Knowledge and application of the basic algorithmic procedures of the basic computer science technologies used to design solutions, analyzing the suitability and complexity of the proposed algorithms.
- Know and apply the main search algorithms
- Be able to appropriately apply algorithms to solve programming problems
Com.7 Knowledge, design and utilization, in an efficient way, of the most appropriate types and data structures for solving a programming problem.
- Know the concept of list, stack and queue, their basic operations and their applications
- Understand the necessity of using dynamic data structures, assimilate the concept and its applications
- Understand the management of runtime errors using exceptions
- Understand the necessity to save information in persistent stores. Know the concept of file and its types. Know the operations to be done with them and understand their behavior.
- Know how to represent different types of information in a specific problem, making use of the suitable data structure
Com.8 Ability to analyze, design, build and maintain applications in a robust, secure, safe and efficient way, choosing the most appropriate paradigm and programming language.
- Analyze programming problems setting out detailed specifications
- Know and apply the different steps in the development of an application.
- Be able to build applications regardless the programming language used
- Understand the different steps in the analysis and design of an application using specific UML diagrams
- Obtain experience in the use of automatic documentation generation tools
- Be able to implement, in a sensible period of time, correct programs using efficient and well-documented unit testing
- Design and implement tests that verify the reliability of a program (functional code, data integrity and runtime performance)
- Beabletousedebuggers
- Apply the object model and understand its benefits over the procedural paradigm
- Get good programming habits
Com.14 Knowledge and application of the basic principles and techniques of the parallel, concurrent, distributed and real time programming.
- Obtain a general global vision of concurrent programming
Know the benefits of concurrent programming
The Object Oriented Paradigm
Foundations of the Object Oriented Paradigm
Inheritance
Polymorphism
Interfaces
2. Introduction to the Programming Methodology
Analysis and Design
Foundations of UML
Design, implementation and documentation guidelines
3. Basic Data Structures
Collections (lists, stacks, queues)
Basic search algorithms
4. Management of runtime errors
Runtime errors
Basic techniques to manage runtime errors
Runtime exceptions
5. Persistence, serialization, input/output
Syntax and I/O classes
6. Introduction to Multi-Threading Programming
The following table shows the competences to be acquired:
Topic | Specific Competences | General Competencies |
1 | Bas.3, Com.8, Com.6 | CG3 |
2 | Com.8 | CG3, CG4, CG5, CG25, CG28, CG20 |
3 | Bas.3, Com.7, Com.6 | CG4, CG11, CG25 |
4 | Bas.3, Com.7, Com.6 | CG26 |
5 | Bas.3, Com.7 | CG22 |
6 | Com.14 | CG4, CG3 |
"Exceptionally, if sanitary conditions require it, non-classroom teaching activities may be included. In which case, the students will be informed of the changes made. ”
Type | Hours | % | Total | |
In class | Theoretical classes | 21 | 14 | 60 |
Classroom practice / seminars / workshops | 7 | 4,7 | ||
Laboratory classes | 28 | 18,7 | ||
Clinical practice in hospitals | ||||
Group tutorials | 2 | 1,3 | ||
External Practical Classes | ||||
Assessment | 2 | 1,3 | ||
Distance learning | Work in group | 4 | 2,6 | 90 |
Individual work | 86 | 57,3 | ||
Total | 150 |
Regarding assessment, this subject is based on continuous evaluation and cooperative learning. Different tests and exams take place in theoretical, seminar and laboratory classes. These tests may be individual or in groups.
The following aspects are considered for the assessment:
1. Theory mark: evaluated by means of different types of tests (exams, questionnaires, etc.) (25% of the final assessment)
2. Seminar mark: continuous evaluation of an incremental project (10% of the final assessment)
3. Laboratory mark: Continuous evaluation of the laboratory work developed as projects. For each evaluation, students must implement and might defend each project (65% of the final assessment)
In order to pass the subject, it is necessary to:
a) Attend, at least, 80% of the presential classes (theory, seminar and laboratory).
b) Minimum score. It is necessary to achieve at least 3 points (over 10) in each single project and each single exam (theory, laboratory and project) and have delivered all the autonomous tasks with an enough quality.
If these requirements are fulfilled, the final mark is obtained with the following formula:
Final Mark = Theory Mark * 0.25 + Laboratory Mark * 0.65 + Project Mark *0.10
Otherwise,
1. If the student has participated in evaluation activities whose weight in the total grade supposes at least 50%, the final grade will be calculated as:
Final Mark = Min (4, FinalMark *0.25 + Laboratory Mark *0.65 + Project Mark * 0.10)
2. If not:
Final Mark = Not Taken
Those students that have not passed the continuous evaluation would be assessed the following way:
Final assessment in ordinary evaluation
This evaluation is only for those students who having completed the semester (80% of the attendance, mandatory works delivered on time and quality, and all midterm exams taken) have failed the continuous assessment due to have the final, or some midterm mark, under the minimum.
The students will be evaluated by means of a practical exam in the laboratory. The final mark will be the mark of this exam.
Final assessment in extraordinary evaluation
All the students will be evaluated by means of a practical exam in the laboratory. The final mark will be the mark of this laboratory exam.
Distinguishing evaluation
The students will be evaluated by means of a practical exam in the laboratory. The final mark will be the mark of this laboratory exam.
References
- Objects First with Java - a Practical Introduction using BlueJ. David J. Barnes and Michael Kölins. Pearson Education; 4rd. edition. ISBN: 0-13-700562-8
- Thinking in Java, 4th Edition - Bruce Eckel. Editorial Prentice Hall, 2007. ISBN: 8489660344
- Unified Modeling Language User Guide, The (2nd Edition). Grady Booch, Ivar Jacobson, James Rumbaugh. Addison-Wesley, 2005. ISBN: 032126797
- Object-Oriented Software Construction (2nd edition). Bertrand Meyer. Prentice Hall, 1999. ISBN: 0136291554
- Efective Java. Third Edition. Joshua Bloch. Pearson Education, 2018, ISBN: 9780134685991
Web References
- The Java Tutorial. Oracle.http://download.oracle.com/javase/tutorial/
- Free Electronic Books. Thinking in Java (available on the web)
The information and resources used in the subject will be updated at the Virtual Campus of the University of Oviedo. All the students taking this subject will have access to this site.