Development of small software units. Precise specifications expressed using logic and discrete mathematics. Design methods and design patterns....

Searching, sorting, dynamic programming, greedy algorithms, abstract data structures, balanced trees, hashing, graphs, design principles, complexity,...

Systematic design procedures; combinatorial circuit design, design of sequential machines; redundancy, binary number representations and arithmetic,...

Syntax and semantics of formal languages; propositional logic; proof systems; sets, functions, relations, and algebras; graphs and trees; finite state...

First-order logic; proof by induction; definition by recursion; models of computation; computational limits and complexity; higher-order logic;...

Linear systems, signals, filters; sampling theorem; state and frequency domain; simple input-output systems; the relation of discrete and continuous...

Fundamental concepts of imperative programming (procedures, statements, control structures, iteration, recursion, exceptions); basic data structures...

Software design process, design and architecture of large systems, design for change and expansion; Documentation, inspection; Incremental design;...

Processes, threads, concurrency; Synchronization mechanisms, resource management and sharing; Objects and concurrency; Design, architecture and...

Modelling of dynamic continuous physical phenomena in both continuous and discrete time. Control theory, stability analysis and feedback controller...

Use of assembler language. I/O and storage devices. Highly optimized code. Low level representation of control and data structures. Device drivers....

Measures of performance, instruction set architecture, computer arithmetic, datapath and control, pipelining, the memory hierarchy, I/O systems,

Design of time-evolution of/in three dimensional spaces. Dynamical systems (discrete and continuous). Physical and artificial systems. Design patterns...

Mathematical foundations, the graphics pipeline, geometrical transformations, 3D visualization, clipping, illumination and shading models and the...

Oral and written presentation skills; types and structure of technical documents; software documentation for the user; formulating and presenting...

Software design process. Professional responsibility. Using specifications. Documentation. Module Specification. Module interfaces. Module internal...

Measurement, unit testing, slicing and debugging, inspection, integration testing, regression testing, testing strategies, software metrics, software...

Processes and threads, synchronization and communication; scheduling, memory management; file systems; resource protection; structure of operating...

Computer arithmetic, stability, sensitivity. Numerical methods for polynomial manipulation, interpolation, data fitting, integration, differentiation,...

Hard and soft real-time systems. Safety classification. Fail-safe design, hazard analysis. Discrete event systems. Modes. Requirements and design...