I have taken many useful courses, here are some example: In Computer Science: CSCI-503: Parallel Programming In this course I have learned the basics of parallel programming which included, Message Passing Interface (MPI), Open MP and Compute Unified Device Architecture (CUDA). This course also includes: Exploration of parallel programming paradigms, parallel computing architectures, hands-on parallel programming assignments, contemporary and historical examples and their impact, context with parallel algorithms. Projects: Developed hybrid MPI, OpenMP and CUDA source code to perform image processing and matrix operations in parallel schemes CSCI-570: Analysis of Algorithms This course is about designing algorithms for computational problems, and how to think clearly about analyzing correctness and running time. The main goal of this course is to provide the intellectual tools needed for designing and analyzing your own algorithms for new problems you need to solve in the future. The course explores fundamental algorithm design techniques such as greedy, divide and conquer, dynamic programming, the network flow, reduction, and linear programming for efficient algorithm construction. CSCI-520: Computer Animation and Simulation This course introduces students to computer animation and related simulation techniques, as applicable to computer games, virtual reality systems, and film special effects. Efficient numerical methods for simulating a variety of visually interesting physical phenomena will be discussed in the context of both interactive and offline simulation. Topics include deformable objects (solids, cloth), fluids, character rigging, quaternions, inverse kinematics, motion capture, sound simulation, collision detection, haptics, rigid body dynamics, and GPU programming. Projects: 1. Implemented interpolation schemes to interpolate human motion data obtained from an optical mocap system (C and OpenGL); 2. Programmed a physically-based simulation of a cube deformation (C and OpenGL) CSCI-596: Scientific Computing and Visualization Students will obtain hands-on experience in: 1) formulating a mathematical model to describe a physical phenomenon; 2) discretizing the model, which often consists of continuous differential or integral equations, into algebraic forms in order to allow numerical solution on computers; 3) designing/analyzing numerical algorithms to solve the algebraic equations efficiently on parallel computers; 4) translating the algorithms into a program; 5) performing a computer experiment by executing the program; 6) visualizing simulation data in an immersive and interactive virtual environment; and 7) managing/mining large datasets. Projects: 1. Implemented hybrid MPI+OpenMP+OpenGL parallel molecular dynamics simulation and animation; 2. Implemented hybrid MPI+OpenMP+CUDA programming PHYS-516: Methods of Computational Physics Students will learn basic elements of computational methods and acquire hands-on experience in their practical use in the context of computer simulations to solve physics problems. Projects: Developed several codes in C to perform quantum dynamic simulation, molecular dynamic simulation, finite difference and random walk CSCI-561: Foundations of Artificial Intelligence I learned foundations of symbolic intelligent systems, agents, search, problem solving, logic, representation, reasoning, symbolic programming, and AI applications in Uncertain Knowledge and Reasoning, Making Complex Decisions. Projects: Developed Python code and implemented different search algorithms and fuzzy logic CSCI-585: Database Systems This course covers the essential concepts, principles, techniques, and mechanisms for the design, analysis, use, and implementation of computerized database systems. Key information management concepts and techniques are examined: information modeling and representation; information interfaces - access, query, and manipulation, implementation structures, and issues of distribution. The database and information management system technology examined in this course represents the state-of-the-art, including traditional approaches as well as recent research developments. By providing a balanced view of "theory" and "practice," the course should allow the student to understand, use, and build practical database and information management systems. The course is intended to provide a basic understanding of the issues and problems involved in database systems, knowledge of currently practical techniques for satisfying the needs of such a system, and an indication of the current research approaches that are likely to provide a basis for tomorrow's solutions. Big Data, Data Mining, Data Modeling, Spatial Data Bases, MapReduce, Machine Learning AME-535a: Computational Fluid Mechanics The goal of the course is to teach the fundamental techniques most commonly used to numerically solve partial differential equations (PDEs), with particular focus on the equations governing fluid flows. Finite difference, finite volume, and finite element methods are studied as different means of discretizing a range of equations central to applications in science and engineering. The theoretical background on accuracy, consistency, stability, and convergence of the numerical schemes is provided, as well as direct and iterative solution techniques for the discrete linear systems. CSCI-653: High Performance Computing and Simulation Provide students with advanced techniques that are common to high performance computer simulations in science and engineering. Scalable algorithms for both deterministic and stochastic simulations of particles and continuum will be implemented on massively parallel and distributed computing platforms, and the simulation datasets will be visualized and analyzed in immersive and interactive virtual environment.