Go to:
Logótipo
You are here: Start > L.EIC003

Programming Fundamentals

Code: L.EIC003     Acronym: FP

Keywords
Classification Keyword
OFICIAL Informatics Engineering and Computing

Instance: 2021/2022 - 1S Ícone do Moodle

Active? Yes
Web Page: https://moodle.up.pt
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Bachelor in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L.EIC 396 Syllabus 1 - 6 52 162

Teaching Staff - Responsibilities

Teacher Responsibility
João António Correia Lopes
Pedro Baltazar Vasconcelos
Mais informaçõesLast updated on 2021-07-28.

Fields changed: Objectives, Resultados de aprendizagem e competências, Pre_requisitos, Métodos de ensino e atividades de aprendizagem, Fórmula de cálculo da classificação final, Provas e trabalhos especiais, Componentes de Avaliação e Ocupação, Melhoria de classificação, Obtenção de frequência, Programa, Observações, URL da página, Software de apoio à Unidade Curricular, Avaliação especial

Teaching language

Portuguese

Objectives

BACKGROUND

Fluency in the process of software development is an essential prerequisite to the work of Informatics Engineers. To use computers to solve problems effectively, students must be competent at reading and writing programs using high-level programming languages.

SPECIFIC AIMS

The global aim of this Unit is to give the student the ability to create algorithms and use a programming language to implement, test, and debug algorithms for solving simple problems.

The student will understand and use the fundamental programming constructs, and the functional approach to programming, specifically effect-free programming where function calls have no side-effects and variables are immutable, and contrast it with the Imperative approach.

PERCENT DISTRIBUTION

Scientific component: 40%
Technological component: 60%

Learning outcomes and competences

At the end of the course, the student is expected to handle programming problems of medium complexity, using the imperative or functional programming approaches or paradigms.

More specifically, the student will be able to:

  1. Design, implement, test and debug a program that uses the fundamental programming constructs, basic computations, standard conditional and iterative structures, simple Input/Output, persistence (files) and exceptions.
  2. Understand Data Abstraction and use simple and aggregate data types.
  3. Understand Procedural Abstraction and use the definition of functions, parameter passing, recursion.
  4. Write useful functions that take and return other functions.
  5. Implement basic algorithms that avoid assigning to mutable state or considering reference equality.
  6. Correctly reason about variables and lexical scope in a program using function closures.
  7. Define and use iterators and other operations on aggregates, including operations that take functions as arguments (especially map, reduce/fold and filter), and list comprehensions.
  8. Use the programming tools that help writing, testing and documenting computer programs according to the programming best practices.

Working method

Presencial

Pre-requirements (prior knowledge) and co-requirements (common knowledge)

No previous knowledge is required.

Program

Topics:

  • Introduction to Computational Thinking, algorithms and programming with Python.
  • Fundamental programming concepts: simple data types; variables, expressions and statements; program flow, conditionals, iteration; functions, parameter passing, recursion; files.
  • Working with aggregate data types: strings, tuples, sets, lists, dictionaries.
  • Effect-free programming by using immutable variables and function calls without side effects.
  • First-class functions and closures.
  • Utility higher-order functions: map, reduce/fold and filter.
  • Generators and list comprehensions.
  • Problem-solving strategies.
  • Programming tools, debugging, exceptions.

Mandatory literature

Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers; How to Think Like a Computer Scientist — Learning with Python 3 (Freely avaliable online in PDF and HTML)

Complementary Bibliography

Steven F. Lott; Building Skills in Python - A Programmer's Introduction to Python, FreeTechBooks, 2010 ([HTML])
Allen Downey; Think Python - How to Think Like a Computer Scientist, Green Tea Press, 2nd Edition, Version 2.2.23, 2015 ([HTML] [PDF])
David Mertz; Functional Programming in Python, O’Reilly Media, 2015 ([PDF])
Ernesto Costa; Programação em Python. ISBN: 978-972-722-816-4

Teaching methods and learning activities

The continuous enrolment of the student in the course is promoted through the study and discussion of the course topics, previously distributed in Jupyter Notebooks, that will later be used in lectures.

The student is motivated to find the best ideas to solve specific problems, execute them and implement the programming solutions, in an elegant, legible and efficient (time and space) mode using the Python programming language.

Automatic correction tools are used to increase the efficiency of the feedback given to the students.

Lecture classes (T) are used to present and discuss the topics of the program using materials previously made available to the students.

Recitation classes (TP) are used to help students understand the program's topics and solve the weekly programming assignments.

In-class and homework programming assignments are given on a weekly basis to improve the regular and effective development of autonomous learning processes and are tested and graded using Moodle assignments.

In-class assignments are used for summative evaluation at the end of each lecture class using quizzes.

Students are encouraged to use the Playground, containing programming exercises selected by theme: "easy" to solve before the lecture, "medium" to solve before the weekly assignments (RE), and "hard" to solve before the practical tests in a computer (PE).

