Programming in practice Code:  22.608    :  6
View general information   Description   The subject within the syllabus as a whole   Professional fields to which it applies   Prior knowledge   Information prior to enrolment   Learning objectives and results   Content   View the UOC learning resources used in the subject   Additional information on support tools and learning resources   Guidelines on assessment at the UOC   View the assessment model  
This is the course plan for the first semester of the academic year 2024/2025. To check whether the course is being run this semester, go to the Virtual Campus section More UOC / The University / Programmes of study section on Campus. Once teaching starts, you'll be able to find it in the classroom. The course plan may be subject to change.

In the subject of Fundamentals of Programming, you have acquired the basic concepts of programming within the classical or procedural paradigm. This subject seeks to help the student to finish assimilating these basic concepts of programming, deepening in some of them.


Until now, the proposed problems could be solved with the use of the theoretical tools and concepts explained in the theory modules, following guidelines of good programming practices. The final goal of the student was to obtain a code that solved the problem. In solving real problems, however, obtaining computer solutions to solve specific problems is an engineering task, where the creativity and expertise of the programmer may be the difference between reaching a solution or that the project fails.


There are no magic recipes to find feasible solutions to all the problems that a programmer can face throughout his or her professional life. The only way for the student to develop abilities to solve problems and efficient approach to solutions is by creating their own mechanisms, which is only achieved through practice. Therefore, this will be a mainly practical subject, where the student will have to face more complex problems and take into account aspects of optimization of the code to find solutions that not only work but also are efficient in terms of speed and memory usage.


Continuing with what has begun in the subject of Fundamentals of Programming, this subject will use the programming language C in order to codify the solutions to the proposed problems.


This subject delves into the concepts introduced in the subject Fundamentals of Programming, and therefore it is given to achieve all its agenda. Given that the concepts introduced in this subject are supported by the basic concepts of programming, if the student accesses this subject without having assimilated the basic knowledge of Fundamentals of Programming, he/she will need much more time to solve the proposed tasks, finding him/herself with a much greater difficulty in understanding the modules.


It is important that at the end of the subject the student has achieved a high level of programming within the classical paradigm, since in successive semesters, programming will be introduced within the object-oriented paradigm, in the subject Object-Oriented Programming and Design.


Achieving a good algorithmic and programming level is the basis for the professional practice in the development of computer applications’ field, and in almost all the tasks that require process automation or computer-based simulators. In addition, the ability to abstain when solving a problem in programming is very useful in other aspects of the professional life of the engineers, creating good working habits and a correct structuring and organization of tasks.


Additionally, the C programming language used in the subject’s practices is a language that is widely used in all types of problems and fields, having been used as a source of inspiration for many other modern languages, which will give you the ability to learn new programming languages easily.


The previous knowledge for the accomplishment of the subject is those that are specified like contents in the Fundamentals of Programming. In particular, you need to have good knowledge in the algorithm formulation and structured programming techniques. It is also necessary to have an easy way to codify algorithms in C language.


Since this subject is the Fundamentals of Programming extension, it is recommended to pass it before. Students with the possibility of validating Fundamentals of Programming, it is necessary to take into account that for the correct monitoring of Programming in Practice, they must know the following:

• Basic concepts of structured programming

¿ Program flow

¿ Conditional and iterative control structures

¿ Modularity: Definition and implementation of actions and functions

• Data types

¿ Basic types

¿ Vectors and arrays

¿ Tuples and tables

¿ Abstract types of basic Data (queues, pile and lists)

¿ Pointers

• Recursion notions

• Use of dynamic memory

• Basic knowledge of the C programming language.


As students of Programming in Practice, you will have access to all the Fundamentals of Programming materials, but the dedicated time to the subject and its difficulty will be much greater in the case of not having basic notions of these contents.


Grade’s competences


Design and build computer applications using development, integration and reuse techniques.


Subject’s objectives


The central competence of this subject is that the student reaches the ability to design and build computer applications through development, integration and reuse techniques.


Achieving this competence requires working in the following specific competencies:



  1. To know how to write and implement an algorithm that satisfies some pre-established requirements applying the most appropriate methodology.
  2. to know how to calculate the complexity of an algorithm and be able to compare the efficiencies of the various possible solutions to solve a given problem.
  3. To learn in depth the most current and popular programming languages environments¿¿.
  4. To know the different mechanisms to execute an application (compilers, interpreters, etc.).
  5. To know deeply the existing resources to debug a program.
  6. To know how to implement (encode) any software design.
  7. To know how to choose the modular structure and data necessary to build a computer application.
  8. To be able to understand algorithms and written programs (in a specific programming language) for other people, as well as know the most accepted algorithms and library components for specific problems (eg, data manipulation, etc.).
  9. To know good programming practices (tabulation, comments, documentation, names policy, etc.).



