Monday / Wednesday 2:30 - 4:00 PM
299 Cory Hall
EECS244 CCN: 25748
Units of Credit: 3
Integrated circuits are so complex that they require a sophisticated battery of algorithms and software design tools to aid in their design. Because the complexity and performance of integrated circuits is evolving exponentially the techniques and tools used to aid in their design are constantly evolving as well. This course reviews the most fundamental algorithms and techniques underlying today's integrated circuit design approaches, and also gives some context for new problems.
This course may be of interest to a number of types of students. The first are graduate students in the area of computer-aided design. For these students it provides a one-semester introduction to the area and a review of a significant amount of the material for preliminary examinations in computer-aided design. A second type are those students principally interested in the design of digital integrated-circuits. For students embarking on a lifetime of using computer-aided design tools to design circuits, some time spent in understanding the principles underlying these tools will be well invested. A third class of students are those interested in exploring the frontier between technology CAD areas such as device and process modeling and mainstream CAD. With the increasing impact of processing effects on integrated circuits in small process geometries this has been an especially fruitful area of CAD research. Finally, this course may also be of interest to computer science students who are interested in seeing a wide variety of practical applications of algorithms and mathematical programming techniques such as: shortest/longest path; all-pairs shortest path; union-find; dynamic programming; string-matching; linear-programming; non-linear programming; branch and bound; and backtracking.
Course material will be presented in a series of lectures over the semester. The syllabus is below. Course grade will depend on:
The class project may be either a theoretical or practical investigation of open problems in areas discussed in the course.
The catalog lists EE140 or EE141 as a prerequisite, but that is not really necessary. It would be useful to have some basic understanding of circuits and digital logic at the CS150 level. It would also be useful to have some background in algorithms at the CS170 level, but this is not essential. It is expected that students have some background in one of circuits, algorithms, or software engineering. If you don't have a strength in any one of these the course will be tough.