Syllabus

Professor Christopher Andrews
Office 215 75 Shannon Street
Email candrews@middlebury.edu
Office hours   M 4-5p, TTh 3:30p-5:00p, W 1p-2p
Meeting times 9:45-11:00 MW

Course Objectives

This course is intended to be a fairly broad, very hands-on introduction to information visualization. By the end of the class, I expect you to:

  • Know the basic principles of mapping data to visual properties
  • Know which visual properties are appropriate for different tasks and data types
  • Be able to recognize and interpret a number of common visualization types
  • Be able to evaluate the effectiveness (and biases) of a visualization
  • Be able to propose multiple ways to visualize a given data set
  • Be able to create novel (and non-novel) interactive visualizations using several different tools including Plot and D3

Class deliverables

There will be four different kinds of deliverables in this class:

Projects There will be five projects. The projects will be relatively open ended and will give you a chance to demonstrate what you have learned in the course. Most of these will be done in teams of two. The final project will be due during the final week of class and teams will be expected to present their work in class.

Challenges Throughout the semester, I will will post challenges. These will be much more structured than the projects. The focus of these will be on the technical aspects of creating visualizations. Most of these will ask you to reconstruct particular visualizations given the same input data, though there will be some variations.

Tutorials These will a chance for you to walk through examples yourself, tutorial-style. The will be very prescriptive and will again focus on the technical aspects of creating visualizations and related technological skills.

Assessments Periodically we will have quiz-like assessments for you to test your level of understanding and knowledge.

Assessment

In this class, we are going to follow a practice called Ungrading. You may have encountered the practice in other classes, though the implementation tends to vary professor to professor and class to class.

In this class it means that I will not assign grades to any of the work that you turn in. I will provide feedback and indicate if I think the work needs to be revised.

You will have five late days that you can use on any assignment (other than the final project). You do not need to talk to me to use one unless you need to use two on the same assignment.

After I return work to you, you will have two weeks to make any revisions necessary. You can revise as often as you like within that period (there will be a form to notify me when work is ready for another look). After two weeks, the submissions will be closed. You are encouraged to finish any stray work, and I will answer further questions, but no new work will be evaluated after this point.

At the heart of ungrading is a desire to refocus your mental energies from questions like “what grade am I going to get?” to questions more like “do I really understand this concept yet?” and “did I really put my best effort into this work?”. As such, we are going to adopt a more reflective practice. When you turn in assignments, you will be asked to provide a self-evaluation of how the assignment went for you and where you think the work and your understanding could be improved.

Unfortunately, at the end of the semester, I still need to record a grade in Banner (unless you all opt for CR/NCR). So, I will ask each of you to write an assessment of your progress over the semester. You will reflect on the work you completed and your understanding of the material. We will then have a short meeting and you will tell me what grade I should record for you. We will discuss your decision and I will help guide you through evaluating your work and understanding level. In most cases, whatever grade you tell me after that point will stand, but in very rare cases I have had to step in when a student significantly under- or over- valued their contributions and understanding.

The Honor Code and Getting Help

Campuswire

We are going to be using Campuswire for our class discussions outside of class. Rather than emailing questions to me, please post the questions on Campuswire. This will allow other students to answer questions and to benefit from the answers you receive. This system will only work if you use it, so please do so.

All kinds of posts are welcome on Campuswire, from low level debugging questions, to high level conceptual questions, to weird things you just want to share. If you are seeking help on an assignment, a good questions includes what you are expecting, what you are getting instead, and what you have tried. A weaker question simply asks “why doesn’t my code run?” or “why is my code not passing all of the tests?” (unless you think your output is correct and that the test is at fault – it does happen). It is helpful if the code you are asking about is present on GitHub so I can look for greater context when necessary, but if you can post some small snippet, that is very useful. This is good for you to try and isolate where things are not working, it means I (and others) can generally spot the problem faster, and your fellow students can be part of the conversation. You just want to not post so much that it provides the answer for someone who has not completed the assignment.

Collaboration

Short version Help each other, but do not share solutions.

Long version In computer science, we build on the work of developers before us. Most of us learned to code by copying code and finding ways to tweak it to do what we want. Almost no computer programs are built without building on the work of others, either in the form of algorithms, libraries, or even just short snippets of code. In the computer science department, we recognize the value of forming study groups, helping each other debug code, and working together.

On the other hand, there are questions of intellectual property and academic integrity. These are considerably murkier waters than you may face, for example, writing a history paper, or doing a problem set in math. With code, you can “accomplish” spectacular things by copying the right chunks of code without ever knowing how it works.

For the most part, navigating these waters is on your head. I encourage you to help classmates to debug misbehaving code. I encourage you to post questions (and answers!) on Campuswire. But you need to do so in a way that respects other people’s work and in a way that contributes to your intellectual development rather than hindering it (or trying to mask your lack of it). With no grades, there is no benefit to turning in correct work that you don’t understand, so please do yourself a favor and don’t just go looking for code you can turn in to satisfy an assignment.

Policies: Do not work collaboratively unless indicated by the assignment. You can help one another, and work together, but you cannot work jointly on the same assignment. I do not want to see identical assignments that differ only in the name at the top. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. Attribute any ideas, etc, that you pick up (this goes for classmates, books, online resources, etc). Be explicit. Tell me where you got the idea, approach, technique, etc. Explain what your contribution was. Make sure that your contribution demonstrates that you understand what was not your work alone. Finally, if you have any doubts, ask me first.

Generative AI Use

There is no getting around the fact that tools like ChatGPT, Gemini and Co-Pilot have rapidly become go to sources of information. There is also no getting around how easy it makes casual academic dishonesty. One of my off-topic objectives is to help you navigate making use of these tools without violating the spirit of the honor code or compromising your own learning process.

In this class you will be expected to pick up a collection of new tools (and probably a new language). I encourage you to start with the documentation, but the LLM tools will be very useful as you are figuring out syntax and trying to figure out what is possible. The challenge is trying to do that in a way that doesn’t compromise your actual learning process. To that end, you should not enter the text or images of any assignment as a prompt. You should not submit code produced by an LLM as your own. This does not mean that it is okay to submit generated code and cite it. Treat your interactions with the LLM as you would with a peer in the class – if it provides the code during your interaction, use it to further your understanding and then go do something else for a while before writing out your version. You will be expected to be able to explain everything that you submit. This will a component of our final conversations and depending on how the semester is going, I may have spot checks earlier as well.

Fostering an inclusive environment

As part of the Middlebury community, I support an inclusive learning environment where diversity and individual differences are understood, respected, appreciated, and recognized as a source of strength.

I expect that students in my class will respect differences and demonstrate diligence in understanding how other people’s perspectives, behaviors, and world views may be different from their own. Should you experience or witness any behavior that opposes this idea, we hope you will let us know so that it can be addressed.

If you are comfortable reporting such incidents, you can use our anonymous CS departmental climate feedback form (which goes to the CS department) or fill out a Bias Incident Report (which goes to the Middlebury Community Bias Response Team).

You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.

Accommodations for disabilities

Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield, Peter Ploegman, and Deirdre Kelly of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.

Loaner Laptops

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period, or you can send an e-mail to sgakuya@middlebury.edu directly.

The college also provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.