Programação de Computadores

Base Knowledge

Basic knowledge of a programming language.

Teaching Methodologies

In theoretical classes, the predominant teaching methodology is the expository method, complemented by the analysis of illustrative examples. Laboratory classes allow the consolidation of theoretical knowledge acquired throughout the semester through guided resolution of proposed problems. There will also be a project component that will be developed in the classroom during the semester.

Laboratory classes are held at the Computer Support Labs where students have personal computers at their disposal.

 

Learning Results

Objectives: The main objective of this course is to provide students with the techniques/tools they need to solve, write, debug, and test small and medium-sized applications using the C programming language.

Competences

  1. Apply the concepts and techniques needed to develop efficient algorithms to solve proposed problems.
  2. Develop programs in a structured way in the C language, tackling real problems in an efficient and organised manner.
  3. Systematically debug and test programs, interpreting and analysing the results to ensure the correctness and efficiency of the developed code.
  4. Demonstrate an understanding of the main characteristics and concepts of object-oriented languages, contributing to a more comprehensive vision when solving programming problems.
  5. Actively contribute to group work, communicating effectively, sharing ideas and knowledge, and collaborating constructively to achieve the proposed objectives.
  6. Demonstrate ability in writing and documenting technical reports
  7. Adopt ethical practices when carrying out academic work, avoiding plagiarism and properly referencing sites and authors, and promoting academic integrity and intellectual honesty.

Program

1. Pointers

 – Addresses and pointers

 – Declaration of pointers

 – Operators * and &

 – Pointers and data types

 – Arithmetic of pointers

 – Pointers to pointers

2. Arrays

 – Arrays and strings as function arguments

 – Arrays of pointers 

 – Multidimensional arrays

 – Multidimensional arrays as function arguments

3. Dynamic Storage Allocation

 – Memory allocation

 – Main functions of dynamic memory allocation

 – Free memory

4. Ordering and Searching Algorithms

 – Searching and Sorting Algorithms

 – Selection Sort

 – Bubble Sort

 – Insertion Sort

 – Linear Search

 – Sentinel Linear Search

 – Binary Search

5. Structures 

 – Definition

 – Declaration and initialization of structures

 – Structure processing rules

 – Nested Structures

 – Definition of new types

 – Arrays of structures

 – Functions and structures

 – Union

 – Bit Fields

6. Files

 – Text files versus binary files

 – Streams

 – Basic file operations

 – Standard files

 – Direct access and sequential access

– Files of Structures 

 – Insert, change, and delete Elements from a file

7. Dynamic Data Structures

 – Self-referential structures

 – Types of dynamic data structures

 – Linked lists

 – Operations on linked lists

8. Writing Large Programs

 – Header Files

 – Dividing a program into multiple files

9. Introduction

 – Programming paradigms

 – Characteristics of object-oriented languages

 – Classes and Objects

 – Analysis of small programs in C ++

Curricular Unit Teachers

Verónica Maria Marques do Carreiro Silva Vasconcelos

Grading Methods

Project:

- Project for 8 values (out of 20 values), proposed by the teachers of the curricular unit. The project will be carried out in pairs of students during class sessions.

- The project will be assessed based on functional correctness, code quality and organisation, appropriate use of the C programming language, testing procedures, and technical documentation. The project grade may be individually adjusted based on each student’s effective participation.

- Proposal date: until the 8th week.

- Delivery date: penultimate week of classes.

Regular Exam:

- Written exam for 12 values (out of 20 values).

- The student must obtain a minimum of 40% on the written exam

 

Final Classification (0-20) = Written Exam (0-12) + Project (0-8)

 

Conditions for Accessing the Regular Exam:

 - Students must attend at least 50% of the theoretical classes and have no more than two absences in laboratory classes.

- Obtain a minimum grade of 40% on the project

Alternative and Special Exams:

       Hypothesis #1

- The conditions for the Alternative and Special Exams are the same as those for the Regular Exam.

        Hypothesis #2

- Written exam for 20 values.

  Conditions for Accessing the Alternative and Special Exams:

         - Students must attend at least 50% of the theoretical classes and have no more than two absences in laboratory classes.

 

Special Regimes: During the first two weeks of class, special regime and their associated regulations should be explained by email. The current laws and regulations will apply.

The final grade will be validated by an oral exam if the teacher considers it is required.

 


    Internship(s)

    NAO

    Bibliography

    Recommended Bibliography:

    Vasconcelos, V., Marques, L. (2012). Linguagem C – Textos de apoio. Instituto Superior de Engenharia de Coimbra.

    Damas, L. (1999). Linguagem C. FCA – Editora de Informática.

    Rodrigues, P., Pereira, P. , Sousa, M. (1998).  Programação em C++ . FCA – Editora de Informática, 3ª Ed.

    Ritchie, D. M., Kernighan, B. W., & Lesk, M. E. (1988). The C programming language. Englewood Cliffs: Prentice Hall.

    Schildt, H. (2000). Teach Yourself C. McGraw-Hill, 4th Ed.

    King, K. N. (2008). C programming: a modern approach. WW Norton & Company.

    Vasconcelos, V. (2021).  Notes used in classes, lab sheets, solved exercises, and support software. Coimbra: ISEC.