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

  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)