---
title: "Problem set 1"
date: ""

format:
  html:
    toc: true
    number-sections: true
---

## Instructions/Setup

[Download source](https://raw.githubusercontent.com/ywanglab/STAT3000/refs/heads/main/psets/hw1.qmd)

- Make sure you have a GitHub account. In your GitHub account, create a GitHub repository named `STAT3000`.
- Create an RStudio Project, e.g.,  `stat3000`, connected to the GitHub repo (clone or connect existing).

- Answer each item **inside this Quarto file**. Show commands/code where requested.



## Tasks


0. **Project folders**  
   In your project root, create the folders: `hw/`, `img/`, `data/`, `code/`, `docs/`.  
   Provide either:
   - the Unix commands you used, or
   - the R commands you used

    ```
    # Your commands here
    
    ```

1. **RStudio project + Quarto document**  
   Create a Quarto document named `hw1.qmd` (this file).  
   Include a screenshot of your RStudio session showing:
   - Files pane (project structure)
   - Git pane (if available)
   
2. **GitHub + repo setup**  
   In your Quarto document, include:
   - the repo URL
   - a screenshot showing the repo page on GitHub

3. **Create and include a plot image**  
    Create a simple plot in R (any plot you like), save it as `img/plot.png`, and include it below.

      ```
    
        # Example idea (you can change it):
        # png("img/plot.png", width = 800, height = 500) #open png device 
        # plot(cars)
        # dev.off() # close the device
      ```

![](img/plot.png)

4. **Define a function and compute real roots**
   In this document, define coefficients $a=2$, $b=-5$, $c=-3$.
   Consider $f(x) = ax^2 + bx + c$. Print the **real** solutions of $f(x)=0$ (if any).

   * If the discriminant is negative, print a message like `"No real roots"`.
   
    ```
    
      # a <- 2
      # b <- -5
      # c <- -3
      # 
      # disc <- b^2 - 4*a*c
      # disc
      
      # Your code here to print only real roots
    
    ```

5. **Graph the quadratic on a specified interval**
   Make a graph of $f(x)$ versus $x$ for $x \in (-6, 6)$.
   Add:

   * a horizontal line at $y = 0$
   * points for the real roots (if they exist)
     
    ```
    # x <- seq(-6, 6, length.out = 400)
    # fx <- a*x^2 + b*x + c
    
    # Hint: use plot(x, fx, type="l") and abline(h=0)
    ```

6. **Write coefficients to a text file using Unix**
   Use Unix to create a file `data/coefs.txt` containing a single line with:

   ```
   2 -5 -3
   ```

   Show the Unix commands you used:

   ```
   # Your commands here
   ```

7. **Copy the Quarto file using Unix**
   Use Unix to copy `hw1.qmd` into `code/` and name it `quadratic.qmd`.
   Show the Unix command(s):

   ```
   # Your commands here
   ```

8. **Read coefficients from file using a relative path**

   Edit `code/quadratic.qmd` so it reads `a`, `b`, `c` from `data/coefs.txt` using a **relative path**.
   In *this* document, show the R code you used (it should also appear in `quadratic.qmd`).

    ```
    # Your code here (example outline):
    
    # coefs <- scan("data/coefs.txt") #read numbers/string and return a vector
    
    # a <- coefs[1]; b <- coefs[2]; c <- coefs[3]
    
    # then compute real roots again
    ```
9. **Switch to an absolute path and test portability**

   In `code/quadratic.qmd`, replace the relative path with:
   `file.path(getwd(), "data/coefs.txt")`
   Render it once to confirm it works.

   Then **move the entire project folder** to a new folder name (e.g., `RtmpXXXX`).
   Re-render `code/quadratic.qmd`. Does it still render?
   Briefly explain what happened, then switch back to a relative path and confirm it renders again.

10. **Render to PDF and publish to GitHub Pages-style docs folder**

    Render a PDF version of `hw1.qmd` (or `code/quadratic.qmd`) and place the PDF into `docs/`.
    Show the terminal command(s) you typed:

    ```
    # Your command here. This shuold be run in a Linux terminal. 
    # This command assumes your current directory is the parent directory containing `hw/hw1.qmd`. Otherwise, make appropriate change to the path to hw1.qmd
    #install any missing packages on the fly
    
    quarto render hw/hw1.qmd --to pdf  
    cp hw/hw1.pdf docs/
    
    ```

11. **Git workflow**
    Make at least **three commits** with meaningful messages, such as:

* `Add initial project structure`
* `Add quadratic root computation`
* `Add rendering output to docs`

  In this document, paste the output of:

  ```
  git log --oneline --decorate -n 5
  ```

12. **Push to GitHub**
    Push your work to GitHub. In this document, include:

* a screenshot of your GitHub repo showing the folders `img/`, `data/`, `code/`, `docs/`
* the link to the rendered PDF file in your repo (if applicable)

---

## Submission checklist

* [ ] Repo exists and is named `HW1`
* [ ] `hw1.qmd` renders without errors
* [ ] `img/plot.png` exists and is included in the document
* [ ] `data/coefs.txt` exists and is read using a relative path
* [ ] `docs/` contains the rendered PDF
* [ ] At least three commits + pushed to GitHub



