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 at the end of 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:
- Apply the concepts and techniques needed to develop efficient algorithms to solve proposed problems.
- Develop programs in a structured way in the C language, tackling real problems in an efficient and organised manner.
- Systematically debug and test programs, interpreting and analysing the results to ensure the correctness and efficiency of the code developed.
- Demonstrate an understanding of the main characteristics and concepts of object-orientated languages, contributing to a more comprehensive vision when solving programming problems.
- Actively contribute to group work, communicating effectively, sharing ideas and knowledge, and collaborating constructively to achieve the proposed objectives.
- Professional presentations, clearly communicating ideas and technical results in an organised way.
- Demonstrate ability in writing and documenting technical reports
- 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. Arrays
– Review of fundamental concepts of Arrays and pointers
– Arrays and strings as function arguments
– Arrays of Pointers
– Multidimensional arrays
– Multidimensional arrays as function arguments
2. Dynamic Storage Allocation
– Memory allocation
– Main functions of dynamic memory allocation
– Deallocating Storage
3. Ordering and Searching Algorithms
– Searching and Sorting Algorithms
– Selection Sort
– Bubble Sort
– Insertion Ordering
– Linear Search
– Sentinel Linear Search
– Binary Search
4. 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
5. Files
– Text files versus binary files
– Streams
– Basic file operations
– Standard files
– Text mode access
– Binary mode access
– Direct access and sequential access
– Insert, change, and delete Elements from a file
6. Dynamic Data Structures
– Self-referential structures
– Types of dynamic data structures
– Linked lists
– Operations on linked lists
7. Writing Large Programs
– Header Files
– Divide a program into files
8. Various Topics
– Enumeration types
– Conditional operator (? 🙂
– Comma operator
– Macros
– Program arguments.
9. Introduction to Object Oriented Languages
– Programming paradigms
– Characteristics of object oriented languages
– Classes and Objects
– Analysis of small programs in C ++
Curricular Unit Teachers
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.