CS3744: Intro to Graphics and GUI Programming

Extended Syllabus (download)

Contact

Peter J. Radics
peter.radics@vt.edu

Overview

“The question is not what you look at, but what you see.”

– Henry David Thoreau

Course description:

Whenever we encounter applications in everyday life, we do not see the complexity of the algorithms behind the scenes, but rather the user interface. How we present information to users influences how they perceive and experience our applications. Most applications today, therefore, present information in a graphical way.

However, what are the choices that we encounter when developing such a graphical user interface? What are the building blocks of these graphical user interfaces? How does the information flow through the application? What do we have to do to get from an idea to a fully interactive, three dimensional world? What is involved in creating games like World of Warcraft or movies like Iron Man?

This class will introduce you to the world of computer graphics and graphical user interfaces (GUIs). You will experience the entire process involved in the development of a graphical application: from the development of a project idea over sketching storyboards, designing interface components, all the way down to the implementation of your own graphics engine.

Prerequisites:

  • CS 2114: Software Design & Data Structures (minimum grade of C)
  • MATH 1224: Vector Geometry (minimum grade of P)
  • MATH 1114: Elementary Linear Algebra (minimum grade of P)

Learning Objectives

Participants of this course will

  • identify the fundamental components of a computer graphics engine and graphical user interfaces;
  • analyze and break down the identified components into an abstract application programming framework;
  • explore the the basics of concurrent programming and event-driven programming;
  • discover the mathematical foundations of computer graphics;
  • plan, propose, and implement an interactive graphical application project;
  • create a portfolio website for their project;
  • self-assess their progress at the end of the semester;
  • and assess a project of their peers.

Resources

Course website

https://scholar.vt.edu

Forum website

https://www.piazza.com

Textbook

Francis S Hill Jr.and Stephen M Kelley: Computer Graphics Using OpenGL (3rd Edition), ISBN-13: 978-0131496705 (optional)

The Internet

http://nehe.gamedev.net/
https://www.songho.ca/opengl/index.html
http://www.glprogramming.com/red/
http://javapractices.com
https://docs.oracle.com/javase/tutorial/essential/concurrency/
https://jogamp.org/wiki/index.php/Jogl_Tutorial https://www.google.com

Required Work

Class participation: 15%

Class time will be spent on a mix of 15-20 minute mini-lectures, in-class programming assignments, and interactive discussions. You are expected to attend class and actively participate in class discussions.

Project Pitch Presentation: 5%

In the second week of class, you and your team-mates are required to present your project idea to class. Your presentation should be at least 5 minutes but no longer than 10 minutes. It needs to outline the idea of the application. For inspiration on project pitches, you can peruse kickstarter.com. This is also the time where you can pick which project you want to evaluate yourself based on other groups’ presentations!

Peer Evaluation: 20%

Peer evaluation is split in two parts of 10% each.

On the one hand, you are required to serve as a project backer. As such, you and your fellow backers have to:

  1. evaluate and approve the project plan of the project you are backing
  2. provide feedback on the milestones, and
  3. review the final prototype by the end of the semester.

All evaluations have to be done in writing.

On the other hand, you are going to be a team member. In that role, you and your team members are required to

  1. create and negotiate a project plan with your own backers,
  2. provide the backer with the milestone releases, and
  3. demo the final prototype to your backers and the instructor and/or TAs by the end of the semester.

The project plan needs to contain an initial story board of your application, a prioritized list of features you plan to implement by the end of the semester, a set of at least milestone deliveries (alpha, beta, release), and a time plan of the milestones. The project plan needs to be approved by both your backers and an instructor or TA by the end of the third week of class (ideally earlier than that).

Project Portfolio: 25%

The project portfolio needs to be hosted on a website that is accessible to your team, your backers, the instructor and TAs. The portfolio needs to contain the following elements:

  1. Your developer profiles(introducing who you are and detailing your personal contributions).
  2. The project pitch presentation.
  3. The project plan.
  4. Storyboards of the application.
  5. The milestone releases.
  6. A developer diary or blog, documenting your progress.
  7. A source code repository for your project.

The portfolio will be evaluated at the end of the semester, so you have time to update each item based on feedback you receive throughout the semester!

