-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
5,338 additions
and
2,562 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
|
||
|
@@ -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%. | ||
|
||
|
@@ -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 | ||
|
||
|
@@ -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 | ||
|
||
|