Checking date: 08/06/2021


Course: 2021/2022

Programming
(13868)
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

Course:
Semester:

Branch of knowledge: Engineering and Architecture



Requirements (Subjects that are assumed to be known)
None
Objectives
Specific objectives: - Knowledge of fundamentals of imperative programming from an object oriented point of view. - Basic knowledge of the syntax of an object oriented programming language. - Knowledge of best programming practices and code style - Ability to break down a real problem by following an object oriented methodology, in order to code it into a computer program. - Knowledge of simple structures for information management. - Ability to understand technical documents and to reuse third parties programming code and libraries. - Basic knowledge of computational complexity and search and sort algorithms. General objectives: - Ability to self-organize and individual work and learning process planning. - Ability to work in groups. - Oral and writing skills. - Analysis and synthesis abilities. - Ability to decide among alternatives. - Motivation for quality.
Skills and learning outcomes
Description of contents: programme
1. Introduction 1.1. Components of a program: data and algorithms 1.2. Computer architecture 1.3. Data storage and coding 1.4. Brief introduction to the history of programming 1.5. Compilation vs. Interpretation 1.6. Programming paradigms: imperative, logical and functional programming 2. Flow diagrams 3. Introduction to Python 3.1. The Python interpreter 3.2. Basic data types 3.3. Programs 3.4. Variables and constants 3.5. Input, output and random numbers 3.6. Operators 3.7. Casting 3.8. Comments 3.9. Debugging: errors 4. Flow control: conditionals and loops 4.1. Conditionals 4.2. Scope and blocks 4.3. Loops 5. Simple data structures 5.1. Lists and tuples 5.2. Dictionaries 6. Functions 6.1. Decomposition 6.2. Code reuse 6.3. Implementation hiding 6.4. Pass by value and pass by reference 6.5. Introduction to recursion 7. Introduction to Object Oriented Programming 7.1. Classes and objects 7.2. Methods 7.3. Inheritance 7.4. Polimorphism 8. Algorithms 8.1. Introduction to computational complexity 8.2. Search 8.3. Sorting
Learning activities and methodology
1. Lectures (1 ECTS) Devoted to teaching basic competences, especially those related to basic imperative programming techniques 2. Lab sessions (1 ECTS) They complement the lectures and allow the students to put their knowledge into practice 3. Autonomous work (2.5 ECTS) Devoted to individual or group learning the specific competences. 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 work and learning process planning capacity. 4. Office hours (1 ECTS). Individual or in group office hours as requested by the students 5. Final exam (0.5 ECTS) Development with limited time of an object oriented program. It allows the student to show his/her overall knowledge 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. 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
Calendar of Continuous assessment
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 may change due academic events or other reasons.


More information: http://