Person in charge:  () 
Others:  () 
Credits  Dept.  Type  Requirements 

7.5 (6.0 ECTS)  CS 

P1
 Prerequisite for DIE , DCSYS , DCSFW 
Person in charge:  () 
Others:  () 
In this subject, students delve further into structured programming. They are introduced to techniques for designing midsized programs, and given further experience in the field of programming through practicals. Finally, their command of recursion as a tool for program construction is broadened.
Estimated time (hours):
T  P  L  Alt  Ext. L  Stu  A. time 
Theory  Problems  Laboratory  Other activities  External Laboratory  Study  Additional time 

T  P  L  Alt  Ext. L  Stu  A. time  Total  

6,0  0  9,0  0  6,0  3,0  0  24,0  
Techniques are presented for breaking programmes down into modules that satisfy the quality requirements dealt with earlier.
Among others, the themes introduced include:  Decomposition of complex problems.  Functional abstraction and data  Successive refinements  Ascendent/descendent design. Concepts and techniques will be illustrated with case studies. Knowledge of algorithms acquired during the Programming 1 course will be reviewed at the same time.


T  P  L  Alt  Ext. L  Stu  A. time  Total  

0  0  21,0  0  42,0  0  0  63,0  
This is an individual assignment where the student has to solve a problem of middling complexity. Students have to apply both their knowledge of
modular objectoriented design in the light of contents 1 and 2, and the knowledge of smallscale Programming (studied in the previous course). The themes helping students develop their projects and dealt with in the lab sessions will be the following: 1. C++ coding. 2. Libraries. 3. Programme debugging and testing. 4. Input/output with text files.


T  P  L  Alt  Ext. L  Stu  A. time  Total  

4,0  0  0  0  0  4,0  0  8,0  
Generalising a function. How and when to generalise functions in a recursive design. Relationship between new parameters in generalized recursive functions and local variables in iterations.


T  P  L  Alt  Ext. L  Stu  A. time  Total  

4,0  0  0  0  0  4,0  0  8,0  
The problem of repeating calculations in a programme. How to avoid repeated calculations. Recursiveness: new parameters and/or resultats (immersions for efficiency reasons). Iteration: new local variables.


T  P  L  Alt  Ext. L  Stu  A. time  Total  

4,0  0  0  0  0  4,0  0  8,0  
Introduction to the use of recursive types. Recursive type definitions. Implementation of abstract data types through recursive types. Implementation of basic operations.


T  P  L  Alt  Ext. L  Stu  A. time  Total  

4,0  0  0  0  0  4,0  0  8,0  
Exhaustive search algorithms. Combinatorial algorithms.

Total per kind  T  P  L  Alt  Ext. L  Stu  A. time  Total 
28,0  0  42,0  0  56,0  22,0  0  148,0  
Avaluation additional hours  6,0  
Total work hours for student  154,0 
The teacher presents new concepts in theory classes, setting out their usefulness and illustrating them with examples.
Students solve short problems in the first part of lab classes.
The second part of the class involves tackling a slightly longer programming problem, which students solve under the teacher"s supervision.
This process involves interim submissions of parts of the solution
in order to ensure students are working on the right lines.
The grade awarded for the course as a whole is calculated as follows:
65% practical exam + 35% final exam
The grade for practical work is based on marks for the following:
 Development of the practical work, reflected in the C++ Coding and the Solving Report. The two activities will make up 55% of the marks.
 A test on the contents of the practical work will make up the remaining 45% of the marks. This test is held as if it were a part exam.
Any attempt of fraud during the course will entail the application of the UPC's general academic normative and the beginning of a disciplinary process.
Basic knowledge of and skills in C++ programming.