Teaching

Hamdioui teaches and/or contributes to the teaching of the following courses:

To solve a given e.g., electrical engineering (EE) problem, usually we start with developing an appropriate model of such a problem. Once the problem is modeled using an appropriate "Data Structure", one can focus one solving the modeled problem instead of the EE problem itself. Choosing the right "Data Structure" is therefore very important for generating efficient and optimal solutions. Solutions for such problems consist usually of "Algorithms". Analyzing the algorithms in terms of efficiency, time complexity, required memory, etc is therefore an important aspect when dealing with Electrical Engineering problems.

This course deals with the two important aspects of solving electrical engineering problems; namely "Data Structure" and "Algorithms". The most used data structure (e.g., stacks, trees, graphs, hash tables, matrices) will be addressed. The fundamentals from discrete mathematics that are needed to design and analyze algorithms such as complexity, counting methods, recurrence relations, etc. will be covered. Many standard algorithms (e.g., Dijkstra algorithm, Greedy algorithm) will be discussed and analyzed. NP-Complete problems will be also addressed.

  • ET 3432: Computer Architecture and Organisation

This course provides an overview of the architecture and organization of a computer hardware system and the important principles of computer organization. The course demonstrates the interrelation between hardware and software, and illustrates how the computers operates and how they can be programmed, with the emphasis on processor design and implementation.

Topics discussed are Computer system overview, Measuring and comparing performance, ISA: instruction set architecture (MIPS, x86, 8051, JVM), Computer arithmetic, processor implementation, fast processor implementation, Memory hierarchy and caching, Interfacing, Modern architectures and organizations (superscalar,VLIW/IA64/Itanium), etc.

The programming language C is a general-purpose programming language which features economy of expression, modern control flow and data structures, and a rich set of operators. C is not a "very high level" language, nor a "big" one, and is not specialized to any particular area of application. But its absence of restrictions and its generality make it more convenient and effective for many tasks like operating systems, compilers, etc.

This course provides the background needed to understand, modify, and extend an existing program (e.g., compilers). It also provides the necessary background to write programs for some applications. The topics discussed are: input and output, pointers and arrays, pointers to functions, structures, typedef, macro's, the C preprocessor, header files, type casting, etc. Other topics covered during the lab are: Makefiles, debugger, etc.

With the continuous scaling of transistor feature sizes, the VLSI chip density is exponentially increasing. This results in a significant complexity of today's and future VLSI technology; such a complexity has reached the point where billions of transistors are integrated on a single chip (as it is the case for System on Chip). To guarantee customer's satisfaction, produced VLSI chips have to be reliable and fully tested. Verification and production testing represent 50 to 60% of the chips production total cost, and are now the biggest cost of the technology. It has been known for a while that tackling problems associated with testing VLSI chips at earlier design stage levels significantly reduces the testing cost. Thus it is important for hardware designers to be exposed to concepts of VLSI testing which can help them design better products at lower cost. To get a feeling about how important is test technology, you can imagine that just (functionally) testing of a 64bit adder (no flips flops) at 1GHz will cost 585 years! What about today's chips with millions of flip flips? What are the practical and the efficient ways to deal with testing of VLSI chips?

This course is an introduction to the field of digital systems testing, which is an integral part of IC design and manufacturing. The topics discussed are: Importance of VLSI Testing, Test process and Automatic Test Equipment, Defects versus Fault Models, Fault Simulation, Logic Simulation, Combinational Circuit Testing, Sequential Circuit Testing, Memory Testing, Design-for-Testability, Scan Design, Boundary Scan, Built-in-Self Test, Delay Test, Current Testing, semiconductor and IC reliability, etc.

The goal of this course is to make students familiar with the idea of setting up a company. We specifically focus on high tech products and markets because of their very specific dynamics.Students are expected to start a (virtual) company and to make a thorough analysis of the commercial possibilities of a particular product or technology. The students have to come up with an idea for the company themselves and should be as realistic as possible. The course will explain how to write business plans and make a financial analysis of the required investments. A number of speakers from industry (venture capitalists or entrepreneurs) will be invited to present their views.
The business plan will center around the following issues:
1. What is the target market and what are the unique selling points?
2. Who are the main competitors?
3. What are the required management skills?
4. What are the investment requirements?

Said Hamdioui