# Teaching

## CSci 430: Operating Systems

Undergraduate Course, *TAMUC*, 2018

A study of operating systems with emphasis on a multiprogramming environment; concentrates on principles involved in resource management; topics such as job scheduling and memory management are also studied.

## CSci 502: Statistics for Computational Science and Analysis

Graduate Course, *TAMUC*, 2018

This course provides an introductory framework for the statistical background required for scientific computation and data analysis. The course introduces fundamental statistical concepts such as probability, random variables, probability distributions, statistical expectation, sampling distributions, hypothesis testing, linear regression, correlation, and visualization/plotting of data, with emphasis on applications to scientific computing and computational science problems. Concepts will be reinforced by having students use a statistical/scientific computing & visualization software in order to apply the concepts that they learn by solving problems from various disciplines.

## CSci 509: Introduction to Computational Science

Graduate Course, *TAMUC*, 2018

Big scientific data sets are growing exponentially both in size and complexity. Extracting meaningful information from this data requires not only programming skills, but also understanding the analysis work-flows and mathematical models and visualization tools that help to condense large amounts of information into a comprehensible story. Computational science is the scientific investigation of problems through modeling, simulation and analysis of physical processes on a computer. Computational science is now considered by most scientists to be on par with the development of scientific theory and the use of experimentation in order to understand more about our world. Computational science is not the same as computer science. Rather, it is an interdisciplinary blend of scientific models, applied mathematics, computational techniques, and practices. This Introduction to Computational Science course focuses upon simple and intuitive computational models and methods.

## CSci 515: Fundamentals of Programming

Graduate Course, *TAMUC*, 2018

This is an advanced programming course using a high level programming language, C and C++. Specific objectives are to introduce the development of algorithms as a disciplined approach to problem solving; to present programming practices in design, coding, debugging, testing and documentation of computer programs; to provide the student with the fundamental knowledge necessary for further study in the field of computational sciences.

## CSci 560: Neural Networks and Deep Learning

Graduate Course, *TAMUC*, 2018

In this course the theory and practice of neural computation for machine learning are introduced. Artificial neural networks are used for many real-world problems: classification, time-series prediction, regression, pattern recognition. The class starts with an introduction to feed forward neural networks. More complicated multi-layered “deep” networks are then covered. Basic backpropagation, gradient descent and modern regularization techniques are implemented in assignments. The class will look at modern deep learning techniques: convolutional neural networks, deep belief networks and deep recurrent neural models such as LSTM nets. Readings and current results from the literature on neural network research will be discussed.

## CSci 574: Machine Learning

Graduate Course, *TAMUC*, 2018

This semester’s AI course will focus on the sub field of machine learning with some work in the analysis of big data. We will look at classic unsupervised and supervised learning methods, used in the field to classify data, cluster it and find optimizations. This will include looking at k-means and hierarchical clustering, self-organizing maps, linear regression, decision trees, optimization techniques such as genetic algorithms, etc. We will cover ways of getting hold of interesting datasets, ideas on how to collect data from users, and many different ways to analyze and understand the data once you’ve found it.