- EECS 498/598-09 Embedded Security
This course will teach students advanced methods to model, measure, and protect the security of embedded systems and the Internet of Things (IoT). The course will have a particular focus on the interface between hardware and software and the physics of computation. Included in the IoT security topic is a deep dive on security of Operational Technology (OT) such as found in high-assurance factory floors, and Microelectrical Mechanical Systems (MEMS) technology common in IoT, automotive, medical, RFID, and satellites. Hands-on lab exercises will involve frequency-domain analysis of signals, voice recognition system integrity and authenticity, acoustics both audible and ultrasonic, radio waves and modulation, and laser fault injection of semiconductors. The semester will culminate with a group project and demonstrations. Short essays will give individual students the opportunity to explore the application of the new skills and methods to design secure implantable medical devices, automobiles, and smartphones. Students will be required to complete safety training and will gain comfort with working in a maker space. By the end of the course, students will become comfortable safely creating signals with acoustics, radios, and lasers to test the security of embedded systems.
- EECS 496 Professionalism (home-ec for engineering undergrads)
- EECS 280 Introduction to Programming
Security (EECS 388)
Also known as the only EECS course where
the waiting list itself is greater than the capacity of the course.
We do not accept waiting list requests by email, but if you do not
make it in, please try again in Winter 2016.
- Programming and Data Structures (EECS 280)
This awesome course will introduce students to techniques and
algorithm development and effective programming, top-down analysis,
structured programming, testing, and program correctness. Program
language syntax and static and runtime semantics. Scope, procedure
instantiation, recursion, abstract data types, and parameter passing
methods. Structured data types, pointers, linked data structures,
stacks, queues, arrays, records, and trees. On the positive side,
students will learn about the popular language C++.
On the downside,
students will become comfortable using a programming language that
misused. There are horses for courses, and the
selection of a programming language should match the design
requirements of an engineering problem.
- Introduction to Cryptography (EECS 475)
Covers fundamental concepts, algorithms, and protocols in cryptography. Topics: ancient ciphers, Shannon theory, symmetric encryption, public key encryption, hash functions, digital signatures, key distribution. Highlights AES, RSA, Discrete Log, Elliptic Curves. Emphasizes rigorous mathematical study in terms of algorithmic complexity. Includes necessary background from algorithms, probability, number theory, and algebra.
- Medical Device
Security (EECS 598-008)
This course teaches students the engineering concepts and skills for creating more trustworthy software-based medical devices ranging from pacemakers to radiation planning software to mobile medical apps. Topics span computer engineering, human factors, and regulatory policy. Students will master technical skills in reverse engineering, static analysis, fuzz testing, hazard analysis, validation, requirements engineering, radio-frequency communication, physiological sensing, and fundamental concepts from system engineering that lead to safer and more effective medical devices that are increasingly interconnected and wirelessly controlled.
What do students think of my teaching?
Here are some excerpts from past teaching reviews. Most students
think my courses are challenging. Many students like my teaching
methodology. No one likes my jokes.
EECS 280 Programming and Data Structures:
``He is really good. He made EECS not that boring or tedious.''
``Enthusiastic and enjoyable lectures.''
``Haven't seen any professor better than professor Fu in lecturing!''
``Topics are useful, the instructor is helpful, recorded lectures are the best thing in classes''
``You are one of the best lecturers I have had in my college career.''
``Professor Fu is a very enthusiastic lecturer and always fosters a positive learning environment in the class.''
``I'm an IA for another EECS class, so I've learned to notice active learning techniques. They really help! Thanks for showing me how it's supposed to be done!''
``I like how the professor uses both the board and slides to teach. He writes important information on the board so we can reference it when talking about slides.''
``It got me interested in a new side of computer science I never would have seen, and I love it.''
``Now I understand the difference between heap and stack.''
``He takes his time to make sure we understand what he was teaching.''
``Kevin has managed to turn what I think is a boring topic into an interesting class!''
``He was always very approachable and helpful.''
``I like that this class, which I find fairly difficult, was paired with a very effective and talented teacher.''
``The content was extremely interesting and Professor Fu is an incredible teacher.''
``Kevin is one of the department's finest professors. Whatever he's doing, he is doing it right.''
``Professor Fu truly inspires interest in an otherwise dull topic.''
``Don't make it 9:05AM.''
Archive of courses
to Computer Security (EECS 388)
Fall 2015, Fall 2017
- Introduction to Cryptography (EECS 475)
- Programming and
Data Structures (EECS 280)
Fall 2013, Winter 2015
- Medical Device Security (EECS 598-008)
- Architecture and Assembly (CS201)
Spring 2009 reviews, Spring 2010 reviews, R.I.P.
- Applied Cryptography (CS466)
Fall 2010 reviews, Spring 2008, Spring 2007, Spring 2006
- Advanced Information Assurance (CS660)
Fall 2012, Fall 2007, Fall 2006 (co-taught)
- RFID Electronic Identification Lab (CS291E)
- Hot Topics in Information Security (CS691I)
Fall 2007, Fall 2005 (co-taught)
- First-Year Student TAP Seminar (CS191A)
Fall 2006 (co-taught)