The main concern of this course is to provide a comprehensive overview of computer architecture with specific emphasis on design of reduced instruction set computers, helping the students understand the principles and tradeoffs such as cost/performance, or speed/flexibility, behind the design of modern computer systems. This course provides a foundation for bridging the gap between programming and the inner complexities of the computer.

This course presents the basic tools for the design of synchronous sequential circuits and covers methods and procedures suitable for a variety of digital design applications in computers, control systems, data communications, etc.. Concentration will be on widely-used design methods for synchronous sequential circuits together with their analysis and simulation in VHDL.

This course aims to introduce fundamental concepts of performance evaluation of computer systems and networks. The course starts with an overview of probability theory and statistics. Then, the course continues with some fundamental performance analysis techniques including methods for performance measurement, performance metrics, monitoring, experimental design, and system modeling. Other topics include: comparing two or more systems; system tuning; performance bottleneck identification; characterizing the load on the system (workload characterization); determining the number and size of components (capacity planning); predicting the performance at future loads (forecasting); queuing theory, mean value analysis, and modelling. The course concludes with applications of the learned concepts to measure the performances of computer systems like communication networks, LANs, memory and I/O systems.