In the classroom, the students use the same working environment that is used later in the individual assessments (PE) — IDE Spyder3 to develop and test and the Moodle to submit the individual and the weekly assignments.

Whenever deemed necessary in the classroom, especially during the first month of classes, students are encouraged to go to the "Clinic", supervised by student assistants, to get help.

Software

Anaconda Distribution, https://www.anaconda.com
Python 3.8, https://www.python.org/, also included in Anaconda
Spyder3, https://www.spyder-ide.org/, also included in Anaconda
Jupyter Notebook, https://jupyter.org/, also included in Anaconda

keywords

Physical sciences > Computer science > Programming

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Designation Weight (%)
Teste 90,00
Trabalho prático ou de projeto 10,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 102,00
Frequência das aulas 60,00
Total: 162,00

Eligibility for exams

Students are eligible for the final theory evaluation (TE) if: (i) they do not exceed the absences limit (25% of the total number of estimated recitation classes), and (ii) if they obtain a minimum of 40% at the final practical on computer evaluation (PE03). In the case a student fails to get the minimum of 40% in the practical evaluation (PE) or in the theory evaluation (TE), the RFF classification is attributed.

Calculation formula of final grade

The evaluation will be based on the following components:

CA — Continuous assessment, divided into (i) LELecture in-class evaluation: Multiple-choice questions about programming concepts, to be answered on an individual basis in the lectures (the best 20 from a total of 23 are selected); (ii) RERecitation and away weekly evaluation: Weekly recitation classes and away programming assignments (the best 10 out of 12 are selected)

PEPractical on computer evaluation: Individual programming assignments in Moodle (the best 2 from a total of 3 are selected)

TETheory evaluation: Multiple-choice questions about programming concepts, to be answered on an individual basis in Moodle with the consultation of one book

Final classification = 10% CA + 65% PE + 25% TE

Observations:

  1. A minimum mark of 40% is required for the last on computer evaluation (PE03).
  2. A minimum classification of 40% in the component TE is required.
  3. There will be another PE (PE04) for students eligible for the assessment that miss the evaluation with proper justification, or students that did not obtain the minimum required in the component; in the latter case, the grade is limited to 50%.
  4. There will also be another TE (TE02) for students eligible for the assessment that miss the evaluation with proper justification, or students that did not obtain the minimum required in the component; in the latter case, the grade is limited to 50%.
  5. In case plagiarism is detected, by using automatic tools (e.g. duplicated or similar code submitted), the marks of all involved are adjusted.
  6. Students who, by the middle of the course, achieve at least 95% in the continuous assessment plus the practical on computer evaluation (CA,PE), may opt to do a small project to replace the CA component. If the project is successfully completed, the CA grade will be the maximum grade (100%); otherwise the student retains the midterm CA grade.

Examinations or Special Assignments

The evaluation of this course uses four types of examinations:

  • In lecture classes, multiple-choice questionnaires in Moodle to assess students comprehension of the exposed concepts (LE).
  • In-class and away programming assignments related to the current topics, submitted in Moodle and automatically graded (RE).
  • Practical on computer evaluation of programming assignments, submitted in Moodle and automatically graded, with the consultation of given language reference texts (PE).
  • Theory evaluation with one book consultation using one multiple-choice questionnaire in Moodle to assess students ability to use and discuss the best algorithms and data structures for specific problems (TE).

Special assessment (TE, DA, ...)

In the case of students who do not attend classes and go without the weekly evaluation (LE and RE), the final classification includes the classification of the two evaluation components, Practical on computer evaluation (PE) and Theory evaluation (TE), as of the regular students.

Final classification = 70% PE + 30% TE

Observations:

  1. A minimum mark of 40% is required for the last practical on computer evaluation (PE04).
  2. A minimum classification of 40% of each component, PE and TE, is required.
  3. There will be another PE (PE04) for students eligible for the assessment that miss the evaluation with proper justification, or students that did not obtain the minimum required in the component; in the latter case, the grade is limited to 50%.
  4. There will also be another TE (TE02) for students eligible for the evaluation that miss the examination with proper justification, or students that did not obtain the minimum required in the component. In the latter case, the grade is limited to 50%.
  5. In case plagiarism is detected, by using automatic tools (e.g. duplicated or similar code submitted), the marks of all involved are adjusted.

Classification improvement

In the following academic year, the student can request improvement of classification that includes the final practical evaluation in computer (PE) and the theoretical evaluation (TE), with the consultation of only one book, the same as for the regular students.

Final classification = 70% PE + 30% TE

Observations:

  1. A minimum classification of 40% of each component, PE and TE, is required.

Observations

No individual component grades (LE, RE, PE, TE) can be reused in another enrollment in the course.

Recommend this page Top
Copyright 1996-2023 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2023-09-30 at 10:31:12 | Acceptable Use Policy | Data Protection Policy | Complaint Portal