Fundamentals of Programming Code:  22.607    :  6
View general information   Description   The subject within the syllabus as a whole   Professional fields to which it applies   Prior knowledge   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 second semester of the academic year 2022/2023. 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.

This subject is the starting point for learning programming techniques. It is an introductory subject, in which you will learn the fundamentals of programming in C.  


Algorithm design and  C language programming will allow you to acquire the essential knowledge to carry on other subjects within this degree: 

  • Programming in Practice 
  • Object-Oriented Programming


This subject plays a central role in the degree and many of its professional outcomes. Specifically, it will provide you with the basis to become a software developer. 


The subject does not need any prior programming knowledge or course any other subject of this degree. However, it would be convenient to have some fundamental mathematical knowledge.


Degree's competences 

  • Ability to design and build computer applications through development, integration, and reuse techniques. 
  • Basic knowledge of computer usage and programming, operating systems, databases, and computer programs with engineering applications. 

Subject's objectives 

The general subject's objective is to learn to design algorithms/programs that meet a quality criterion. This general objective is specified within the following specific objectives: 

  • To know and understand the fundamental algorithmic concepts by learning and understanding the algorithmic notation, syntax, and semantic. 
  • To know and understand the concepts, methods, and techniques, needed to specify the precise behaviour that the solution to a specific problem must have, and design and implement the corresponding program. 
  • To know how to use the algorithmic schemes as an effective technique for building algorithms. Modularity will also be seen as an ideal way to deal with complex problems by dividing them into a set of simpler subproblems. 
  • Acquire practice in the application of the previous concepts in a real programming development environment. Thus, the student will acquire not only conceptual but also practical knowledge of how to write a program, compile it, assemble it and execute it.


Algorithm design

Algorithmic language or pseudocode will be studied as a formal design tool for algorithms, which can then be translated into any programming language (in our case the C programming language). 

Introduction to programming 
Fundamental programming concepts will be introduced. 

Data types 
The different data types will be presented. We are going to start with the basic types, afterwards we will move to the structured types and finally, the abstract types will be described. For all these data types, we will study their representation, operations and memory use as well. 

Control structures 
Alternative and sequential compositions will be introduced, using the basic schemes of searching or passing through within a sequence. 

We will work with the different modularity mechanisms that can be used. Both, those that refer to the algorithm design (actions and functions) and those related to the code organization (files and libraries) will be studied.


C Programming

Style Guide in C

C Language guides
- Basic data types
- Casting operations
- Character strings
- Input and output functions
- Input and output parameters
- Pointers

Programming environment
- Introduction to CodeLite IDE
- Modularity in CodeLite


Wiki Programming materials Web
FAQs Laboratory of Fundamentals of programming Web


In the virtual classroom, you will find access to our xWiki that contains all the resources needed: contents of the different learning units, algorithmic and C language guides, and the guidelines to perform the different proposed activities. 

On the xWiki you will find an initial explanation on how to use each resource and also an introductory guide where you will find all the materials grouped according to the week in which you should use them. The xWiki content is also accessible from the Lab virtual classroom.

From the classroom resources you can also access the virtual machine (VM) which includes the software that you need to program in C, and you will also find the example code snippets that are used in the xWiki. 


The assessment process is based on the student's personal work and presupposes authenticity of authorship and originality of the exercises completed.

Lack of authenticity of authorship or originality of assessment tests, copying or plagiarism, the fraudulent attempt to obtain a better academic result, collusion to copy or concealing or abetting copying, use of unauthorized material or devices during assessment, inter alia, are offences that may lead to serious academic or other sanctions.

Firstly, you will fail the course (D/0) if you commit any of these offences when completing activities defined as assessable in the course plan, including the final tests. Offences considered to be misconduct include, among others, the use of unauthorized material or devices during the tests, such as social media or internet search engines, or the copying of text from external sources (internet, class notes, books, articles, other students' essays or tests, etc.) without including the corresponding reference.

And secondly, the UOC's academic regulations state that any misconduct during assessment, in addition to leading to the student failing the course, may also lead to disciplinary procedures and sanctions.

The UOC reserves the right to request that students identify themselves and/or provide evidence of the authorship of their work, throughout the assessment process, and by the means the UOC specifies (synchronous or asynchronous). For this purpose, the UOC may require students to use a microphone, webcam or other devices during the assessment process, and to make sure that they are working correctly.

The checking of students' knowledge to verify authorship of their work will under no circumstances constitute a second assessment.


This course can be passed by two means:

- With the activities performed during the year and taking a synthesis test (ST):

The combination of the final mark of the continuous assessment activities (CA) and the final mark of the practical (Pr) gives the final continuous assessment mark (FC: CA + Pr).
To be eligible for taking the ST, the final continuous assessment mark (FC) must be equal or greater than 5. The final course mark will be obtained subsequently by crossing the mark of the ST with the FC.

- By taking a final exam (EX):

To take the EX, you do not need to have passed the CA. Using this means, the final course mark is obtained by crossing the mark of the EX with the final mark of the practical (Pr).

Either way, the practical (Pr) is compulsory.

The formula for accrediting the course is as follows: (CA + Pr) + ST or EX + Pr.