COSC 70.01 Foundations of Applied Computer Science, Winter 2020

This course introduces core computational and mathematical techniques for numerical computing, physical modeling, and data analysis, foundational to applications including scientific computing, computer graphics, machine learning, computational biology, computer vision, and robotics. The approaches covered include numerical modeling and optimizing both linear and nonlinear systems, representing and computing with uncertainty, analyzing multi-dimensional data, and sampling from complex domains. The techniques are both grounded in mathematical principles and practically applied to problems from a broad range of areas.

One of the main goals in this class is to teach you to build your first, own numerical computing library that can accommodate your future studies in the applied computer science fields. We will develop (and deepen) our mathematical understanding of linear algebra, numeric algorithms, and optimization while we develop our numerical codebase. We will create a final project on top of the . The project will leverage the codebase we have been developing during the quarter and will showcase the efficacy of its computational performance and complexity by solving a real application related to applied computer science, including computer graphics, machine learning, image processing, etc.


Staff:

Instructor: Bo Zhu (Sudikoff 153)

Teaching assistant: Jiayin Hu, Stela Tong

Guest lecturer: Yuanming Hu (MIT CSAIL, the author of Taichi) -- High-performance linear algebra


Logistics:

Class Time: 10A, Tuesday/Thursday, 10:10am-12:00pm

X-Hours: Wednesday, 3:30pm-4:20pm

Office Hours:, Professor, MW 5-6pm, Sudikoff 153; TA, TuTh5-6pm, Sudikoff 143

Location: Sudikoff 214 (lectures TuTh), Sudikoff 114 (X-hours Wed)

Web:

The course information will be posted on both Canvas and the public course website.

Discussion:

We will use Piazza for our class discussion. Link posted on Canvas.

Textbook:

Introduction to Applied Linear Algebra -- Vectors, Matrices, and Least Squares (VMLS), by Stephen Boyd and Lieven Vandenberghe

Numerical Algorithms (Numeric), by Justin Solomon


Prerequisite:

CS 1 and Math 3


Starter Code:

We will build our system together using C++ from completely scratch starting from our first X-hour :-)

Assignments and Projects:

Grading policies:: Programming Assignments:

The programming assignments are about incrementally building your high-performance numerical library. The implementation practices include the vector math, basic linear algebra, transformation, dense linear solver, matrix factorization, large-scale sparse solver, least squares, gradient-descent and numerical optimization, conjugate gradient, monte-carlo sampling, etc.

Final Project:

We aim to write our own kernel library that can rival NumPy, Eigen, or Matlab regarding both its coding conciseness and computing performance. You may refer to the other application classes (e.g., physical computing) to see its potential usage. We will have one final project to showcase your own "NumPy" in a real application you choose for the final project.

High-performance numerical libraries and solvers (and our goal!)

Class Schedule:

The following is a tentative lecture schedule. It will be updated dynamically as the course proceeds.

Week 1: Introduction

Tu: Introduction to applied computer science and applied mathematics

Th: Vector, matrix, and Gaussian elimination

Week 2: Linear algebra first glance

Tu: Vector space and linear maps

Th: Geometric transformations for robotics and character animation

Week 3: The sparse world

Tu: Sparse system and its high-performance implementation

Th: Iterative solvers, Krylov space, and scientific super-computing

Week 4: Point matters

Tu: Mathematical foundation for least squares

Th: Weighted least squares and point cloud processing

Week 5: Optimization and differential equations

Tu: Gradient descent and neural network training

Th: Numerical differential equations: a continuous world on discrete grid

Week 6: Estimating the uncertainty

Tu: Introduction to probability

Th: Maximum Likelihood Estimation

Week 7: Observe the hidden world

Tu: Fast SVD decomposition and its Disney snow

Th: Principal component analysis

Week 8: Randomness

Tu: High-dimensional data analysis

Th: Monte-Carlo algorithm and the ray-tracing industry

Week 9: High-performance linear algebra

Tu: Guest lecture: high-performance code for linear operators

Th: Convolution and the modern computer architecture

[Back to home]