I have seventeen years of teaching experience. I enjoyed teaching thousands of students from different cultures and nationalities over the years. I started teaching as a teaching assistant at Cairo University. When I moved to the US, I worked as a teaching assistant then an instructor at VirginiaTech. After earning my Ph.D., I worked as an assistant professor at Cairo Univerity. I moved back to the US to work as an assistant professor at Rhode Island College then as a collegiate associate professor at Virginia Tech. My industry experience at Microsoft Research help me introduce real life problems to students.
This course covers advanced data structures and analysis of data structure and algorithm performance. Sorting, searching, hashing and advanced tree structures and algorithms. File system organization and access methods. Course projects require advanced problem-solving, design, and implementation skills.
This course emphasizes the understanding of data structures and algorithms from an analytical perspective rather than an implementation standpoint. The concepts developed allow discussion of the efficiency of an algorithm and the comparison of two or more algorithms with respect to space and run-time requirements. Analytical methods are used to describe theoretical bounds as well as practical ones. In general, this course addresses the constraints that affect problem solvability.
This course emphasizes on the introduction of the basic data base models, corresponding logical and physical data structures, comparisons of models, logical data design, and database usage. Terminology, historical evolution, relationships, implementation, data base personnel, future trends, applications, performance considerations, data integrity
This course introduces algorithmic thinking and computer programming in the Python programming language. Topics include algorithms,flowcharts, top-down design,selection,repetition, modularization, input-output and recursion.
This course introduces fundamentals of problem specification, program design and algorithm development are taught in the Java programming language. Topics include functions, selection, iteration, recursion, arrays, classes and inheritance.
This course introduces abstract datatypes and data structures. Topics include time complexity, linked lists stacks, queues, lists, hashing, trees, heaps, searching, sorting, and development of object-oriented programming.
This course introduces students to fundamental concepts in the design, implementation and evaluation of user interfaces for computers , smartphones and other devices.
This course introduces Database structure, organization, languages, and implementation are introduced, including data modeling, relational and object-oriented systems, query languages, and query processing.
This course introduces the software development process is examined from initial requirements analysis to operation and maintenance. Student teams develop a software system from requirements to delivery, using disciplined techniques.