Examines current topics and issues associated with computing and software systems. Offered: AWSpS.
In this course we will explore a variety of problems whose solutions rely on numerical and statistical methods such as: numerical integration, solving systems of linear equations, linear least squares and optimization. We will be learning and using Julia, a high-level, high-performance, dynamic programming language, specially designed for parallel and technical computing. Although we will focus most of the course on learning the mathematical toolkit of scientific computing, we will also spend some time on collaborative development and presentation tools (i.e. version control systems and LaTeX). The course will be designed to be self-contained, so prior knowledge of linear algebra and statistics is not required, but might make the concepts more interesting. The course will also serve as an overview of topics in mathematical optimization, statistical learning, data analysis and parallel computing.
Student learning goals
* Programming in Julia;
* Matrix multiplication and factorization;
* Linear regression;
* Gradient descent method for approximation optimal solutions;
* Using version control systems;
* Typesetting documents.
General method of instruction
This class will meet for two hours every Friday. It will be a mixture of interactive lectures and in-class exercises.
* You should have some familiarity of programming constructs (CSS 161 or equivalent), or be able to quickly learn them;
* Calculus I and II.
Class assignments and grading
There will be conceptual homework and/or programming assignments every week; as well as a take home final. There may also be some graded in-class activities.
40% for the programming assignments; 30% for the conceptual homework assignments; 20% for take home final; 10% for the in-class activities.