Curriculum vitae

The following are some undergraduate level courses I have completed and the topics they have covered.

Statistics Background

Statistical Learning

  • Linear Regression
  • Goodness of Fit vs Prediction error
  • Cross Validation
  • Effects of correlated predictors
  • Feature selection
  • AIC
  • Ridge regression
  • LASSO
  • Elastic Net
  • Elastic Net
  • Smoothers (Local regression, Splines)
  • Curse of dimensionality
  • Regression Trees
  • Bagging
  • Classification
  • LDA, LQA,
  • Logistic Regression
  • Classification Trees
  • Ensembles
  • Bagging
  • Random Forests
  • Boosting
  • Neural Networks
  • Unsupervised learning
  • K-means
  • model-based clustering
  • Hierarchical clustering
  • Principal Components
  • Multidimensional Scaling

Course: STAT 406, UBC Programming Language: R

Sample Surveys

  • Planning and practice of sample surveys
  • Unequal probability sampling
  • Systematic, multistage and stratified sampling
  • Ratio and regression estimation
  • Aggregation techniques
  • Pilot studies
  • Dealing with nonresponse

Course: STAT 344, UBC
Programming Language: R

Statistical Inference

  • Moment generating functions
  • Sampling distribution theory
  • Large sample theory and methods of estimation
  • Estimating the parameters of a Normal distribution
  • Bias and variance of an estimator
  • Maximum likelihood estimation
  • Likelihood ratio testing
  • Bayesian estimation
  • Hypothesis testing
  • Confidence interval construction
  • Analysis of categorical data
  • Goodness of fit tests

Course: STAT 305, UBC
Programming Language: R

Finding Relationships in Data

  • Modeling a response variable as a function of several explanatory variables
  • Multiple regression for a continuous response
  • Logistic regression for a binary response
  • Log-linear models for count data
  • Finding low-dimensional structure
  • Principal components analysis (PCA)
  • Cluster analysis

Course: STAT 306, UBC
Programming Language: R

Time Series and Forecasting

  • Trend and seasonality
  • Autocorrelation
  • Stationarity
  • Stochastic models including AR, MA, ARMA, ARIMA, SARIMA models
  • Exponential smoothing
  • Holt-Winters methods
  • Box-Jenkins approach
  • Frequency domain analysis

Course: STAT 443, UBC
Textbook: Chatfield. The Analysis of Time Series, An Introduction
Programming Language: R

Math Background

Calculus I, II, III

Course: MATH 100, MATH 101, MATH 200 UBC

Stochastic Processes

  • Discrete-time Markov chains
  • Poisson processes
  • Continuous time Markov chains
  • Renewal theory

Course: MATH 303, UBC
Textbook: Ross. Introduction to Probability Models.

Applied Linear Algebra

  • Solving linear equations
  • Interpolation
  • Finite difference approximations
  • Subspaces, basis and dimension
  • The four fundamental subspaces for a matrix
  • Graphs and networks
  • Projections
  • Complex vector spaces and inner product
  • Orthonormal bases, orthogonal matrices and unitary matrices
  • Fourier series
  • Discrete Fourier transform
  • Eigenvalues and Eigenvectors
  • Hermitian matrices and real symmetric matrices
  • Power method
  • Recursion relations
  • Markov chains
  • Singular value decomposition
  • Principle component analyis (PCA)
  • Applications of linear algebra to problems in science and engineering
  • Use of computer algebra systems for solving problems in linear algebras

Course: MATH 307
Textbook: Strang. Linear Algebra and Its Applications
Programming Language: MATLAB

Numerical Computation for Algebraic Problems

  • Analysis of round-off errors
  • Numerical techniques for basic mathematical processes
  • Solving nonlinear equations in one variable:
    • fixed point iteration
    • bisection method
    • Newton’s method
    • secant method
  • Direct methods for solving linear systems
    • Gaussian elimination algorithm
    • LU decomposition algorithm
    • Gaussian elimination with partial pivoting algorithm
    • Cholesky decomposition algorithm
    • Condition number of a matrix
    • Sparse and banded matrices
  • Solving linear least squares problems
    • Normal equations
    • QR decomposition
    • QR least squares via Givens rotations and Householder transformations
  • Iterative methods for linear systems
    • Fixed point iteration
    • Jacobi method
    • Gauss-Seidel method
    • SOR
    • Gradient descent
    • Conjugate gradient
  • Eigenvalue problems
    • Power method (with inverse and shift modifications)

Course: CPSC 302, UBC
Textbook: Ascher, Greif. A First Course in Numerical Methods
Programming Language: MATLAB

Numerical Approximation and Discretization

  • Analyis of round errors
  • Numerical techniques for basic mathematical processes involving discretization, and their analysis.
  • Polynomial interpolation
    • Monomial basis
    • Lagrange basis
    • Newton’s basis
    • Chebyshev points
    • Osculating polynomials
  • Piecewise polynomial interpolation
    • Piecewise Hermite interpolation
    • Splines
  • Numerical differentiation
    • Deriving differentiation formulas
    • Difference formulas using polynomial interpolation
    • Roundoff errors
    • Richardson extrapolation
  • Numerical integration
    • Basic quadrature rules
    • Composite numerical integration
    • Gaussian quadrature
    • Adaptive quadrature
  • Numerical solution of initial value ordinary differential equations
    • Mathematical modelling of an outbreak of zombie infection
    • Euler’s method
    • Runge-Kutta methods
    • Multistep methods
    • Absolute stability and stiffness
    • Error estimation

