Teaching

Courses I taught as a TA are elaborated below:

 RutgersUniversity (Department of Computer Science)

+ CS534 Computer Vision [Spring 2014]: This is a basic graduate-level computer vision course that intends to cover a variety of fundamental computer vision topics to get you acquainted with the field.

+ CS314 Principles of ProgrammingLanguages  [Spring 2012, Fall 2012, Spring 2013, Fall 2013]]: Thecourse is aimed at making the student familiar with the general concepts commonto all programming languages so as to facilitate learning newlanguages.  Language paradigms (i.e., logic, functional, procedural,object-oriented) are compared and implementation strategies are discussed.

+ CS110 Introduction to Computers and their applications [Fall 2012]: General survey about what computers is and how they are used, including an introduction to computer programming and contemporary application packages. 


Ain ShamsUniversity (School of Computer Science)

+ Peripheral Interfaces [Fall 2007]: targeted interfacing between CPU and attachedperipheral device via serial port, parallel port, USB port in addition tobuilding custom devices and interface with CPU through IO ports.

 

+ Introduction to algorithms [Fall 2007, 2008,2009]: The main focusis on techniques for constructing correct and efficient algorithms, and ontools to reason about them. Design paradigms include greed, divide-and-conquer,dynamic programming, and reduction to network flow.

 

+ Digital Signal Processing Applied [Fall 2007,2008, 2009, 2010]: targets DSPconcepts and their relation to applications which include Image Processing,Audio Processing and Brain Computer Interface.

 

+ Distributed Processing (OpenMP, OpenCL, MPI) [Spring2008, 2009]: presents distributed processing models. Thepractical work comprises message passing model in terms of MPI and sharedmemory model in terms of OpenMP. Furthermore the course spanned OpenCLas a framework for writing programs that execute across heterogeneous platformsconsisting of CPUs, GPUs, and other processors

 

+ Computer Architecture [Spring 2007, 2008, 2009]:targeted thedesign of computer systems and components. Processor design, instruction setdesign, and addressing; control structures and microprogramming; memorymanagement, caches, and memory hierarchies; and interrupts and I/O structures.Practical work included VHDL design tasks, building assembler andemulator for Intel-Like processor, small-scale version.

+ Numerical computing methods [Fall 2010]: emphasizes the development of numericalalgorithms to provide solutions to common problems formulated in science andengineering. The primary objective is to develop the basic understanding of theconstruction of numerical algorithms and the applicability and limits of theirappropriate use.

 

+ ObjectOriented Design Patterns [Summer 2008, 2009, 2010]: provides an in-depth look into how expertsapply design skills. An overview of the 'gang of four' design patterns anddetailed discussions on specific design patterns was presented. In addition,principles of good object oriented design and heuristics was introduced.