Class Programming Languages I

  • 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.

  • Code


  • 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


    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.

  • 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

Lisboa 2020 Portugal 2020 Small Logo EU small Logo PRR republica 150x50 Logo UE Financed Provedor do Estudante Livro de reclamaões Elogios