IDENTIFYING DATA 2023_24
Subject (*) THE FUNDAMENTALS OF PROGRAMMING II Code 17234131
Study programme
Bachelor's Degree in Computer engineering (2010)
Cycle 1st
Descriptors Credits Type Year Period
6 Compulsory First 2Q
Language
Català
Department Computer Engineering and Mathematics
Coordinator
MARTÍNEZ BALLESTÉ, ANTONI
E-mail antoni.martinez@urv.cat
carlos.garciabarroso@urv.cat
roger.mallol@urv.cat
esteban.herreros@urv.cat
cristina.llop@urv.cat
Lecturers
MARTÍNEZ BALLESTÉ, ANTONI
GARCÍA-BARROSO VILLALONGA, CARLOS
MALLOL PARERA, ROGER
HERREROS SUAREZ, ESTEBAN
LLOP VALLVERDÚ, CRISTINA
Web http://https://campusvirtual.urv.cat/local/alternatelogin/index.php
General description and relevant information <p>The subject has two general objectives: on the one hand, to learn issues related to programming that have not been covered in the previous subject Programming Fundamentals I; on the other hand, and very important, to consolidate structured programming and top-down design. To be able to face the subject successfully, it is necessary to have passed Fundamentals of Programming I.</p>

Competences
Type A Code Competences Specific
 CM6 Have knowledge of and apply the basic algorithmic procedures of IT to design solutions to problems, analysing the suitability and complexity of the algorithms proposed.
 CM7 Have knowledge of, design and efficiently use the most suitable data types and structures for solving a problem.
 CM8 Be able to analyse, design, build and maintain applications that are robust, secure and efficient, choosing the most suitable paradigm and programming languages.
 CP3 Be able to evaluate the computational complexity of a problem, know algorithmic strategies that may lead to its resolution and recommend, develop and implement the one that will guarantee the best performance in accordance with the established requirements.
Type B Code Competences Transversal
Type C Code Competences Nuclear

Learning outcomes
Type A Code Learning outcomes
 CM6 Learn the basics of algorithmic complexity calculation
Understand the concept and recursive design of algorithms.
Practical use of paradigms of algorithmic design in the development of computer applications.
 CM7 Know the theoretical fundamentals of programming, in order to demonstrate a code is correct and know how to estimate its algorithmic complexity.
Understand the concept and the recursive design of algorithms.
Capacity of solving problems by creating and manipulating data structures.
 CM8 Make practical use of these concepts in the design and the construction of programs.
 CP3 Understand the basic concepts of calculability and complexity.

Type B Code Learning outcomes
Type C Code Learning outcomes

Contents
Topic Sub-topic
Top-down design Top-down design and procedures
Computational cost Efficiency
Running time
Big-o notation
Recursive algorithms
Recursion
Recursive design
Cost of recursive algorithms
Search and sort Search
Binary search
Sorting (selection, bubblesort, insertion sort)
Mergesort

Planning
Methodologies  ::  Tests
  Competences (*) Class hours
Hours outside the classroom
(**) Total hours
Introductory activities
1 1 2
Lecture
CM6
CM7
25 20 45
Laboratory practicals
CM6
CM7
30 60 90
Personal attention
1 0 1
 
Extended-answer tests
CM6
CM7
4 8 12
 
(*) On e-learning, hours of virtual attendance of the teacher.
(**) The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies
  Description
Introductory activities The basics of how the course works will be presented.
Lecture Both slides and practical examples will be used.
Laboratory practicals Done in group. Some of them are considered for the assessment of the course.
Personal attention Please, check schedules for personal tuition.

Personalized attention
Description

Each professor of the subject will inform you of the mechanisms he has established to attend to queries. You will find the instructions in the professor's profile on the Virtual Campus, or in the staff details on the DEIM website. We will answer your emails within a maximum of 48 hours, on working days. However, we encourage you to use the Virtual Campus doubts forum to raise your questions: maybe someone has already raised the doubt before and someone else has solved it!


Assessment
Methodologies Competences Description Weight        
Laboratory practicals
CM6
CM7
Practice counts for 30% and the delivery of individual practices 10% 40%
Extended-answer tests
CM6
CM7
There are two exams: a theoretical part with short answers and a final where you will also have to do development. 20% + 40%
Others  
 
Other comments and second exam session

To pass the subject, you must pass the two partial exams and the practice of the subject. At the second call, the theory can be passed and the practical part of the subject can be delivered. See the course guide on Campus Virtual for more information. During the exams no electronic devices can be used; moreover you may be asked to show an identifiying card.


Sources of information

Basic Jesús Bisbal Riera, Manual de algorítmica: Recursividad, complejidad y diseño de algoritmos, Última, Edicions UOC
Félix García Carballeira i altres, Problemas resueltos de programación en lenguaje C, Última, Thomson

Complementary José R. García-Bermejo Giner, Programación estructurada en C, Última, Pearson (Prentice Hall)

Recommendations

Subjects that continue the syllabus
PROGRAMMING/17234114


Subjects that it is recommended to have taken before
THE FUNDAMENTALS OF PROGRAMMING I/17234001
(*)The teaching guide is the document in which the URV publishes the information about all its courses. It is a public document and cannot be modified. Only in exceptional cases can it be revised by the competent agent or duly revised so that it is in line with current legislation.