Course: CPSC 303, UBC
Textbook: Ascher, Greif. A First Course in Numerical Methods
Programming Language: MATLAB

Computer Science Background

Computer Vision

  • Processing and interpretation of images
  • Image sensing
  • Sampling
  • Filtering
  • Algorithms for colour analysis
  • Texture description
  • Stereo imaging
  • Motion interpretation
  • 3D shape recovery and recognition

Course: CPSC 425, UBC Programming Language: Python

Advanced Relation Databases

  • Physical database design
  • Indexing
  • Relational query processing and optimization
  • transaction processing
  • Concurrency control
  • Crash recovery
  • Data warehouses
  • Data cubes
  • Views

Course: CPSC 404, UBC Textbook: Ramakrishnan, Gehrke. Database Management Systems
Programming Language: SQL

Intermediate Algorithm Design and Analysis

  • Asymptotic analysis
  • Divide and conquer algorithms
  • Graphs
  • Greedy algorithms
  • Dynamic programming
  • NP-completeness
  • Study of classic problems:
    • Vertex cover
    • Set cover
    • Graph colouring
    • Hamiltonin path, cycles
    • Travelling salesman
    • Steiner tree
    • Subset sum
    • Knapset
    • SAT
    • Independent set
    • Set packing
  • Choosing which algorithm technique, such as divide and conquer, greedy strategies, search or dynmaic programming is suitable for a program
  • Choosing appropriate data structures to represent a given problem
  • Recognizing similar properties between different problems

Course: CPSC 320, UBC
Textbook: Kleinberg, Tardos. Algorithm Design

Software Engingeering

  • REST and Async programming
  • Software specifications
  • Agile development
  • Object-oriented design principles
  • Design patterns
  • Automated testing
  • Term project: Query engine
    • Promise objects
    • Reading, parsing, writing large datasets
    • REST endpoints
    • packages: restify, jszip, parse5, mocha, chai

Course: CPSC 310, UBC
Programming Language: Typescript

Relational Databases

  • Overview of database systems
  • Logical database design and normalization
  • Relational algebra
  • Datalog
  • SQL
  • Data warehousing
  • Data mining
  • Information retrieval
  • Entity-relationship model
  • Java + SQL programming project

Course: CPSC 304, UBC
Textbook: Ramakrishnan, Gehrke. Database Management Systems
Programming Language: SQL, Java

Internet Computing

  • Basic communication protocols
    • Application layer: DHCP, DNS, FTP, BGP, SMTP, POP3
    • Transport layer: TCP, UDP
    • Network layer: IP
    • Link layer: ARP
  • Application layer
    • Socket programming with TCP, UDP
    • DNS resolvers
  • Tranport layer
    • Multiplexing and demultiplexing
    • Principles of reliable data transfer (Go-Back-N, selective repeat)
    • Conjestion control
  • Network layer
    • routers
    • Network address translation
  • Link layer
    • Error-detection and error-correction techniques
  • Security in computer networks
    • cryptography
    • VPNs
    • firewalls
  • Principles associated with developing distributed applications

Course: CPSC 317, UBC
Textbook: Kurose, Ross. Computer Networking, A Top Down Approach
Programming Language: Java, C

Computer Hardware and Operating Systems

  • Instruction set architecture and a sequential CPU
  • A pipelined CPU
  • The memory hierarchy
  • File systems
  • Virtual memory

Course: CPSC 313, UBC
Textbook: Bryany, O’Hallaron. Computer Systems, A Programmer’s Perspective
Programming Language: C

Artificial Intelligence

  • Reasoning and representation
  • Uninformed and heuristic search methods
  • Constraint satisfaction problems
  • Supervised learning
  • Reasoning under uncertainty
  • Planning under uncertainty
  • Multiagent systems

Course: CPSC 322, UBC
Textbook: Poole, Mackworth. Artificial Intelligence, Foundations of Computational Agents
Programming Language: Java

Machine Learning and Data Mining

  • Cross validation
  • Decision trees
  • Naive Bayes
  • K-nearest-neighbours (KNN)
  • Random forests
  • K-means
  • Linear regression
  • Nonlinear regression
  • Logistic regression
  • Regularized regression
  • Maximum likelihood estimation
  • Principle component analysis (PCA)
  • PageRank
  • Gradient descent
  • Stochastic gradient descent
  • Neural networks
  • Dimensionality reduction
  • Applications to computer graphics, computer games, bio-informatics, information retrieval, e-commerce, databases, computer vision and artificial intelligence

Course: CPSC 340, UBC
Textbook: Hastie, Tibshirani, Friedman. The Elements of Statistical Learning, Data Mining, Inference, and Prediction
Programming Language: MATLAB