Syllabus

last updated: June 6, 2024

Welcome to the SimCenter Programming Bootcamp 2024. 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 5 full days of online training via zoom. Each day two sessions are provided. Each session begins with a brief overview of the video material the participants are encouraged to watch before the workdhop (or at least the night before that days session. Folliwng the overview, the presenters will then work partially through the solution to the exercises, after which the partipants will try to complete. 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.

The two workshops 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 sessions will cover and refresh basic concepts of python, as well as fundamentals of code design. The fourth session will transition you to command-line use of python, as you’ll need on any high-performance computing (HPC) environment. The C/C++ workshop also starts with the assumption you know no C/C++, but that you have some basic programming experience, e.g. have completed the Python workshop. It ends writing parallel programs using threads and message passing on a HPC.

Python - July 29-31, 2024, 2.5 days

  • Session 1

    • Welcome Message and SimCenter Intro

    • What is a computer? Programming philosophy

    • Python Basics

    • Data types

    • Loops

    • Exercise

    • Conditions

    • Assign Homework #1

  • Session 2

    • Homework #1 review

    • Python matrix data types

    • Exercise

    • Python file IO

    • Text files

    • Spread sheet data

    • Exercise

    • Python plotting

    • Assign Homework #2

  • Session 3

    • Homework #2 review

    • Intro to Object Oriented Programming (OOP)

    • Python OOP

    • Classes

    • Inheritance

    • Numeric data types: operator overload

    • Assign Homework #3

  • Session 4

    • Homework #3 review

    • Python modules

    • Organizing your code in files

    • Exercise: bringing python to the command line

    • system call/subprocess

    • Assign Homework #4

  • Session 5

    • Homework #4 review

    • Team coding competition/exercise: collaborative tasks for groups of 3-5 people

    • Closing Remarks

Introduction to C/C++/HPC - July 31 - Aug 2, 2024, 2.5 days

  • Session 1:

    • 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

  • Session 2:

    • C: Pointers Review

    • C: Memory Allocation

    • C: File I/O

    • C: User Defined Datatypes

    • Assign Homework #6

  • Session 3:

    • Object Oriented Programming

    • C++

    • C++ Example

    • Assign Homework #7

  • Session 4:

    • Parallel Computers

    • MessagePassing & MPI

  • Session 5 - Parallel Day

    • Shared Memory & OpenMP

    • Assign Homework #8