Skip to content

Commit

Permalink
Updating some of the content
Browse files Browse the repository at this point in the history
  • Loading branch information
gvegayon committed Aug 19, 2024
1 parent 4168b93 commit 5f860c3
Show file tree
Hide file tree
Showing 7 changed files with 5,338 additions and 2,562 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
# PHS 7045: Advanced Programming

Welcome to Advanced Programming in R and HPC! You can find the syllabus
[here](syllabus.md).
[here](syllabus.md). Readings for the week can be found in the GitHub
issues associated with them.

## Contents

Expand Down Expand Up @@ -39,7 +40,7 @@ materials are available, the students are required to do the following:
2. Initialize the folder as a git repository, add its contents, and
make the first commit.

3. Create a new repository in Github.com (under your account), and push
3. 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\]

Expand Down
2 changes: 1 addition & 1 deletion README.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ available, the students are required to do the following:
2. Initialize the folder as a git repository, add its contents, and make
the first commit.

3. 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]
3. 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:

Expand Down
830 changes: 734 additions & 96 deletions docs/week-01-slides.html

Large diffs are not rendered by default.

6,108 changes: 3,832 additions & 2,276 deletions docs/week-02-slides.html

Large diffs are not rendered by default.

830 changes: 734 additions & 96 deletions lectures/01-git/slides.html

Large diffs are not rendered by default.

11 changes: 8 additions & 3 deletions lectures/01-git/slides.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
title: "Version control and reproducible research"
subtitle: "PHS 7045: Advanced Programming"
author: "George G. Vega Yon, Ph.D."
date: August 20, 2024
format:
revealjs:
embed-resources: true
---

# Preamble

## Welcome to **PHS 7045: Advanced Programming**
## Welcome to "PHS 7045: Advanced Programming"

::: {.r-fit-text}

