-
Presentation
Presentation
This course offers an extensive exploration of procedural programming using the C programming language, covering both fundamental and advanced topics. Students will gain a comprehensive understanding of the history of C programming and its benefits, as well as learn how to create and run simple C programs. The curriculum focuses on essential concepts, including data types, variables, control structures, functions, and pointers, with opportunities for hands-on experience to reinforce previous knowledge. The course also delves into advanced topics such as file handling, dynamic memory allocation, and data structures like lists and queues. Through programming projects, students will develop practical experience and hone their skills, with a particular emphasis on gaining a thorough understanding of the organization and operation of computer memory as a resource. By the end of the course, students will be able to create efficient programs that make effective use of memory.
-
Class from course
Class from course
-
Degree | Semesters | ECTS
Degree | Semesters | ECTS
Bachelor | Semestral | 5
-
Year | Nature | Language
Year | Nature | Language
1 | Mandatory | Português
-
Code
Code
ULHT260-498
-
Prerequisites and corequisites
Prerequisites and corequisites
Not applicable
-
Professional Internship
Professional Internship
Não
-
Syllabus
Syllabus
M0: Introduction: Overview, C programming, its history, benefits, environment setup, simple program. M1: Basic Syntax: Definitions, data types, operators, input/output, control structures. M2: Advanced Control Structures: Switch, break/continue, goto. M3: Functions: Defining/calling, arguments/return values, recursion. M4: Arrays and Strings: Definitions, character arrays, strings, functions, 2D arrays. M5: Pointers: Definitions, arithmetic, stack/heap memory, dynamic memory allocation. M6: Advanced Pointers: Pointers to pointers/functions. M7: Structures and Unions: Definitions, nested structures, unions. M8: File Input/Output: Overview, opening/reading/writing files, binary input/output. M9: Preprocessor Directives and Macros: Definitions, #define, #ifdef, #undef, macros with parameters. M10: Bitwise Operators: Definitions, bitwise AND/OR/XOR/NOT/shift operators. M11: Linked Lists: Definitions, creation/manipulation, examples, stacks/queues with arrays/linked lists
-
Objectives
Objectives
By the end of the course, students should be able to create efficient and fast C programs, taking into consideration the correct use of memory. They should have a solid understanding of procedural abstraction, and be able to analyze and create simple algorithms using this approach. Additionally, students should gain an understanding of the principles behind garbage-collector systems in high-level languages, and the operation of data structure libraries. Overall, the course aims to provide students with the skills and knowledge necessary to create well-designed, efficient, and robust C programs, and to understand the fundamental principles that underpin the operation of modern programming languages.
-
Teaching methodologies and assessment
Teaching methodologies and assessment
Pandora
-
References
References
K. N. King - C Programming: A Modern Approach, 2nd Edition Pereira, Alexandre - C e Algoritmos. 2a Ed., Lisboa, Portugal: Edições Sílabo, 2017. Kernighan, B. W. Ritchie D. M. - The C Programming Language. 2nd Ed: Prentice Hall Professional Technical Reference, 1988. ISBN0131103709
-
Office Hours
Office Hours
-
Mobility
Mobility
No