CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

CS324E

Elements of Graphics

Me!

Name: Kevin Song (he/him)

Email: kcsong@utexas.edu

Office Hours: Fill out Welcome Survey!

Undergrad: B.S. Chemical Sciences

Dr.

Prof.

Would have been an Elements student! (if we'd had an elements program)

Computing Projects I've Worked On

Computing lets you work in almost any field!

Field Project
Geospatial Imaging Parallelization of Random Forests for Tree Carbon Estimation
Consumer Medical Machine learning-based pill identification algorithm
Sociology Simulation of collaboration and productivity in academia
HPC Systems Bitflip error tolerance in high-performance parallel computing
Computational Bio Flexible Protein Docking + Folding
Medical Imaging Virtual surgery and reconstruction of injured pediatric skulls
Public Policy Acceleration of agent-based simulation for COVID-19
Compiler Design Reverse compilation of PTX for custom GPU architectures
Chemistry Optimal representations for polymer storage

Name: Annabel To (they/them)

Contact: EdStem is best! (email/Canvas mail if needed)

 

B.S./Master's: Computer Science (Systems/ML)

  • Doing software + pivoting to climate science
  • TA’d for CS329E Data Visualization w/ Dr. Mitra

(impostor syndrome, recruiting, grad school, etc.)

Ask me anything!

Class Format

The focus of this class is interaction and exploration over lecture-based content delivery.

You'll learn a lot more from each other and by playing with the language than you will from me.

Typical Class Blueprint

  1. 10-15 minutes material review
  2. 30-40 minutes content
  3. 10-20 minutes hands-on activity
  4. 5-10 minutes break
  5. < Repeat #2 >
  6. < Repeat #3 >

Summer Semester

Be proactive about staying on top of things.

There will be one project and 4-6 hands-on assignments due every week during this term!

The syllabus has a lot of detail on course policies--make sure you skim it!

Hands-On Activities

I can sit up here and talk for 20 minutes about specific things you need to worry about when using the constructs we discussed in class.

...and y'all still won't remember what I said, because the human brain doesn't work that way!

Or I can design an assignment that takes about 20 minutes which will expose you to most of the points I want you to learn about.

Hands-On Activities

Short assignments meant to be at least half-completed in class.

Goal: get practice working with small concepts, to make it easier to build the large projects later on.

Nominal due time: 3pm the day before the next class.

Actual due time: when I go to review them for the next class.

Aside from a ban on AI help, you can solve these however you want.

  • Get ideas from your classmates (but make sure you mention it in the comments so it doesn't look like you copied their work without asking)
  • Talk to your friends
  • Take code off the internet (but do attribute it!)

Hands-On Presentations

During the review of the last class's material, I may, time permitting, review one student's hands-on activity from the previous class.

 

  • Will be presented anonymously unless requested otherwise
  • Uses:
    • Share an idea you thought was cool
    • Free debugging time from me if you couldn't get it to work
    • Request improvements/code review

If no volunteers, I'll select one from the submissions.

Grading Structure

Three primary means of assessment in this class:

  • Being present in class

    • Participation
    • Attendance
  • Hands-on assignments

  • Projects

This class is primarily based around discussion, activities, and learning from each other.

Attendance is mandatory.

Attendance measured by Instapoll.

You are given four days of absence, no questions asked. For each additional day you are absent, your final grade is lowered by one full letter.

Miss 9 days and you are guaranteed to fail the course.

Unless...

Attendance Makeup

You can make up unexcused absences by writing an essay discussing an interesting topic covered in the class you missed.

This should not be a recap of what was covered in class!

  • Consult syllabus for details. (Length: ~500 words)
  • Tell me you're submitting this so that I can grade it (send mail or a message on EdStem, don't rely on Canvas)
  • Must be submitted by the end of the next class day, e.g. if you miss Monday, submit by 11:59pm on Wednesday. Contact me if this is not possible.

Presentation days of class cannot be excused either through grace or essay--you need to let me know if you can't make it to those.

Participation

Will be based on the contents of your daily index card submission.

 

Each index card will ask you for the following:

  • Name + EID
  • One thing you learned in class
  • One question you have about something in class
  • Any other questions/comments about that day

Reasonable answers will get credit.

Attendance quizzes may count for participation as correctness if too many people goof off on them!

Hands-On Assignments

Short assignments which you will have some time to do in class

Expected time: 20-40 mins each

Graded on 5/3/1 scale.

Will be due based on material covered in class. Due dates on Canvas will reflect optimistic times, but if you miss class, check with Lectures Online (or ask on EdStem).

Please try to work on these during the dedicated in-class periods! Late submissions will generally not be accepted.

Projects

Extended take-home assignments which require some in-depth thinking. Most projects will be solo, some towards the end may allow groupwork.

Use of AI tools is allowed on these, subject to the restrictions described later.

Final project is a separate grade category: you come up with an idea you want to work on (I will approve or suggest modifications). You will create a project and a presentation for the class.

Project Extra Credit

You should focus on doing the projects well and hitting all the required points. (This is more than sufficient to earn an A in this class).

Extra credit is at the level that I would expect CS majors to implement in graphics. Graphics is known as one of the most challenging upper-division courses in our major.

Extra credit is entirely not worth the amount of work (relative to just doing the regular points well). Extra credit is (mostly) there if you want to challenge yourself and learn more.

Project Extra Credit

Work

Points

If you want to challenge yourself or have an excuse to do some in-depth study of more advanced topics, try these out!

 

You don't have to complete them to get partial extra credit.

Late Policy (Projects)

Why do we have grades?

2. Improving at a task requires that you actually perform the task.

1. University told me to.

3. Grades act a a motivator to get you to do the task.

Corollary: Why do we have deadlines?

1. Nothing would ever get done without them.

3. The registrar gives me a deadline to submit grades by.

2. It's better for the class when we're all on the same page (i.e. I don't have to tailor the class for what projects each of you have completed).

Late Policy (Projects)

There is a flat 15% penalty per late day on projects, down to zero after seven days.

If you submit more than two days late, we may delay grading the assignment up until grades are due.

If you submit more than two days late, we may delay grading the assignment up until grades are due.

This means that you will not be able to:

  • Get feedback to incorporate into future assignments
  • Know what your score on the assignment is (for the purposes of grade calculation)
  • File regrade requests on the assignment

All assignments aside from the final project have a hard deadline on the last class day.

Please don't try to turn in the last project 4 days after grades are due.

Collaboration, Cheating, and LLMs

Collaboration

In-Class Assignments

  • Do not submit identical assignments.
  • Otherwise, go nuts!
    • Share ideas with each other.
    • Post your assignments on Discord.
    • Work collaboratively on a cool idea, then each apply your own twist at the end.
  • If you use outside code, cite it.
  • Please no AI-generated code.

Projects

  • Do not submit projects that are not your own work
  • Code snippets may be used as long as they are appropriately cited and referenced within your code.
  • Do not look at someone else's code or let them look at yours.

Citing Code

Put a comment that clearly specifies the following:

  • What part of this code are we citing? A function? A class? A few lines?
  • Where can the original source be found?
  • Why do you believe you have the right to use it?
// This function from WiSaGaN on SO, used under
// CC-BY-SA-4.0 https://stackoverflow.com/a/11237235

int max1(int a, int b) {
    if (a > b)
        return a;
    else
        return b;
}

This will need to be modified for LM output!

Cheating

If you cheat on an assignment, the minimum consequences are:

  • Zero on that assignment
  • 1/3rd letter grade reduction of final grade
  • Referral to Student Judicial Services

LLMs (GPT, Bard, and Friends)

Bard, GPT, and friends are amazing tools.

Are going to change the way we program computers.

Also come with hazards...

Bard

What does GPT-3.5 think of this?

Fun fact: it took me an additional 10 or so messages to get GPT to correctly identify the months which were wrong.

You need to know enough about the subject to be able to correct the LLM when it goofs.

Alt interpretation: if all you can do is type questions to the AI and echo its response, you're already obsolete.

It is possible that being able to recognize when something is wrong will be a more valuable skill than being able to write the right thing in the first place!

But this is just wild speculation on my part.

The Bigger Danger

How can I tell if you plagiarized code directly or used the output of an LLM?

How can I tell that you understand anything about what's going on in this class?

So What Do We Do?

You may use any LLM you would like for projects for this class, subject to the following rules:

 

  1. You may not ask the model to solve your project in a one-shot fashion.
     
  2. Any code that is derived from an LLM must be clearly cited with comments.
     
  3. You must attach the logs of the LLM to your assignment (your queries and its responses). This includes any learning queries you make (i.e. even if you do not intend to generate code). For models that support it, include a link.

"One-Shot Fashion"

My claim: the day that you no longer need to break down a problem with an LLM is the day this certificate becomes meaningless.

Need to practice breaking down problems and building solutions back up.

What is the general skeleton of a program that solves problem Q?

Please write a program that has features X, Y, and Z, is nicely commented, no more than 30 lines long, solves problem Q

How could you add feature X to this program?

How could you add feature Y to this program?

General rule: it should never look like you're trying to get the entire program in a single response.

General rule: it should never look like you're trying to get the entire program in a single response.

Isn't this a fuzzy rule?

Yes, it is.

 

Stick to rules 2 and 3 and I will forgive you if you occasionally cross the line on rule 1.

Tools

If you do not use any LMs, submit a file which states this (project pages will have details).

Any questions?

Additional details in syllabus

Golden Rule

If a piece of code was not written by you (or your group), tell me where it came from.

Practice and Improvement

Why do [instructors] make you [do things]?

(HINT): If I needed a working version of these programs for my own use, I'd write it myself or, in a pinch, ask a language model.

Why do I make you write programs?

Improving at a task requires that you actually perform the task.

Some things look like good ideas and are actually good ideas!

Some things look like good ideas but are actually terrible ideas!

Some things look like bad ideas but are actually great ideas!

I can't list these all out, and even if I could, you wouldn't remember them!

You have to try things!

Need to figure out for yourself whether something works or not.

Have to develop your own emotional bookmarks for "good" and "bad"

This exploration is crucial to learning, but it leads to slower completion!

This exploration is crucial to learning, but it leads to slower completion!

This exploration is crucial to learning, but it leads to slower completion!

This exploration is crucial to learning, but it leads to slower completion!

Gets to the end faster

Explores more possibilities

Never Let Schooling Interfere With Your Education

Unfortunately, we don't know how to evaluate you on how much you learned.

So we evaluate you on how good your work is.

Remember that the goal is to learn the landscape, not to get from point A to point B as fast as possible.

Instapoll

[01a]: Course Introduction

By Kevin Song

[01a]: Course Introduction

  • 43