******** Syllabus ******** .. raw:: HTML

last updated: May 17, 2022

Welcome to the SimCenter Programming Bootcamp 2022. Following the success of our online version of this workshop, this year's **offering will be solely online**. **Why are we offering the workshop online?** * The online format allows easy access at low cost makes this format the most equitable and accessible and affordable version of the SimCenter Bootcamp. * You can expect to collaborate with students from across the globe and enjoy the oportunity to make new friends at unexpected places. * Our mentor system allows alumni of this workshop series to return, share their experience, and help you learn from a community of like-minded graduate students and post-docs. * The SimCenter team is putting in all effort to recreate some of the community building benefits through discussion sessions and social time. **The bootcamp is organized** as two weeks of daily self-study assignments, followed by three (3) hours of online lectures and exercises via ZOOM, followed by homework assignments and some more self-study video sessions. Every morning, office hours are held for one (1) hour before the actual meetings. These two weeks are offered as individual or as one combined workshop as follows. The Python workshop is geared towards beginner and intermediate level material. The first three days will cover and refresh basic concepts of python, as well as fundamentals of code design. Thursday will transition you to command-line use of python, as you'll need on any high-performance computing (HPC) environment. The workship will conclude on Friday with a team coding challange that emphasizes on collaborative coding and computing. Python - June 13-17, 2022 ------------------------- * Day 1 * `Welcome Message and SimCenter Intro `_ * `What is a computer? Programming philosophy `_ * Python Basics * Data types * Loops * Exercise * Conditions * Assign Homework #1 * Day 2 * Homework #1 review * Python matrix data types * Exercise * Python file IO * Text files * Spread sheet data * Exercise * Python plotting * Assign Homework #2 * Day 3 * Homework #2 review * Intro to Object Oriented Programming (OOP) * Python OOP * Classes * Inheritance * Numeric data types: operator overload * Assign Homework #3 * Day 4 * Homework #3 review * Python modules * Organizing your code in files * Exercise: bringing python to the command line * system call/subprocess * Assign Homework #4 * Day 5 * Homework #4 review * Team coding competition/exercise: collaborative tasks for groups of 3-5 people * Closing Remarks Introduction to C/C++/HPC - July 18-22, 2022 -------------------------------------------- * Day 1: `Basic C `_ * Computers and Computer Programs * The C Computer Programming Language * C: Variable Types and Variable Names * C: Operations, Conditionals, and Loops * C: Functions * Assign Homework #5 * Day 7: `More Advanced C `_ * C: Pointers Review * C: Memory Allocation * C: File I/O * C: User Defined Datatypes * Assign Homework #6 * Day 8 - `C: Datatypes & C++ `_ * Object Oriented Programming * C++ * C++ Example * Assign Homework #7 * Day 9 - `Parallel Programming `_ * Parallel Computers * MessagePassing & MPI * Shared Memory & OpenMP * Assign Homework #8 * Day 10 - `DesignSafe & Tapis `_ * Review: Exercise * Intro to DesignSafe & Tapis * Interfacing with DesignSafe through Command Line * Exercise * Building an Tapis App * Exercise * Closing Remarks .. * `Building Graphic User Interfaces (GUI) using Qt5 `_