Programming and Algorithm I

Base Knowledge

N/A

Teaching Methodologies

The curricular unit will be taught through theoretical-practical classes, programming fundamentals and identification of problems and solutions. In the practical component, we will seek to provide learning according to projects to solve problems.

Continuous assessment is carried out using an individual knowledge assessment test with a weight of 45%, in the test format, written component, without consultation, 50% and oral component, to explain the algorithm and justify the code developed, 50%.

An individual programming assignment, weighing 55%. Program evaluations will be evaluated according to the style component (modularity, abstraction, readability, comments, etc.) – weight 30%, functionality (correctness and efficiency of the program in all possible test inputs) – weight 40% and individual defense – weight 30%.

Learning Results

In this course it is expected that the student take base contact with several aspects in terms of programming, among which are: Using the computer as a work tool that performs tasks defined by the programmer and the user; The identification and representation of problems; Mapping / modeling processes; Presentation of structural and algorithmic solutions; Use of programming languages for the construction of solutions, including object-oriented; The identification of data types; The use of conditional execution; The proposal of useful and functional solutions    

Program

The course covers the following contents: What is an algorithm ? Algorithm unplugged (paper): binary information coding and games; introduction to CODE with pseudocde; cogind with Scratch; Moving from paper to Scratch to Python/JavaScript; introdution using Scratch as starting tool; object oriented programming using Java; use of objects; use and definition of classes; conditional and iterated execution; data structures; creation of methods; input and output of data; mechanisms of inheritance and polymorphism; creation of applications composed of several classes.    

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

EDMONDS, Jeff. How to think about algorithms. Cambridge: Cambridge University Press, 2008. ISBN 978-0-521-61410-8; Tim Bell, Ian H. Witten e Mike Fellows, © 2011 Computer Science Unplugged (csunplugged.org); Scratch MIT: scratch.mit.edu; Think Python How to Think Like a Computer Scientist, 2nd Edition, Version 2.4.0, Allen Downey, Green Tea Press, Needham, Massachusetts; Introduction to Computation and Programming Using Python with Application to Computational Modeling and Understanding Data third edition, John V. Guttag, The MIT Press, Cambridge, Massachusetts, London, England; Algoritmia e Programação, Jorge Santos, Sebenta – Instituto Superior de Engenharia do Porto, Departamento de Engenharia Informática, Fevereiro de 2006; Introduction to Python for Computational Science and Engineering (A beginner’s guide to Python 3), Prof Hans Fangohr, Faculty of Engineering and the Environment, University of Southampton United Kingdom and European XFEL GmbH Schenefeld Germany, March 26, 2020; 

https://cs50.harvard.edu/x/2023/weeks/8/ complementar com:

https://runestone.academy/ns/course/index

https://runestone.academy/ns/books/published/webfundamentals/index.html

JS4Python: https://runestone.academy/ns/books/published/JS4Python/index.html?mode=browsing

https://cs50.readthedocs.io/code/#vs-code-desktop