With a doctoral degree in Mathematics, and a second one soon in Computer Science, I have the ability to teach a wide range of courses in the undergraduate and graduate levels. I strongly believe that a person with a Ph.D. in Computer Science should be able to teach almost any undergraduate course in the discipline, and certainly the fundamental computer science courses in programming, discrete mathematics, data structures, algorithm analysis and design, operating systems and computer organization. My research interests lie broadly in the areas of algorithms, computational complexity and cryptography. Correspondingly, my teaching interests are more focused in computational complexity, computability theory and cryptography at the graduate level. However, I am fully capable of also teaching courses in Probability, Machine Learning, Data Mining, and Databases.