Curricular Unit: Code: Introduction to Algorithms and Programming 1093IAPG Year: Level: Course: Credits: 1 Undergraduate Computer Systems Engineering 6 ects Learning Period: Language of Instruction: Total Hours: Winter Semester Portuguese/English 78 Learning Outcomes of the Curricular Unit: Upon successful completion of this course unit students should be able to (learning outcomes - LO):LO1 - formulate problems in natural language and their translation into an abstract languageLO2 - explain the notion of algorithm, and master its description using various structured notationsLO3 - explain and simulate the execution of an algorithm and its resultsLO4 - correctly distinguish and use programming concepts such as control structures, data types and declarations, operators and expressionsLO5 - apply procedures and functions as a way of structuring algorithmsLO6 - apply basic data structures such as arrays, and strings in algorithmsLO7 - apply structured types and files to algorithmsLO8 - apply procedural programming language C to implement introductory algorithms Syllabus: 1. Algorithms and Computation1.1 Definitions1.2 Representation of Algorithms1.3 Testing Algorithms2. Introduction to Programming2.1 Software and program concepts2.2 Machine language, assembly and high level3. Types and Declarations of Data, Expressions and Intrinsic Functions3.1 Data types: ordinal, real, string, definition and type conversion3.2 Constants3.3 Operators and expressions3.4 Intrinsic functions4. Control structures4.1 Simple and structured instructions4.2 Instructions: conditional, repetitive, jumping4.3 Built-in structures5. Functions5.1 Concept5.2 Local vs. Global Variables5.3 Functions5.4 Recursion6. Indexed Variables and Strings6.1 Concepts6.2 Vectors and Matrices6.4 Character Strings7. Structured Types7.1 Definitions7.2 User-defined records8. Files8.1 Notion, type and use of files8.2 Text and direct access files Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives: The syllabus presented are consistent with the learning objectives of the curricular unit since there is a large convergence between the table of contents and the knowledge that the student is supposed to acquire in each of the program topics.The fundamental concepts of algorithm and computation are presented in the introductory chapters, in the following chapters are presented the fundamentals of computer programming.The learning objectives are achieved by supplementing the theoretical concepts with concrete examples and exercises run in lab environment using appropriate software Teaching Methodologies (Including Evaluation): This Course Unit (UC) is classified as a Project and contains core competences that are not subject to examination. There are elements of continuous assessment whose weighted average is required to be positive, the Practical Score of Continuous Assessment (NPAC)Assessment results:a) Student achieves minimum goals (NPAC >= 9.5 values) and a positive Final Grade (NF1 >=9.5 values) in continuous assessment. Approves the UC with NF1b) Student achieves minimum goals (NPAC >= 9.5 values) and (NF1 < 9.5 values). Can be assessed on examination. Exam assessment is independent of continuous assessment. UC Final Grade is NF2c) Student does not achieve minimum goals (NPAC < 9.5 values). Does not pass the UC and will not be able to access the examExpected assessment elements:1. Test 12. Test 23. Practical project4. ExamContinuous Assessment Model:NPAC = (3)NF1 = ((1) + (2) + NPAC)/3, NPAC >= 9.5Exam Assessment Model (NPAC >= 9.5):NF2 = (4) Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes: The teaching/learning methodology applied in this curricular unit as well as its evaluation system is perfectly aligned with the objectives to be attained by the students at the end of the term. The theoretical concepts are presented, discussed, applied and evaluated in the context of lectures, which guarantees students a solid foundation to understand the challenges facing this area of knowledge. On the other hand, so that the study is not restricted to conceptual models, in the practical lessons are presented concrete case studies and implemented solutions for real problems using appropriate software. This combination guarantees training for students that allows them to meet the scientific goals, essential to a good understanding of the theme, as well as the ability to adapt to technological changes. The evaluation process consists of theoretical tests and practical work also guarantees a correct balance between the efforts dedicated to both components. The objective is to train professionals’ specialized in state-of-the-art techniques and tools but also ensure its ability to follow future developments. In this curriculum unit the problem of algorithms and programming are presented and evaluated in theoretical component. These concepts are then applied in the resolution of the worksheets and practical work in the context of practical classes Reading: [Sa] Marques de Sá, J. P. “Fundamentos de Programação Usando C”, Editora FCA, 2004, ISBN 972-722-475-X[Damas] Damas, Luis “Linguagem C”, Editora FCA, 1999, ISBN 972-722-156-4[Samp] Sampaio, Isabel; Sampaio, Alberto “Fundamental da Programação em C”, Editora FCA, 1998, ISBN 972-722-130-0[Vasc] José Vasconcelos e João Carvalho, “Algoritmia e Estruturas de Dados – Programação nas linguagens C e Java”, Editora, Centro Atlântico, 2005, ISBN 989-615-012-5[KR] Kernighan, Brian W. “The C Programming Language”, Prentice-Hall International, 1988[CLR] Cormen, Leiserson, Rivest “Introduction to Algorithms “ MIT-Press, 1990, ISBN: 0-262-03141-8 Lecturer (* Responsible): João Viana (jviana@ufp.edu.pt)José Manuel Torres (jtorres@ufp.edu.pt)