Informatics for Science, Technology, and Society
Objectives
Knowledge
The fundamental components of a computer and the tools of a software development system.
The essential constructions of an imperative programming language (Python)
Fundamental notions of relational databases.
Some basic concepts involved in the World Wide Web.
Application
Decompose a problem into simpler problems.
Design an algorithm for solving a simple problem.
Write a program, making a correct use of the basic constructions of an imperative programming language.
Test a program in a modern programming environment.
State a very simple SQL query.
Access resources available in the network inside a program.
Soft-Skills
Ability to do a programming project, skills in time management.
General characterization
Code
12751
Credits
6.0
Responsible teacher
Hervé Miguel Cordeiro Paulino
Hours
Weekly - 4
Total - 52
Teaching language
Português
Prerequisites
This unit has no access requirements.
Bibliography
Main references
- Allen B. Downey. Think Python: How to Think Like a Computer Scientist (version 2.0.17). Versão PDF disponível em http://greenteapress.com/wp/think-python-2e/
- Charles Severance. Python for Everybody: Exploring Data Using Python 3 (2016-Jul-05 version). PDF em https://www.py4e.com/book.php. .
Additional references
- Brian W. Kerninghan, Understanding the Digital World 2nd Ed, Princeton. University Press, 2017
- Exploratory Programming for the Arts and Humanities, Nick Montfort
- Ernesto Costa. Programação em Python - Fundamentos e Resolução de Problemas, FCA, 2015
Teaching method
There are two hours of lectures and a lab session of three hours each week.
Lectures are problem-driven. They start with a concrete problem, which motivates the presentation of some computer systems topic, some data type or some programming language construct, and end with the complete source code of a program that solves it.
In the lab classes, students design, implement and test programs for solving simple problems in Science and Engineering fields.
Evaluation method
Evaluation Components
The evaluation comprises two components: the laboratory component and the theoretical-practical component. The grading of all assignments and components are rounded to the nearest tenth.
Laboratory Component
The laboratory component is composed of a mini-assignment (trab1) and a final assignment (trab2). The works are carried out in groups (of two students). Although there are practical classes dedicated to the assignments, these must also be carried out outside the class period. The evaluation of the assignments includes a test to asses the knowledge that the students have about the code delivered. The grade of each element of the group depends on the code delivered (by the group) and on the (individual) performance in this test. Consequently, the grade of the two elements of the group may be different.
The laboratory component grade (CompL) is given by:
CompL = 0,4*trab1+0,6*trab2
To obtain frequency, it is required that:
CompL >= 8
Theoretical-Practical Component
The theoretical-practical component is composed of two tests or an exam (in the "Época de Recurso"). All tests are individual, written and with closed-book.
The theoretical-practical component (CompTP) score is the average of the test scores (T1, T2 ) or the exam score (Ex):
CompTP = (T1+T2)/2 or CompTP = Ex
To obtain approval, it is required that:
CompTP >= 9
Final grade
The final grade (F), with frequency, is given by:
- F = CompTP, if CompTP < 9
- F = 0.40 CompL + 0.60 CompTP
Ratings Obtained in Previous Years
Theoretical-practical and laboratory grades for the 2020-21 and 2021-22 academic years are accepted, if within this year''s limit.
If you also obtain grades this year, in the calculation of the final grade, the highest grade of each component will be used.
Subject matter
Introduction: Problems, algorithms, programs, and computers. Goals and components of computer systems. Program execution. The interpreter.
Fundamental Concepts of Programming: Constants, variables and expressions. Numbers and strings. Predefined functions. Assignment statement and sequence of statements.
Levels of abstraction in problem-solving. Functions. Source code files. Program life cycle. Kinds of error. Unit testing.
FOR loops. Vectors. The IF statement. Relational and logical operators. Matrices. Graphics. WHILE loops. File systems. Binary and ASCII files. Structures. Vectors of structures.
Networks and communication protocols. The World Wide Web.
Introduction to databases: the relational model, relations, some basic SQL queries.
Simulation of continuous models.