Project Prototype: 25%

Additionally to the peer evaluation of your project, you will have to submit your project prototype for review by the instructor and/or TAs. 5% of this grade will be based on the assessment of your project demo by the instructor or TAs (you only need to demo your project once). Another 15% will be awarded based on code quality and code documentation. The final 5% will be awarded based on how close you followed your initial project plan.

Self-assessment: 10%

Instead of writing a midterm and final exam, you will have to schedule two 20 minute appointments with the instructor during the semester. One of these appoint- ments should be towards the middle of the semester, and one at the end. During these appointments, you will be asked to evaluate your progress with regards to the learning objectives of this class. You will also have to talk about your contribution to the project. These appointments also provide you with an opportunity to provide the instructor with feedback on the class.

Accommodations for Students with (Dis-)abilities

We all face different challenges throughout our lives. My goal for this class is to make our journey together as smooth as possible. I am happy to work with you to arrange for suitable accommodations, whether for a (dis-)ability, health-related issues, or any other challenges you are facing. Please don’t hesitate to speak with me at any point in time during the semester!

Furthermore, there are other resources available to you on campus!

  • The Dean of Students Office has a good FAQ on many issues:
  • www.dos.vt.edu/dosfaq.html
  • Students with (dis-)abilities should contact the Services for Students with Disabilities (SSD) with questions about specific information regarding available services:
  • Services for Students with Disabilities (SSD)
  • https://www.ssd.vt.edu
  • 310 Lavery Hall
  • 540-231-3788 (Voice)
  • 540-231-0853 (TTY)
  • 540-231-3232 (Fax)
  • Dr. Susan Angle
  • spangle@vt.edu
  • For health-related issues, please go to or contact Schiffert Health Center:
  • Schiffert Health Center
  • https://www.healthcenter.vt.edu
  • McComas Hall
  • 540-231-6444 (Voice)
  • 540-231-7473 (Fax)
  • For mental health-related issues, please go to or contact Cook Counseling Center:
  • Cook Counseling Center
  • https://www.ucc.vt.edu/
  • McComas Hall
  • 540-231-6557 (Voice)
  • 540-231-21043 (Fax)

The VT Honor System

Academic integrity is an essential part of your learning experience here at Virginia Tech. The Virginia Tech Undergraduate Honor Code defines academic misconduct as any instance of cheating, plagiarism, or falsification. As with any class, the regulations of the Honor Code apply and will be enforced in this course. Please review the Virginia Tech Undergraduate Honor Code at

https://www.honorsystem.vt.edu.

If you have any questions regarding what constitutes academic misconduct, do not hesitate to contact me.

Virginia Techs Principles of Community

At Virginia Tech, we are privileged to be part of a truly unique and diverse community: the Hokie Nation. Our fellow Hokies come from every part of this country and the all around the world. While we are all unique individuals, we are still united by a spirit of discovery and our pride of this school. Our Principles of Community allow us to live in mutual respect of each other and bring our Hokie Spirit out into the world.

Virginia Tech is a public land-grant university, committed to teaching and learning, research, and outreach to the Commonwealth of Virginia, the nation, and the world community. Learning from the experiences that shape Virginia Tech as an institution, we acknowledge those aspects of our legacy that reflected bias and exclusion. There- fore, we adopt and practice the following principles as fundamental to our on-going efforts to increase access and inclusion and to create a community that nurtures learning and growth for all of its members:

  • We affirm the inherent dignity and value of every person and strive to maintain a climate for work and learning based on mutual respect and understanding.
  • We affirm the right of each person to express thoughts and opinions freely. We encourage open expression within a climate of civility, sensitivity, and mutual respect.
  • We affirm the value of human diversity because it enriches our lives and the University. We acknowledge and respect our differences while affirming our common humanity.
  • We reject all forms of prejudice and discrimination, including those based on age, color, disability, gender, national origin, political affiliation, race, religion, sexual orientation, and veteran status. We take individual and collective responsibility for helping to eliminate bias and discrimination and for increasing our own understanding of these issues through education, training, and interaction with others.
  • We pledge our collective commitment to these principles in the spirit of the Virginia Tech motto of Ut Prosim (That I May Serve).

Course Materials

coming soon…