Nowadays one cannot think of technology or innovation without taking into account the programming world. Almost everything surrounding us, both physical and virtual elements, require a set of instructions to manage them and to allow them to "be alive". Thus, programming is indispensable and is a key concept for every engineer. In this subject, we learn the fundamentals of this world, applied in this case to any computer. The subjects' practical work will introduce the C programming language. To do that, this subject uses a multitude of examples, which help the student to deepen in all those aspects taught in a more theoretical way.
Titular Professors
Not required
The aim of this course is for students to acquire the knowledge and develop the skills needed to analyze and solve problems through programming. It seeks to foster the ability to understand and abstract real-world problems, design correct and efficient solutions, and develop algorithmic thinking.
Additionally, the course introduces the fundamentals of structured and modular programming, the use of pseudocode and an imperative programming language such as C, as well as the ability to interpret and build programs. Finally, it promotes the development of consistent study and work habits.
- Introduction
- Introduction to algorithms
- Functions and procedures
- Structured data types
- Introduction to pointers
The teaching methodology is based on an active and theory-practice approach aimed at the progressive acquisition of the course learning outcomes. The course combines lectures, practical sessions, and students’ independent work, ensuring an appropriate integration of theory and practice.
Lectures focus on introducing fundamental concepts and explaining the basic principles of programming. These are complemented by practical sessions, where students apply the acquired knowledge through problem-solving and guided exercises.
On a continuous basis, students complete weekly exercises that reinforce content understanding and foster the development of algorithmic thinking. In addition, more comprehensive practical assignments are proposed, aimed at the design and implementation of complete solutions, including an individual project or assignment that allows students to consolidate their learning independently.
The methodology is complemented by assessment activities, such as exams, and by students’ personal study, which is essential for consolidating the knowledge and skills developed in class. Overall, it promotes a progressive learning process that combines guided work, applied practice, and independent study, in line with the established workload.
The main assessment activities for the subject are: semester exam, two practical sessions and continuous assessment sessions.
The student will be assessed on:
- The ability to apply computational thinking in solving exercises.
- The understanding and correct application of basic algorithmic concepts.
- The correct use of the C programming language to solve problems and exercises.
- The preparation of documentation that clearly and comprehensively explains the developed programs.
- The ability to understand the requirements of a problem and propose a solution in the form of an algorithm.
- Carmen, Thomas H.; Leiserson Charles E.; Rivest Ronald L; Stein Clifford. Introduction to Algorithms, The MIT Press, 2009.
- García-Bermejo, J.R. Programación Estructurada en C, Pearson/Prentice-Hall, 2008.
- Hanly, Jerry R.; Koffman, Elliot B.; Problem Solving and Program Design in C, Pearson Education, 2013.
- Joyanes, L. Fundamentos de la programación. Algoritmos y Estructura de Datos, McGraw-Hill, 2008.
- Kernighan, Brian W.; Ritchie, Dennis M. El lenguaje de programación C, Prentice-Hall Hispanoamericana, 1991.
- Kruse, Robert Leroy; Tondon, Clovis L.; Leung, Bruce P. Data structures and program design in C, Prentice-Hall, 1997.
- Weiss, Mark Allen. Estructuras de datos y algoritmos, Addison-Wesley Iberoamericana, 1995.
Only the basic bibliography is required.