Bachelor’s Degree: Computer Science and Engineering - Programming - Semester 1
Undergraduate course, Universidad Carlos III de Madrid, Departamento de Informatica, 2015
(1/4 academic year)
Programming
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
- 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
- Flow diagrams
- 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
- 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
- Simple data structures a. Arrays and matrices b. Records c. Objects and constructors
- 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
- Utility classes: Scanner, String and Math
- Introduction to Object Oriented Programming a. Introduction to inheritance b. Abstract classes c. Introduction to polymorphism
- Algorithms a. Introduction to computational complexity b. Search (lineal and binary) c. Sorting (bubble sort, insertion sort, selection sort)