Instructor & TA

Instructor: Dongwook Lee (dlee79 _at_ ucsc _dot_ edu), Applied Mathematics and Statistics

Instructor's Office: Baskin Engieering 353C

Office Hours: Mon 11 am -- 12 pm; Thu 1:00 pm -- 2:00 pm (Tentative)

Lectures: TuTh 3:20 pm -- 4:55 pm, Stevenson 175

TA: Michael Lavell (mlavell _at_ ucsc _dot_ edu)

 

Course Objectives

This course is designed primarily for incoming graduate students who may be familiar with their core theoretical and research topics but may not be as familiar with standard computational techniques. The use of computation as the third pillar of research (along with theory and observation/experimentation) in both applied mathematics and statistics, as well as most other scientific and research disciplines, is now completely standard and necessary to success in these topics.  This course is designed to ensure that incoming graduate students have the necessary basic computational skills and tools on which to build more specific technical knowledge. The course therefore acquaints the student with all the most fundamental aspects of scientific computing, providing a brief overview of the most important topics from algorithmic development, programming (including the use of compilers, libraries, debugging, optimization, code testing, code publication, etc.), data storage, and data analysis and visualization tools. Students will be introduced to a variety of programming languages and will gain hands-on practice on all subjects through practical homework assignments and projects.

 

Course Materials

Major reading materials: Online lecture note

Other supplementary reading materials:

 

Grading Policy

Homework Problems and Programming Assignments (60%): There are going to be homework problem sets on both theories and computer programming in every week (tentative). There is a policy on any late homework submission -- you are going receive a maximum of 80% if late by less than a day; 50% if late by more than a day. You are strongly encouraged to use a version control such as svn or git.

Final-term project (40%): Due December 14, 2017 (tentative) -- In this final project you will need to use scientific tools you have learned from the class to solve a common computer coding project. It is also required to write a scientific report in a professional style using either latex or any word documents and submit as a pdf file. Please keep in mind that the quality of the project goes past the homework set materials. Project submission is to be made to your version control repository by the due date. The project will take 40% of your total grade.

 

A List of Topics

  • Week 1:  Introduction to Unix/Linux basics including basic tools for programming – editors, compilers, libraries, Makefiles, config files, ssh/scp/sftp, version control, code publication, etc.
  • Week 2-3: Introduction to basic algorithm development and program structures (e.g., data types, data structures, IF, DO, and WHILE constructs, functions, subroutines, arrays, modules, etc.) that are common to many languages. We will use Fortran (90 or above) as the primary example language for the coursework.
  • Week 4: More Advanced Programming in Fortran (90 or above): e.g. modular programming, dynamic array allocation, user typed structures, I/O, debugging, etc.
  • Week 5-6: Introduction to flexible interpreted languages for interfaces using Python programming as the example.
  • Week 7: Introduction to object-oriented programming concepts through compare-and-contrast of Python, C/C++ and Fortran.
  • Week 8: Basics of computer architecture (chip architecture, cache, network infrastructure, file systems, etc) with a view to understanding code optimization, bottlenecks, debugging, etc.
  • Week 9: Data analysis and visualization: Introduction to basic analysis and visualization tools; good practices for running codes in production mode.
  • Week 10:  Introduction to good software engineering practices; code validation and verification; high-performance computing (HPC).

  

Students with Diabilities

If you qualify for classroom accommodations because of a disability, please get an Accommodation Authorization from the Disability Resource Center (DRC) and submit it to me in person outside of class (e.g., office hours) within the first two weeks of the quarter. Contact DRC at 459-2089 (voice), 459-4806 (TTY), or http://drc.ucsc.edu for more information on the requirements and/or process.