Checking date: 09/07/2020

Course: 2020/2021

Study: Bachelor in Computer Science and Engineering (218)

Coordinating teacher: GARCIA OLAYA, ANGEL

Department assigned to the subject: Department of Computer Science and Engineering

Type: Basic Core
ECTS Credits: 6.0 ECTS


Branch of knowledge: Engineering and Architecture

Students are expected to have completed
Specific competences: - Knowledge of imperative programming basic concepts from an object oriented point of view (PO a,k). - Basic knowledge of the syntax of an object oriented programming language (PO k). - Ability to break down a real problem by following an object oriented methodology, in order to code it into a computer program (PO a,c,e,k). - Knowledge of simple structures for information management (PO a). - Ability to understand technical documents and to reuse third parties programming code (PO a,k). - Basic knowledge of computational complexity (PO a,k). General competences: - Ability to self-organize and individual work and learning process planning (PO k). - Ability to work in groups (PO d). - Oral and writing skills (PO g). - Analysis and synthesis abilities (PO a). - Ability to decide among alternatives (PO e). - Motivation for quality (PO k).
Description of contents: programme
1. Introduction a. Components of a program: data and algorithms b. Computer architecture c. Data storage and coding d. Brief introduction to the history of programming: from binary code to component oriented programming e. Compilation vs. Interpretation f. Programming paradigms: imperative, logical and functional programming 2. Flow diagrams 3. Introduction to Python a. The Python interpreter b. Basic data types c. Programs d. Variables and constants e. Input, output and random numbers f. Operators g. Casting h. Comments i. Debugging: errors 4. Flow control: conditionals and loops a. Conditionals b. Scope and blocks c. Loops 5. Simple data structures a. Lists and tuples b. Dictionaries 6. Functions a. Decomposition b. Code reuse c. Implementation hiding d. Pass by value and pass by reference e. Introduction to recursion 7. Introduction to Object Oriented Programming 8. Algorithms a. Introduction to computational complexity b. Search (lineal and binary) c. Sorting (bubble sort, insertion sort, selection sort)
Learning activities and methodology
1. Lectures (1 ECTS)(PO a,k) - Devoted to teaching basic competences, especially those related to basic imperative programming techniques 2. Individual work in class and at home (3 ECTS)(PO a,c,e,g,k) - Devoted to autonomous learning of the specific competences, guaranteeing a minimum knowledge background to contribute with to the group. A problem based learning (PBL) methodology will be followed. - This activity will also contribute to the following generic competences: Oral and writing skills, Analysis and synthesis abilities, Ability to decide among alternatives, Motivation for quality and Ability to self-organize, and individual work and learning process planning capacity. 3. Group works and practices (2 ECTS) (PO a,c,d,e,g,k) - It completes former activities, fixing both general and specific competences and focusing on the following generic competences: Ability to work in groups and Oral and writing skills. A PBL methodology will be also used. METHODOLOGY Classes will be divided into lectures and laboratory sessions. In addition, students are expected to work autonomously at home. - Lectures: they will be used to present general programming concepts using Python as language. Example programs will be written during the class, to reinforce the theoretical concepts. Short test can be performed at the end of each class to evaluate the understanding of the main concepts presented in that class and the previous ones. These test questions will be collected and uploaded to Aula Global where students will be able to answer them as many times as they want. - Laboratory classes: they will consist of three parts. In the first part, the students, randomly selected, will be asked to explain the previous week proposed exercises. Next, a problem will be posed and solved in collaboration by students and teacher. Finally, a series of problems will be presented for the students to solve them. These problems need to be uploaded to Aula Global by the end of the week. A final project will be presented to be performed in groups of two. It could include partial deliveries (see weekly schedule). Both the final project and the weekly assignments will be performed in Python. - Student's autonomous work: students are expected to finish at home the weekly assignments and to deliver them using Aula Global. Office hours Following university rules each professor will publish his/her preferred office hours in Aula Global. Despite this, students are encouraged to contact the professor by email to arrange an appointment any time they want, whether in the preferred hours or not. Small doubts not requiring a face-to-face visit can be made by email. General doubts should be posted in the course forum, available in Aula Global. These doubts can be solved either by the professors or by other students. For the final project, individual tutorship sessions will be arranged for each group.
Assessment System
  • % end-of-term-examination 50
  • % of continuous assessment (assigments, laboratory, practicals...) 50
Basic Bibliography
  • Ana Bell. Get Programming Learn to code with Python. Manning publications. 2018
  • John S. Conery. Explorations in Computing: An Introduction to Computer Science and Python Programming. CRC Press. 2014
Recursos electrónicosElectronic Resources *
(*) Access to some electronic resources may be restricted to members of the university community and require validation through Campus Global. If you try to connect from outside of the University you will need to set up a VPN

The course syllabus and the academic weekly planning may change due academic events or other reasons.

More information: http://