Go to:
You are in:: Start > CC1003
Site map
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Imperative Programming

Code: CC1003     Acronym: CC1003     Level: 100

Classification Keyword
OFICIAL Computer Science

Instance: 2019/2020 - 1S Ícone do Moodle

Active? Yes
Web Page: http://www.dcc.fc.up.pt/~pbv/aulas/progimp
Responsible unit: Department of Computer Science
Course/CS Responsible: Bachelor in Computer Science

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L:B 2 Official Study Plan 3 - 6 56 162
L:CC 77 Plano de estudos a partir de 2014 1 - 6 56 162
L:F 5 Official Study Plan 3 - 6 56 162
L:G 0 study plan from 2017/18 2 - 6 56 162
L:M 3 Official Study Plan 2 - 6 56 162
L:Q 0 study plan from 2016/17 3 - 6 56 162
MI:ERS 113 Plano Oficial desde ano letivo 2014 1 - 6 56 162

Teaching Staff - Responsibilities

Teacher Responsibility
Pedro Baltazar Vasconcelos

Teaching - Hours

Theoretical classes: 2,00
Laboratory Practice: 2,00
Type Teacher Classes Hour
Theoretical classes Totals 2 4,00
Pedro Baltazar Vasconcelos 4,00
Laboratory Practice Totals 9 18,00
Francesco Renna 4,00
Pedro Baltazar Vasconcelos 2,00
Pedro Gabriel Dias Ferreira 6,00
Bernardo Luís Fernandes Portela 4,00

Teaching language



Introduction to imperative programming using the C programming language. Study and implementation of fundamental algorithms and data structures (numerical computation, indexed variables, sorting and searching).
Introduction to the use of basic development tools in a GNU Linux system: text editor, compiler and debugger.
Introduction to the informal sepecificaction of program components (e.g. functions) and the use of automatic testing tools for detecting and correcting errors in programs.






Learning outcomes and competences

After completing this course, students are expected to:
- know the semantics of fundamentals building blocks of the C programming language;
- be able to simulate the step-by-step execution of small programs;
- be able to write, compile and test programs that solve simple programming problems given an informal natural language specification;
- know some basic algorithms for numeric computation, counting, searching and sorting;
- aquire basic abilities in structured programming.

Working method


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



Introduction to the C programming language. Brief historical context. Caracteristics of the language. Strengths and weaknesses of C. Pitfalls and general guidelines in effective use of the language.

Fundamentals of the C language. Basic syntatic structure: directives, declarations, expressions. Compilation and execution.

Basic types (integers, floating point numbers and characters). Flow of control. Cycles. Definition functions. Fomated I/O.

Elementary numerical and semi-numerical algorithms (e.g. Euclid's method for gcd, computing powers, Newton's method for root finding)

Indexed variables. Fundamental algorithms: counting, searching and sorting.  Processing character strings.

Program organization: header files, standard libraries.

Error detection and prevention. Use of a "debugger" and assertions.

Introduction to programming with pointers. Using pointers to process strings and indexed variables.

Mandatory literature

000002544. ISBN: 0-393-96945-2

Complementary Bibliography

Jon Bentley; Programming pearls. ISBN: 9780201657883
Kernighan Brian W.; The C programming language. ISBN: 0-13-110163-3

Teaching methods and learning activities

Lectures: oral presentation supported by slides; interactive resolution of illustrative programming examples and complementary exercises.

Laboratory classes: solving proposed exercises using computer with standard develpment tools (text editor, compiler, debugger). Use of a custom-set automatic test system to aid detecting and correcting errors in solutions of selected exercises.


gdb - gnu debugger
gcc - gnu c compiler
GNU emacs

Evaluation Type

Distributed evaluation without final exam

Assessment Components

designation Weight (%)
Exame 80,00
Teste 20,00
Total: 100,00

Amount of time allocated to each course unit

designation Time (hours)
Frequência das aulas 56,00
Estudo autónomo 92,00
Trabalho laboratorial 14,00
Total: 162,00

Eligibility for exams

Students loose frequency if:
- miss atendance of more than a third of laboratory classes;
- do not submit in time correct solutions to at least half of the worksheet exercises with automatic tests for each week.

Students enrolling the course for a second time may request exemption from laboratory classes when these conflict with classes from other courses. Such students should contact the lecturer by email and explain they concrete situation for this exemption.

Calculation formula of final grade

The classification is given by the following components:

T1: intermediate test
T2: second test during the exam period
F: final mark

The final mark is: F = T1*0.20 + T2*0.80

Exams for frade grade improvement and special needs are marked for 100% of the final grade.

Classification improvement

Students can improve the final exam mark in accordance with the general regulations.

Recommend this page Top
Copyright 1996-2023 © Faculdade de Ciências da Universidade do Porto  I Terms and Conditions  I Acessibility  I Index A-Z  I Guest Book
Page created on: 2023-09-27 at 08:30:17 | Acceptable Use Policy | Data Protection Policy | Complaint Portal