The concept of 'algorithm' and 'computer'
Problems and solutions. The computer as the universal executor of algorithms. Properties of an algorithm. Algorithms, computations and computed functions.
Designing algorithms
Algorithms for problem solving. Algorithm design: from problem analysis to program execution. Algorithm characteristics: data and instructions. Representation techniques for algorithms. Flow-charts. Examples of algorithms. Boolean Algebra and exercises.
High-level programming languages and programming environments
Programming paradigms. Data abstraction, control abstraction, procedural abstraction in the imperative paradigm. Data types, control structures, functions and procedures. Compilers and interpreters. Linker, editor, debugger. Functional and logic paradigms. Object-oriented programming. Web languages.
Information representation
Information and its representation. Binary codes. Positional notations: positional notations with different bases. Representation of natural numbers, whole numbers, real numbers (fixed point, floating point, IEEE 754 format). Representation of Booleans and characters. Text representation. Analogical vs. digital representation. Representation of sounds, images, videos. Error detection and error correction codes. Lossless and lossy compression.
Computer architecture
Von Neumann model. Central processing unit: components, fetch-decode-execute cycle. Instruction representation: machine language, assembly language, examples of instructions in the MIPS assembly language. Central memory. Cache memory. Magnetic and optical disks, flash memory. Device management: structure and operation of the input/output interface. Examples of input/output devices.
Operating system
Operating system functions and organization. Process manager: process, process state, scheduling, process interaction. Central memory manager. Device managers. File system. Command interpreter.
Computer networks
Classification of computer networks and their functionalities. Commutate and broadcast networks. Local networks: topologies and access methods. TCP/IP model. Internet.
Introduction to the C language
The basic instructions of the C programming language: elementary data types, arrays, structures, control structures, input/output instructions, functions. Examples and exercises.