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