Scientific Computing

Overview

This course is designed primarily for 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 succeed in these topics.  This course is designed to ensure that 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.

Disclaimers

This course is not a CS/CE course where you would study various programming languages, as well as software engineerings, and hardware architectures, etc. in depth from theoretical aspects. If you’re interested in such topics you’re in a wrong place.

Please note that the primary goal of the course is to focus on how to use scientific tools to successfully conduct your researches in modern sciences from practical perspectives.

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).

Instructor

Youngjun Lee (ylee109_at_ucsc_dot_edu), Applied Mathematics and Statistics

Office Hours: Wed 1:00PM -- 3:00PM at Baskin Engr 358

Lectures: MWF 09:20AM -- 10:25AM at Engineer 2 192

TA

Sky Trigueiro (striguei_AT_ucsc -DOT- edu), Applied Mathematics and Statistics

Office hours: Fri 2:00PM -- 4:00PM at Baskin Engr 358

Sections:

  • Th 01:30PM -- 03:00PM at Baskin Engr 105
  • F 11:00AM -- 12:30PM at Baskin Engr 105

Students With Disabilities

UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me privately during my office hours or by appointment, preferably within the first two weeks of the quarter. At this time, I would also like us to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact DRC by phone at 831-459-2089, or by email at drc@ucsc.edu.