Academic management

University of Oviedo

Uniovi.es | Home | Search | Site Map

| |

Bachelor´s Degree in Computer Science - Software Engineering
GIISOF01-1-010
Programming Methodology
General description and schedule Teaching Guide

Coordinator/s:

MARIA CANDIDA LUENGO DIEZ
candiuniovi.es

Faculty:

MARIA LOURDES TAJES MARTINEZ
tajesuniovi.es
(English Group)
Guillermo Facundo Colunga
facundoguillermouniovi.es
(English Group)
MARIA ANGELES DIAZ FONDON
fondonuniovi.es
MARIA CANDIDA LUENGO DIEZ
candiuniovi.es
Francisco Javier Gil Gala
giljavieruniovi.es
ALBERTO MANUEL FERNANDEZ ALVAREZ
albuniovi.es
(English Group)

Contextualization:

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.

Requirements:

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 and learning results:

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.

  1. Understand and be able to use algorithms in the object-oriented paradigm
  2. 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.

  1. Know and apply the main search algorithms
  2. 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.

  1. Know the concept of list, stack and queue, their basic operations and their applications
  2. Understand the necessity of using dynamic data structures, assimilate the concept and its applications
  3. Understand the management of runtime errors using exceptions
  4. 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.
  5. 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.

  1. Analyze programming problems setting out detailed specifications
  2. Know and apply the different steps in the development of an application.
  3. Be able to build applications regardless the programming language used
  4. Understand the different steps in the analysis and design of an application using specific UML diagrams
  5. Obtain experience in the use of automatic documentation generation tools
  6. Be able to implement, in a sensible period of time, correct programs using efficient and well-documented unit testing
  7. Design and implement tests that verify the reliability of a program (functional code, data integrity and runtime performance)
  8. Beabletousedebuggers
  9. Apply the object model and understand its benefits over the procedural paradigm
  10. Get good programming habits

Com.14 Knowledge and application of the basic principles and techniques of the parallel, concurrent, distributed and real time programming.

  1. Obtain a general global vision of concurrent programming

Know the benefits of concurrent programming

Contents:

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

Methodology and work plan:

 

"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

 

 

Assessment of students learning:

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 may implement and 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 done the theoretical tests and at least 50% of the laboratory assessments, the final mark will be

           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.

 

"Exceptionally, if sanitary conditions require it, the subject's assessment would include on-line exams. In which case, the students will be informed of the changes made. ”

Resources, bibliography and documentation:

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
  • Java 1.5 Program Design. James Cohoom y Jack Davidson. McGrawHill, 2005, ISBN: 007292196X
  • Thinking in Java 4th Edition - Bruce Eckel. Prentice Hall, 2007. ISBN0131872486
  • 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

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.