ECTS credits ECTS credits: 6
ECTS Hours Rules/Memories Student's work ECTS: 97 Hours of tutorials: 3 Expository Class: 20 Interactive Classroom: 30 Total: 150
Use languages Spanish, Galician
Type: Ordinary Degree Subject RD 1393/2007 - 822/2021
Departments: Electronics and Computing
Areas: Languages and Computer Systems
Center Higher Technical Engineering School
Call: First Semester
Teaching: With teaching
Enrolment: Enrollable | 1st year (Yes)
The main objectives of this course are:
- To develop the fundamentals of structured design of algorithms.
- Providing knowledge and skills for its implementation in C programming language
- To understand and know how to apply the basic techniques of design and implementation of algorithms in simple case studies
This subject offers a first contact with a high-level programming language, developing a basic course on structured programming. The concepts of expression, the distinct types of instructions and structures of programming, functions and procedures and dynamic memory management are developed. Student are instructed in top-down design of algorithms, modular programming and bottom-up design applications.In addition to its training component directly in the field of programming, this course has an instrumental component, since knowledge and programming skills in C programming language is directly applicable in other courses. So immediately, programming in C is indispensable to the subjects Programming II (2nd semester) and Algorithms and Data Structures (3rd semester). Programming in C also provides the foundations of almost all the technical and engineering-oriented courses in the second year, being a good basis for programming in Java in the subject of Object Oriented Programming, for all practical subjects related to Operating Systems and Software Engineering.
1. Algorithms and programs
1.1. Concepts
1.2. Programming languages
1.3. Assembler
1.4. High level languages
1.5. Specification of algorithms
1.6. Designing algorithms
1.7. Encoding and testing
The aims of the first theme are: (i) to introduce some basic software engineering issues, including requirements, specification, design and testing,(ii) to connect software and hardware concepts.
2. Variables and instructions
2.1. Variables and data types
2.2. Strings
2.3. Assignment
2.4. Arithmetical and logical expressions
2.5. Input/Output
3. Structured programming
3.1. Theorem of structured programming
3.2. Control structures
3.3. Top-down design
3.4. Arrays
3.5. Registers
4. Modular programming
4.1. Functions and procedures
4.2. Local and global data
4.3. Parameters
4.4. Recursion
4.5. Modular design
4.6. Libraries
4.7. Archives
The goal of the themes 2-4 is to learn the structured programming methodology framed in the historical context of software development.
5.References
5.1. Definition
5.2. Pointers declaration and memory assignment
5.3. Memory sharing
5.4. Dynamical memory allocation
5.5. Pointers and functions
5.6. Pointers and structures
This theme deals with the mechanism of references. It is a fundamental programming language feature common to nearly all modern programming languages. Even some languages that support no direct use of references have some internal or implicit use.
Basic:
From the beginning of the semester, students will have access to the full set of lecture notes and class presentations slides for the course. Additionally, we recommend the following list of complementary books:
1. GARCÍA, Jesús J. Una introducción a la programación. Madrid: Thomson, 2005. ISBN 84-9732-185-5.
It is indicated as a basic reference, since it covers almost all aspects of interest, developing in some detail and depth the basic concepts of algorithms and techniques for designing algorithms.
2. GOTTFRIED, Byron S. Programación en C. 2ª ed. Madrid: McGraw-Hill, 2005. ISBN 84-481-9846-8.
Reference to complete item 1, however any similar C manual applies to the practical part of the field.
3. BROOKSHEAR, J. Glenn. Introducción a la computación. 12ª ed. Pearson Addison-Wesley, 2013. ISBN 9788478291397.
4. JOYANES, Luís . Fundamentos de programación. 4º ed. Aravaca (Madrid): McGraw-Hil, 2008. ISBN 978-84-481-6111-8.
This reference is interesting because complements the previous reference, showing slightly different approaches and using a pseudo code for examples, which allows a level of abstraction over specific languages.
5. GRIFFITHS, David. Head first C. O’Reilly, 2013. ISBN 978-1-449-39991-7.
Reference to complete item 1, however any similar C manual applies to the practical part of the field.
At the end of the semester, students must be able to develop a full project in C language, including modular design, proper specifications for each module, and technical documentation.
In some degree and in accordance with the goals of this subject, we will work on the following competences described in the official degree plan: FB4, FB5, RI8, CG8, CG9, TR1, TR2, TR3.
In addition, the following skills of the programming module will be worked out:
- Development of a good programming style, with
documentation and appropriate comments.
- Usage of tools for editing, compilation, and execution of programs. Ability to devise strategies for debugging, testing and correction programs.
- Management of different levels of abstraction for structuring software.
- Designing of complex algorithms and implement them using
the principles of structured and modular programming.
- Undertanding of concepts related to the development of algorithms.
- Knowledge of different programming paradigms.
- Oral presentation of works.
The program of expository teaching is based on weekly classes, which include the presentations of all the themes and some exercises seminars. The program of interactive teaching is scheduled in weekly sessions of two hours, and will be devoted to solve programming exercises.
The schedule includes 21 hours of expository lessons during the semester, and 2 hours of weekly practical work in programming labs. We will start dealing with issues about algorithm specification and verification, while in practice lessons we will learn the most basic programming concepts. After learning structured programming principles, theory and practice will be complementary, so that from that time onward students will solve in practice autonomously programming exercises in C language. Each theme will have a set of programming assignments and each student will be graded on a representative subset of these exercises. All solutions to exercises and projects selected for assessment will have to be explained to the instructor in person.
Competences FB4, FB5, RI8, CG8 and CG9, as well as the aforementioned of the programming module have specific theoretical and practical associated contents in the subject and are evaluated explicitly throughout the course.
Competences type TR1 are worked mainly in the aspect of communication through oral presentations of results and the contributions to a database with example code that is built by students during the course.
The work of competences type TR2 is part of the dynamics of the classes where teamwork is necessary and required to perform tasks that will be assessed.
Among competences TR3 we will work especially creativity and motivation for quality. The teaching of programming patterns and basic techniques for assessment of the efficiency help looking for the best solutions for each case and evaluate the results based on that.
We will do an intensive use of USC-Virtual both as a repository of notes, theoretical exercises, practical assignments and related solutions, and also as a communication tool for task submission, discussion forums and doubts consultation.
Assessment in the call of January is based on the assignments accomplish throughout the semester. The theoretical part will weigh 40% in the final mark, and the practical part will weigh 60%.
In the assessment of the subject, students will have to carry out some exercises or tests proposed throughout the semester.
The dynamics of the classes and types of tests involve the training and the assessment of all the aforementioned competences. Additionally we propose extra tasks that allow adding extra score (variable according to the schedule of each course) to work on specific communication skills (presentation of works, preparation of teaching materials, etc.), creativity and the motivation for quality (programming challenges). Throughout the course a large number of tasks of this type are delivered in order to each student perform only some of them (a minimum number to be taken into account, dependent on the type and difficulty of the proposals of each year), according to their own planning and workload in every moment.
To pass the subject, students have to achieve a mark greater or equal to 5, as result of adding up the contributions of all the theoretical and practical activities.
The Second Opportunity is intended for students which have failed in the First Opportunity of January, and it is based on the assessment of a designing and programming project, or a written test. This project will be handed out at the start of the second semester.
A student will be marked Absent if they neither submit any of the continuous assessment exercises nor hand in the project of the Second Opportunity.
In the assessment system we do not distinguish between students enrolled for the first time and repeaters.
For cases of fraudulent performance of exercises or tests, the provisions of the Regulations for the evaluation of students' academic performance and the review of qualifications will apply.
In application of the ETSE Regulation on plagiarism (approved by the ETSE Board on 19/12/2019) the full or partial copy of any exercise of practice or theory will suppose a failure in both opportunities of the course, with a rating of 0.0 in both cases.
Recommended study time for students is about 2 hours per week. Additionally, we estimate that they should spend about 4 hours / week working in a number of assignments. All of these along with classroom and lab activities make around 150h/semester.
Daily work is recommended for the study of theory, practical work and problem-solving. We also consider important to make use of mentoring for discussion of practical problems and as a means of immediate resolution of doubts.
Classes will be conducted mainly in Galician and we will do an intensive use of the virtual classroom.
Xosé Manuel Pardo López
Coordinador/a- Department
- Electronics and Computing
- Area
- Languages and Computer Systems
- Phone
- 881816438
- xose.pardo [at] usc.es
- Category
- Professor: University Lecturer
Roi Santos Mateos
- Department
- Electronics and Computing
- Area
- Languages and Computer Systems
- roi.santos [at] usc.es
- Category
- Professor: Temporary supply professor to reduce teaching hours
Monday | |||
---|---|---|---|
09:00-10:00 | Grupo /CLE_01 | Galician | Classroom A1 |
15:30-18:00 | Grupo /CLIL_04 | Galician | Computer Room I7 |
Tuesday | |||
15:30-18:00 | Grupo /CLIL_05 | Spanish | Computer Room I7 |
Wednesday | |||
15:30-18:00 | Grupo /CLIL_01 | Spanish | Computer Room I7 |
Thursday | |||
09:00-10:00 | Grupo /CLE_01 | Galician | Classroom A1 |
15:30-18:00 | Grupo /CLIL_02 | Galician | Computer Room I7 |
Friday | |||
15:30-18:00 | Grupo /CLIL_03 | Galician | Computer Room I7 |
01.15.2025 10:00-14:00 | Grupo /CLIL_01 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLIL_02 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLIL_03 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLIL_04 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLIL_05 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLE_01 | Classroom A3 |
01.15.2025 10:00-14:00 | Grupo /CLE_01 | Classroom A4 |
01.15.2025 10:00-14:00 | Grupo /CLIL_01 | Classroom A4 |
01.15.2025 10:00-14:00 | Grupo /CLIL_02 | Classroom A4 |
01.15.2025 10:00-14:00 | Grupo /CLIL_03 | Classroom A4 |
01.15.2025 10:00-14:00 | Grupo /CLIL_04 | Classroom A4 |
01.15.2025 10:00-14:00 | Grupo /CLIL_05 | Classroom A4 |
06.25.2025 10:00-14:00 | Grupo /CLIL_04 | Classroom A1 |
06.25.2025 10:00-14:00 | Grupo /CLIL_05 | Classroom A1 |
06.25.2025 10:00-14:00 | Grupo /CLE_01 | Classroom A1 |
06.25.2025 10:00-14:00 | Grupo /CLIL_01 | Classroom A1 |
06.25.2025 10:00-14:00 | Grupo /CLIL_02 | Classroom A1 |
06.25.2025 10:00-14:00 | Grupo /CLIL_03 | Classroom A1 |