Checking date: 10/05/2018


Course: 2018/2019

Programming
(13868)
Bachelor in Computer Science and Engineering (2011 Study Plan) (Plan: 256 - Estudio: 218)


Coordinating teacher: GARCIA OLAYA, ANGEL

Department assigned to the subject: Computer Science and Engineering Department

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
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 Java a. The JVM b. Basic data types c. Programs d. Variables and constants e. Operators f. Casting g. Input and random numbers h. Comments i. Debugging: errors 4. Flow control: conditionals and loops a. Conditionals (if, if-else, if-else chaining, switch) b. Scope and blocks c. Loops (while, do-while, for, for-each, nested loops) d. Break and continue 5. Simple data structures a. Arrays and matrices b. Records c. Objects and constructors 6. Methods and functions a. Decomposition b. Code reuse c. Implementation hiding d. Encapsulation: information hiding e. Encapsulation: modularity f. Overloaded methods g. Pass by value and pass by reference h. Functions (static methods) i. Introduction to recursion 7. Utility classes: Scanner, String and Math 8. Introduction to Object Oriented Programming a. Introduction to inheritance b. Abstract classes c. Introduction to polymorphism 9. 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 Java as language. Example programs will be written using the Eclipse IDE 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. At least one mid-term exam will take place during these sessions (see weekly schedule). - 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. Usually these problems will be performed in pairs of two students and will need to be uploaded to Aula Global by the end of the week. A final project will be presented to be performed also in groups of two. It could include partial deliveries (see weekly schedule). Both the final project and the weekly assignments will be performed in Java using the Eclipse integrated development environment. - Student's autonomous work: students are expected to finish at home the weekly assignments and to deliver them using Aula Global. In addition, some weeks students will be asked to fill tests 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
  • Bruce Eckel. Thinking in Java. Prentice Hall. 2006
  • Kathy Sierra and Bert Bates . Head first Java. Head First. 2005
  • Russel Winder and Graham Roberts. Developing Java software. Wiley. 2006
Recursos electrónicosElectronic Resources *
Additional Bibliography
  • Budi Kurniawan. Java¿: A Beginner's Tutorial. Brainy Software. 2010
  • Julie Anderson and Herve J. Franceschi. Java Illuminated . Jones & Bartlett Learning. 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://