# Homework

## Quick Links

[HW0](./HW0/README.md), [HW1](./HW1/README.md), [HW2](./HW2/README.md), [HW3](./HW3/README.md), [HW4](./HW4/README.md), [HW5](./HW5/README.md), [HW6](./HW6/README.md), [HW7](./HW7/README.md), [HW8](./HW8/README.md)

## Overview

In this class, you will utilize skills learned through class, as well as prior math skills to produce a raytracing engine. A raytracer is a graphics program designed to create images from scratch, rendering views of objects coded into a scene. You may be familiar with a couple of industry leaders in raytracing technology, namely `Pixar`, and `Nvidia`. If you are already curious about raytracing and computer graphics, or if this class sparks your interest in the field, I highly recommend talking to me about it, and I can point you to some amazing sources.

## Partners

I want every one of you to succeed in this class, but more importantly, I want you to have fun! Because of this, I will allow you to choose a partner to do the homeworks with. The homeworks are designed to be difficult. A partner can help with this. Together, you can talk through some of the complex problems that you will face in this class, and create common solutions to address them. You can of course opt to not work with a partner for this class, it is up to you. If you do choose to select a partner, I will hold you both accountable for all work that you produce. Another note, you do not need to work with the same partner across all the homeworks. I will grade each homework as is without taking into account any previous work.

## Academic Dishonesty

This being said, working together with others outside of your partnership or solo mission is in this class a form of Academic Dishonesty. Why am I so strict about this you might ask? Well, the goal of this class is to teach you how to solve complex problems using code. To do this, you need to actually face the problems head on, without the support of others. This is how you learn! So to this end, I encourage you to work together with your partner. Utilize them if you get stuck. Learn together what programming techniques are best. Give each other constructive critisisms about your code. But outside of your partner, sharing any code or similar activities will be consitituted as a form of cheating.

## Sources For The Homeworks

I leave the following sources here for attribution reasons. Yes, if you scroll vigourously throughout these sources you may find some answers. This being the case, I have changed a lot of the original material to be more reflective of a beginner skill level.

[_Ray Tracing in One Weekend_](https://raytracing.github.io/books/RayTracingInOneWeekend.html)  
[Wikipedia - Euclidian Vector](https://en.wikipedia.org/wiki/Euclidean_vector)  
[BetterExpained - Dot Product](https://betterexplained.com/articles/vector-calculus-understanding-the-dot-product/)  