Expand Down Expand Up @@ -75,6 +76,9 @@ Throughout the course, we will be using the following tools:
- Some R GUI, e.g., [RStudio](https://posit.co/products/open-source/rstudio/) or [Visual Studio Code](https://code.visualstudio.com/).
:::

::: {.fragment .fade-right}
- [GitHub co-pilot](https://github.com/features/copilot): An AI-powered pair programmer (when OK; more on this later).
:::
:::

## What is 'version control.'
Expand Down Expand Up @@ -202,8 +206,9 @@ More alternatives [here](https://git-scm.com/download/gui).

![](fig/git.svg){fig-alt="Git workflow" fig-align="center" width="auto"}

::: {style="font-size: 80%"}
Git has a ton of features, but the daily workflow only features a handful of commands: `git pull`, `git add`, `git commit`, and `git push`:

:::


---
Expand Down Expand Up @@ -270,7 +275,7 @@ you can keep things local and skip Github. For this exercise, you need to

::: {.fragment .fade-in}
a. Create a new folder with the name of your project (you can try
`PM566-first-project`)
`PHS7045-first-project`)
:::

::: {.fragment .fade-in}
Expand Down
114 changes: 26 additions & 88 deletions syllabus.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,7 @@

## Description

This course develops students’ ability to write R code to address
complex questions that cannot be effectively or efficiently solved with
existing R packages. Dealing with such problems often requires using
computationally intensive algorithms, requiring sophistication to debug
and reduce computing time. Topics covered include writing functions and
vectorized programming, debugging and code optimization, parallel
computing, C/C++ to R coding, R package creation, command-line
programming using Linux, and running jobs on the university’s
high-performance computing nodes. Students will learn through seeing
(lectures), doing (homework), and teaching (helping one another improve
coding). This course is aimed at students with at least moderate
proficiency in R programming and/or strong proficiency in another
programming language, such as Julia, Python, or C/C++.
This course develops students’ ability to write R code to address complex questions that cannot be effectively or efficiently solved with existing R packages. Dealing with such problems often requires using computationally intensive algorithms, requiring sophistication to debug and reduce computing time. Topics covered include writing functions and vectorized programming, debugging, code optimization, parallel computing, C/C++ to R coding, R package creation, command-line programming using Linux, and running jobs on the university’s high-performance computing nodes. Students will learn through seeing (lectures), doing (homework), and teaching (helping one another improve coding). This course is aimed at students with at least moderate proficiency in R programming and/or strong proficiency in another programming language, such as Julia, Python, or C/C++.

## Professors

Expand All @@ -31,31 +19,15 @@ Email: [email protected]

## Locations and Times

Lectures: T/Th 3-4:30 pm
In-person: Room \# 3C450, 3rd Floor Williams Building - 295 Chipeta
Way
Lectures: T/Th 11:30 AM - 1:00 pm
In-person: TBD
Office hours: TBD

## Grading and evaluation

The course will depend heavily on the version control software Git and
GitHub for sharing course material and work submissions. We expect
students to use dynamic reporting tools such as rmarkdown and quarto.
Git, GitHub, and dynamic reporting tools will all be taught during the
first sessions of the course.

The course evaluation has four components: class participation, homework
assignments, a project midterm (examples [here](https://github.com/UofUEpiBio/PHS7045-advanced-programming/tree/main/projects#example-programming-projects1)), and a final.
<span class="underline">Class participation</span> will be measured by
lab completion. Students must submit completed labs via GitHub by the
Sunday of the instruction week. <span class="underline">Homework
assignments</span> will consist of programming problems the student will
have to solve and submit as rmarkdown or quarto reports via GitHub.
Finally, <span class="underline">midterm and final evaluations</span>
will consist of a project where the students should address a
programming or computational problem using the tools and methods
instructed in this course. Each component weighs into the final grade as
follows:
The course will depend heavily on the version control software Git and GitHub for sharing course material and work submissions. We expect students to use dynamic reporting tools such as rmarkdown and quarto. Git, GitHub, and dynamic reporting tools will all be taught during the first sessions of the course.

The course evaluation has four components: class participation, homework assignments, a project midterm (examples [here](https://github.com/UofUEpiBio/PHS7045-advanced-programming/tree/main/projects#example-programming-projects1)), and a final. <span class="underline">Class participation</span> will be measured by lab completion. Students must submit completed labs via GitHub by the Sunday of the instruction week. <span class="underline">Homework assignments</span> will consist of programming problems the student will have to solve and submit as rmarkdown or quarto reports via GitHub. Finally, <span class="underline">midterm and final evaluations</span> will consist of a project where the students should address a programming or computational problem using the tools and methods instructed in this course. Each component weighs into the final grade as follows:

- Weekly Labs : 15%.

Expand All @@ -65,17 +37,7 @@ follows:

- Final project : 20%.

Students will present their lab work at least once during the course.
There will be <span class="underline">six homework assignments, of which
only the top five will be used for the final grade</span>. Besides the
written report, <span class="underline">students will present their
final project during class</span>. As a general principle, we will grade
labs, homework assignments, and projects considering the quality of code
documentation, code proficiency and correctness (speed, simplicity,
etc.,) and written and oral presentation quality. Details regarding
specific evaluation aspects of homework assignments, the midterm
project, and the final project will be provided in time. Finally, the
grading scale is set as follows:
Students will present their lab work at least once during the course. There will be <span class="underline">six homework assignments, of which only the top five will be used for the final grade</span>. Besides the written report, <span class="underline">students will present their final project during class</span>. As a general principle, we will grade labs, homework assignments, and projects considering the quality of code documentation, code proficiency and correctness (speed, simplicity, etc.,) and written and oral presentation quality. Details regarding specific evaluation aspects of homework assignments, the midterm project, and the final project will be provided in time. Finally, the grading scale is set as follows:

- A : 93-100

Expand All @@ -93,76 +55,52 @@ grading scale is set as follows:

## Pre-Requisites

Students must be able to write functions and submit homework solutions
in R dynamic reporting tools like rmarkdown or quarto. Before the
course, students may ask the professor for an example problem to assess
their comfort with R programming.
Students must be able to write functions and submit homework solutions using R dynamic reporting tools like rmarkdown or quarto. Before the course, students may ask the professor for an example problem to assess their comfort with R programming.

## Contents

The weekly contents are available on the GitHub website of the course [here](README.md#contents).

<!-- TBD
### Part 1 (Weeks 1-8)
- **Collaboration and reporting tools**: Students will learn how to
use version control software (Git) and generate dynamic reports
using Rmarkdown. (Week 1)
- **Collaboration and reporting tools**: Students will learn how to use version control software (Git) and generate dynamic reports using Rmarkdown. (Week 1)
- **Fundamentals of R**: We will review data structures,
control-flow statements, and large data handling from the software
development point of view. (Weeks 2 and 3)
- **Fundamentals of R**: We will review data structures, control-flow statements, and large data handling from the software development point of view. (Weeks 2 and 3)
- **Code debugging and profiling**: Programmers will also learn to
debug code (find errors) and identify bottlenecks to speed up
their programs. (Week 4)
- **Code debugging and profiling**: Programmers will also learn to debug code (find errors) and identify bottlenecks to speed up their programs. (Week 4)
- **Incorporating C++ into R**: We will learn how to incorporate C++
code into our R programs to deal with computationally intensive
tasks using Rcpp or equivalent. (Week 5)
- **Incorporating C++ into R**: We will learn how to incorporate C++ code into our R programs to deal with computationally intensive tasks using Rcpp or equivalent. (Week 5)
- **Simulation and parallel computing**: The program also involves
writing simulations and learning to leverage parallel computing
for computationally intensive tasks, including embarrassingly
parallel computing methods. (Week 6)
- **Simulation and parallel computing**: The program also involves writing simulations and learning to leverage parallel computing for computationally intensive tasks, including embarrassingly parallel computing methods. (Week 6)
- **R package development**: Students will learn how to write R
packages to efficiently encapsulate their functions and routines
to facilitate code sharing and stability. (Weeks 7 and 8)
- **R package development**: Students will learn how to write R packages to efficiently encapsulate their functions and routines to facilitate code sharing and stability. (Weeks 7 and 8)
### Midterm (Week 9)
- You can find some example projects [here]([https://github.com/UofUEpiBio/PHS7045-advanced-programming](https://github.com/UofUEpiBio/PHS7045-advanced-programming/tree/main/projects#example-programming-projects1)).
### Part 2 (Weeks 10-16)
- **Command-line in Linux**: Part of the course involves becoming
familiar with the fundamentals of command-line usage. This
involves managing data, using ssh, and other basic operations to
work on Linux-based systems. (TBD)
- **Command-line in Linux**: Part of the course involves becoming familiar with the fundamentals of command-line usage. This involves managing data, using ssh, and other basic operations to work on Linux-based systems. (TBD)
- **High-performance computing on Slurm cluster**: Students will be
taught how to work with the University of Utah’s high-performance
computing cluster through the job scheduler Slurm. We will also
review alternatives to submit jobs, including the R package
slurmR. (TBD)
- **High-performance computing on Slurm cluster**: Students will be taught how to work with the University of Utah’s high-performance computing cluster through the job scheduler Slurm. We will also review alternatives to submit jobs, including the R package slurmR. (TBD)
-->

## Readings

- R Programming for Data Science, 2019. Roger Peng.
[<span class="underline">https://bookdown.org/rdpeng/rprogdatascience/</span>](https://bookdown.org/rdpeng/rprogdatascience/)
- R Programming for Data Science, 2019. Roger Peng. [<span class="underline">https://bookdown.org/rdpeng/rprogdatascience/</span>](https://bookdown.org/rdpeng/rprogdatascience/)

- The Art of R Programming, 2009. Norman Matloff.
[<span class="underline">https://heather.cs.ucdavis.edu/\~matloff/132/NSPpart.pdf</span>](https://heather.cs.ucdavis.edu/~matloff/132/NSPpart.pdf)
- The Art of R Programming, 2009. Norman Matloff. [<span class="underline">https://heather.cs.ucdavis.edu/\~matloff/132/NSPpart.pdf</span>](https://heather.cs.ucdavis.edu/~matloff/132/NSPpart.pdf)

### Supplementary References

- R for Data Science, 2017 Garrett Grolemund and Hadley Wickham.
[<span class="underline">http://r4ds.had.co.nz/</span>](http://r4ds.had.co.nz/)
- R for Data Science, 2017 Garrett Grolemund and Hadley Wickham. [<span class="underline">http://r4ds.had.co.nz/</span>](http://r4ds.had.co.nz/)

- Exploratory Data Analysis with R, 2020 Roger Peng
[<span class="underline">https://bookdown.org/rdpeng/exdata/</span>](https://bookdown.org/rdpeng/exdata/)
- Exploratory Data Analysis with R, 2020 Roger Peng [<span class="underline">https://bookdown.org/rdpeng/exdata/</span>](https://bookdown.org/rdpeng/exdata/)

- Mastering Software Development in R, 2017 Roger Peng, Sean Kross,
Brooke Anderson
[<span class="underline">https://bookdown.org/rdpeng/RProgDA/</span>](https://bookdown.org/rdpeng/RProgDA/)
- Mastering Software Development in R, 2017 Roger Peng, Sean Kross, Brooke Anderson [<span class="underline">https://bookdown.org/rdpeng/RProgDA/</span>](https://bookdown.org/rdpeng/RProgDA/)

# University and Course Policies

Expand Down

0 comments on commit 5f860c3

Please sign in to comment.