Education

2013.9-2017.06 University of Colorado Denver

Major: Computer Science (Master)
Fields of Research: Artificial Intelligence, Machine Learning

Artificial Intelligence

Approaches to design of systems for solving problems usually solved by humans, especially those related to intelligent decision making. Emphasis on various types of knowledge representation.

Advanced Computer Architecture

Important concepts in the structural design of computer systems are covered. Topics include memory hierarchy, super pipelining and super scalar techniques, dynamic execution, vector computers and multiprocessors.

Theory of Automata

Studies the relationships between classes of formal languages (regular, context-free, context-sensitive, phrase-structure) and classes of automata (finite-state, pushdown, Turing machines). Additional topics include decidability and computability issues.

Operating System

Studies the principles of computer operating systems and their essential components. Team projects expose students to a variety of system design issues as they relate to the functionality and performance of the system. Topics include I/O devices, Disk Scheduling, File System Organizations, Directory Systems, Sequential and Concurrent process, CPU Scheduling, Memory Management, Deadlock, Process and Threading, and review of some related articles in the literature.

Parallel and Distributed System

Examines a range of topics involving parallel and distributed systems to improve computational performance. Topics include parallel and distributed programming languages, architectures, networks, algorithms and applications.

Software Architecture

Software Engineers begin with System Descriptions, Requirements, and Constraints and must transform these into Software Architectures, Constraints, and Requirements. This course looks at Chronic Software Production Problems and how they might be addressed using Architectural Techniques to create Software Architectures from System Descriptions.

Simulation

Analytic and simulation techniques for the performance analysis of computer architecture, operating systems and communication networks. Rigorous development of queuing models. Study of simulation languages and models. Overview of discrete-event digital computer simulation. Fundamentals of model development, Monte Carlo simulation, the life cycle of a simulation study, input and output data analysis, world views and time control, random number and variate generation, credibility assessment of simulation results, simulation languages, applications of simulation using the General Purpose Simulation System (GPSS).

Shader and GPU Programming

This course provides a foundation in OpenGL Shader programming for game design, animation, scientific visualization, and interactive software with an extension to GPGPU programming in OpenCL and CUDA. The objective of this course is to develop an understanding of shaders and graphics programming through practical examples for practical applications in software engineering. The emphasis of this course is based in C++ programming using the OpenGL API with the OpenGL Graphics Library Shading Language (GLSL).

Database Systems

Introduces database system concepts, with examination of relational database systems from conceptual design through relational schema design and physical implementation. Topics include database design and implementation for large database systems, transaction management, concurrency control, object-oriented and distributed database management systems.

Theory of Distributed Computing

This is an introduction to algorithmic aspects of distributed computing. The topics considered are those that arise in systems comprised of loosely coupled, heterogeneous and failure-prone processing units. The range of applications starts at wide-area networks, goes through clusters of workstations connected by local-area networks, to multi-processor shared-memory machines. The relevant properties of solutions reflect the communication mechanisms (message passing, shared memory), the algorithmic constraints (deterministic, randomized), the timing models (synchronous, asynchronous), and the types of failures (crashes, Byzantine). The algorithmic goals to achieve include: sharing resources in a fair manner, providing fault-tolerance, and maintaining global consistency of computations. The specific problems include: symmetry breaking, consensus, resource allocation, renaming, and synchronization.
  • 2011.3-2013.2 Arapahoe Community College

    Major: Computer Science (Bachelor)

    Java(Object Oriented and Data Structures), Java Programming and Object-Oriented Application Development, Database Design and Development, Computer Network, Advanced Programming, Complete Web Authoring: HTML & XHTML.