PHS 7045: Advanced Programming — Fall 2026
Welcome to Advanced Programming in R and HPC! The instructors are George G. Vega Yon, Ph.D. and Thi-Mui Pham, Ph.D..1 You can find the Fall 2026 syllabus. Readings for each session can be found in the GitHub issues associated with them.
Contents
| Week | Date | Session | Title | Materials |
|---|---|---|---|---|
| 1 | 8/25/26 | Lecture | Intro classes AI | slides (source) |
| 1 | 8/27/26 | Lab | How to use AI in the class | slides (source) |
| 2 | 9/1/26 | Lecture | Intro to Git | slides (source) |
| 2 | 9/3/26 | Lab | Git and Github exercises | lab (source) + [quarto](https://UofUEpiBio.github.io/PHS7045-advanced-programming/01-git/quarto.html){target="_blank" rel="noopener"} ([source](01-git/quarto.qmd){target="_blank" rel="noopener"}) |
| 2 | 9/8/26 | Lecture | Functional programming | slides (source) |
| 2 | 9/10/26 | Lab | Functional programming | lab (source) + [Homework 2](https://UofUEpiBio.github.io/PHS7045-advanced-programming/04-more-functions-and-datatable/homework.html){target="_blank" rel="noopener"} ([source](04-more-functions-and-datatable/homework.qmd){target="_blank" rel="noopener"}) |
| 3 | 9/15/26 | Lecture | Debugging and profiling | slides (source) |
| 3 | 9/17/26 | Lab | Debugging and profiling | lab (source) |
| 4 | 9/22/26 | Lecture | Introduction to C++ | slides (source) |
| 4 | 9/24/26 | Lab | Introduction to C++ | lab (source) |
| 5 | 9/29/26 | Lecture | C++ in R | slides (source) |
| 5 | 10/1/26 | Lab | C++ in R | lab (source) Deliver a paragraph in abstract mode describing their projects for the midterm. |
| 6 | 10/6/26 | Lecture | Parallel Computing | slides (source) |
| 6 | 10/8/26 | Lab | Parallel Computing | lab (source) |
| 7 | 10/13/26 | Break | Fall Break | |
| 7 | 10/15/26 | Break | Fall Break | |
| 8 | 10/20/26 | Lecture and Lab | Bonus Track 1: More on AI | |
| 8 | 10/22/26 | Lecture and Lab | Bunus Track 2: Ollama | |
| 9 | 10/27/26 | Lecture | Midterm project: Hackathon | |
| 9 | 10/29/26 | Lab | Midterm project: Presentations (lightning talk) | Homework 3 (source) |
| 10 | 11/3/26 | Lecture and Lab | UofU's CHPC intro | CHPC overview Linux slides, using R slides, Slurm slides |
| 10 | 11/5/26 | Lecture and Lab | UofU's CHPC coding agents | lab (source) |
| 11 | 11/10/26 | Lecture | Slurm | slides (source) |
| 11 | 11/12/26 | Lab | More practice with slurm | slides (source) |
| 12 | 11/17/26 | Lecture | R packages I | slides (source) |
| 12 | 11/19/26 | Lab | R packages I | lab (source) |
| 13 | 11/24/26 | Lecture | TBD | |
| 13 | 11/26/26 | Lab | Thanksgiving recess | |
| 14 | 12/1/26 | Lecture | Automatic Reports with GitHub Actions | slides (source) |
| 14 | 12/3/26 | Off | TBD (maybe something about agents orchestration or whatnot) | |
| 15 | 12/8/26 | Lecture | Final Prep (Hackathon) | |
| 15 | 12/10/26 | Lab | Final Prep (Hackathon) | |
| 16 | 12/15/26 | Lecture | Final | |
| 16 | 12/17/26 | Lecture | Final | Requirements |
Assignment workflow
Assignment materials will be distributed in a single compressed file (usually zip) for each assignment. Once the assignment materials are available, the students are required to do the following:
Download the compressed file and extract its contents into an empty folder.
Initialize the folder as a git repository, add its contents, and make the first commit.
Create a new repository in Github.com (under your account) and push your local repo into it. The name of the repository should be [name of the compressed file]-[your GitHub username]
You can start working on your assignment! We recommend pushing your changes as much as possible (it is good practice). As soon as you finish your assignment, you will have to ping one of the instructors in your commit message, for example:
git commit -a -m "Assignment done @gvegayon and @tm-pham"This way the course instructors, George G. Vega Yon (@gvegayon) and Thi Mui Pham (@tm-pham), will receive a notification about this assignment. Furthermore, we encourage you to use other GitHub resources, such as adding the URL of GitHub issue regarding that assignment, for example, if you include the following link in your commit message:
git commit -a -m "Assignment done https://github.com/UofUEpiBio/PHS7045-advanced-programming/issues/17"
Issue #17 in the PHS7045 website will now include a link to your commit. A similar thing can be done by cross-referencing an issue; this is, if you create a new issue in your repository and include the same link (https://github.com/UofUEpiBio/PM566/issues/17), the issue will be shown in #17 as cross-referenced.
Example
For week #3, we will distribute a zip file named week3-assignment.zip. Using the command line, you can do all the previous steps as follows:
cd ~
wget github.com/UofUEpiBio/PHS7045-advanced-programming/raw/master/assignments/week3-assignment.zip
unzip week3-assignment.zip -d week3-assignment-gvegayon
cd week3-assignment-gvegayon
git init
git add .
git commit -a -m "Initial commit"You still need to go to Github.com to create the new repository. Assuming you do that successfully, we continue:
git remote add origin git@github.com:gvegayon/week3-assignment-gvegayon.git
git push -u origin masterAnd you are done!
This course was first offered in Spring 2023 by George G. Vega Yon and Jonathan Chipman.↩︎