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: 2023/2024 - 1S Ícone do Moodle

Active? Yes
Web Page: https://moodle2324.up.pt/course/view.php?id=4957
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 449 Syllabus 1 - 6 52 162

Teaching language

Suitable for English-speaking students

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. Understanding variables and lexical scope in a program.
  7. Define 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.
  9. Solve numerical problems using computer programs.

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.
  • Utility higher-order functions: map, reduce/fold and filter.
  • List comprehensions.
  • Problem-solving strategies.
  • Programming tools, testing and debugging.

Mandatory literature

Brad Miller; How to think like a computer scientist (Freely avaliable online in PDF and HTML)

Complementary Bibliography

Steven F. Lott; Building skills in Python
Allen B. Downey; Think Python. ISBN: 978-1-449-33072-9
David Mertz; Functional programming in Python. ISBN: 978-1-491-92856-1

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 (distributed beforehand in Notebooks accompanied by videos), both in lectures and recitation classes, as well as through programming assignments inside and outside classes.

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 mode (in terms of time and space) using the Python programming language.

Lecture classes are used to discuss the topics of the program and present related programming case-studies. Recitation classes 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. Automatic correction tools are used to increase the efficiency of the feedback given to the students.

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, and "hard" to solve before the practical tests in a computer (minitests).

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.

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 110,00
Frequência das aulas 52,00
Total: 162,00

Eligibility for exams

To obtain eligibility for exams, students must not exceed the absence limit, established in the rules (25% of the total number of estimated practical lessons).

Students with worker-student status (TE) or students who have obtained attendance in the previous school year are exempt from attendance. However, all students must submit, in the present school year, all the evaluation components indicated below.

Calculation formula of final grade

Assessment includes two components: (i) Continuous assessment (AC) — weekly assessment, in-class and outside of class, based on Moodle activities; and (ii) supervised Computer-based mini-tests (MT1, MT2, EN, ER) — in the classroom, to be carried out in Moodle and divided into theoretical multiple-answer questions and computer programming exercises.

Assessment components:

AC: Multiple-answer questions (QT) and computer-based weekly programming exercises (QP), being the grade AC = 25% QT + 75% QP.

MT1, MT2: Computer-based exams, with 2 components, theoretical (25%) and practical (75%), to be taken during the semester.

EN: Computer-based exams, with 2 components, theoretical (25%) and practical (75%), to be taken at the 1st examination period ("Época Normal").

ER: Computer-based exam, with 2 components, theoretical (25%) and practical (75%), to be taken at the 2nd examination period ("Época de Recurso"), for:

  • students who have not been approved in the Ordinary examination period; and
  • students who want to improve the grade

The final grade for the Ordinary examination period ("Época normal") is given by the following formula:

Final grade = 10% AC + 90% (MT1+MT2+EN)/3

The final grade for the Supplementary examination period ("Época de Recurso") is given by the following formula:

Final grade = 10% AC + 90% ER

Examinations or Special Assignments

The evaluation of this course uses two types of examinations:

  • Theory assessment through a multiple choice quiz in Moodle, with consultation of the reference documentation, to assess the learning of fundamental programming concepts and the students' knowledge of adequate algorithms and data structures for specific problems.
  • Practice assessment through computer programming exercises, using Moodle with automatic classification and the consultation of the reference documentation.

Special assessment (TE, DA, ...)

Students with a special status, although they may be exempted from attending practical lessons, are subject to the same assessment conditions as regular students.

Classification improvement

Students who want to improve their grade from the previous academic year, will have to undergo the entire evaluation process; they only waive the requirement of assiduity to practical classes.

Observations

Daily reading of the institutional e-mail (FEUP) is mandatory, to which copies of all important information, that is posted in Moodle, are sent.

Recommend this page Top
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2025-06-14 at 03:24:23 | Acceptable Use Policy | Data Protection Policy | Complaint Portal