This subject has the following thematic blocks:

  1. Top-down design

  2. Formalization of algorithms.

  3. Abstract Data Types

  4. Recursion

  5. Techniques of algorithm analysis (complexity and efficiency).

  6. Search and classification algorithms (linear search, binary search, bubble method, sorting by insertion, sorting by selection, etc ...).


At a practical level it is seen:

  1. Introduction to the programming tools: development environment, compiler, interpreter and debugger.

  2. C programming language

  3. Memory management

  4. Read and write

  5. Implementation of complex algorithms


Wiki Programming practicals Web


This subject will use as the main reference source:


• Programming materials: materials in a web format that contain the theoretical information and practical examples necessary for the follow-up of the subject.


In the resources of the lab classroom you will find:

• C language manual: Basic programming manual in C

• C programming style guide


Assessment at the UOC is, in general, online, structured around the continuous assessment activities, the final assessment tests and exams, and the programme's final project.

Assessment activities and tests can be written texts and/or video recordings, use random questions, and synchronous or asynchronous oral tests, etc., as decided by each teaching team. The final project marks the end of the learning process and consists of an original and tutored piece of work to demonstrate that students have acquired the competencies worked on during the programme.

To verify students' identity and authorship in the assessment tests, the UOC reserves the right to use identity recognition and plagiarism detection systems. For these purposes, the UOC may make video recordings or use supervision methods or techniques while students carry out any of their academic activities.

The UOC may also require students to use electronic devices (microphones, webcams or other tools) or specific software during assessments. It is the student's responsibility to ensure that these devices work properly.

The assessment process is based on students' individual efforts, and the assumption that the student is the author of the work submitted for academic activities and that this work is original. The UOC's website on academic integrity and plagiarism has more information on this.

Submitting work that is not one's own or not original for assessment tests; copying or plagiarism; impersonation; accepting or obtaining any assignments, whether for compensation or otherwise; collaboration, cover-up or encouragement to copy; and using materials, software or devices not authorized in the course plan or instructions for the activity, including artificial intelligence and machine translation, among others, are examples of misconduct in assessments that may have serious academic and disciplinary consequences.

If students are found to be engaging in any such misconduct, they may receive a Fail (D/0) for the graded activities in the course plan (including final tests) or for the final grade for the course. This could be because they have used unauthorized materials, software or devices (such as artificial intelligence when it is not permitted, social media or internet search engines) during the tests; copied fragments of text from an external source (the internet, notes, books, articles, other students' work or tests, etc.) without the corresponding citation; purchased or sold assignments, or undertaken any other form of misconduct.

Likewise and in accordance with the UOC's academic regulations, misconduct during assessment may also be grounds for disciplinary proceedings and, where appropriate, the corresponding disciplinary measures, as established in the regulations governing the UOC community (Normativa de convivència).

In its assessment process, the UOC reserves the right to:

  • Ask students to provide proof of their identity as established in the UOC's academic regulations.
  • Ask students to prove the authorship of their work throughout the assessment process, in both continuous and final assessments, through a synchronous oral interview, of which a video recording or any other type of recording established by the UOC may be made. These methods seek to ensure verification of the student's identity, and their knowledge and competencies. If it is not possible to ensure the student's authorship, they may receive a D grade in the case of continuous assessment or a Fail grade in the case of the final assessment.

Artificial intelligence in assessments

The UOC understands the value and potential of artificial intelligence (AI) in education, but it also understands the risks involved if it is not used ethically, critically and responsibly. So, in each assessment activity, students will be told which AI tools and resources can be used and under what conditions. In turn, students must agree to follow the guidelines set by the UOC when it comes to completing the assessment activities and citing the tools used. Specifically, they must identify any texts or images generated by AI systems and they must not present them as their own work.

In terms of using AI, or not, to complete an activity, the instructions for assessment activities indicate the restrictions on the use of these tools. Bear in mind that using them inappropriately, such as using them in activities where they are not allowed or not citing them in activities where they are, may be considered misconduct. If in doubt, we recommend getting in touch with the course instructor and asking them before you submit your work.


In order to pass the course, you must pass the continuous assessment and take a synthesis test.

Your final mark for the course will be calculated as follows:

  • If you pass the continuous assessment and get the required minimum mark in the synthesis test, your final mark will be based on the weightings specified in the course plan.
  • If you pass the continuous assessment but don't get the required minimum mark in the synthesis test, your final mark will be the numerical mark from the synthesis test.
  • If you pass the continuous assessment and don't sit the synthesis test, you'll receive a final mark of Absent.
  • If you don't pass the continuous assessment, your final mark will be the mark you received in the continuous assessment.
  • If you don't take part in the continuous assessment, you'll receive a final mark of Absent.