CSC 234 Data Visualization
When we meet:
Where we meet: Olin 106
Instructor: Prof. Chris Fernandes
Office Hours: M 1:30-4, W 2-3, F 1-3
or anytime my door's open!
Office: 220 Steinmetz Hall
Course Webpage: http://nexus.union.edu
Jill Butler, Kritina Holden, William Lidwell,
Universal Principles of Design, Revised and Updated,
Rockport Publishers, Second Edition, 2010, ISBN-13: 978-1592535873.
Available at the bookstore.
Allen B. Downey,
Think Python: How to Think Like a Computer Scientist,
Green Tea Press. This book is free! Read it online
We live in an age where there is a lot of data being produced. Whether it is mapping the human
genome, building a corpus of words from classical Greek texts, or recording each and every purchase
from a department store, there is a lot of data being stored.
The fields of engineering, medicine,
business, the social sciences, the sciences, and the humanities are all using
large sets of data to do research, find patterns, and make decisions.
This course is about using visual representations to
make sense out of all that data.
Good visualizations present a specific
interpretation of data which can ultimately improve comprehension,
communication, and decision making.
By the end of the course, you should be
proficient in the following:
Prerequisite: C- or better in CSC-10X, or its equivalent.
Or permission of the instructor. You do NOT need to know Python in advance,
even though your programs will be in that language. If you are a veteran
of some programming language (and you all are), you'll be able to pick
up the syntax using our online book above in short order.
- knowing the characteristics, strengths, and weaknesses of
the human visual system
- understanding good design practices for visualization
- practicing with Python packages and other tools for visualization
- collecting, scraping, and cleaning data for use in visualizations
- knowing how to critique, analyze, and evaluate visualizations
What is this course NOT?
For many of you, your experience with CS has been just a programming course or two.
But there's a lot more to CS than just programming, and so this course
might seem quite different to you. It'll be easier at the outset knowing that this course is
- NOT strictly a programming course. Yes, you'll be coding here,
but the point is not to introduce you to more programming constructs, but applying
what you already know.
- NOT a graphics course. Visualization does not mean learning OpenGL or
the equivalent to do open-ended 3D virtual reality renderings. In fact, the actual
*drawing* of our visualizations is something we'll let third-party packages
do for us. We're more concerned with the data processing and design of a visualization
than its implementation. You want graphics? Take CSC 385 -- it's offered this term!
- NOT only computer-based. It's just as important for you to be able to
articulate why a visualization is good or bad as being able to create one. There will
be opportunities for this, such as with oral and written critiques.
- NOT targeted at upper-level majors. This is a sophomore-level course
and will be treated as such. However, there will be plenty of opportunities for
extending what an assignment asks for or to explore a visualization tool on your own.
Take advantage of these to get the most out of this course.
If you plan on using your own computer for projects, go to the
Software section on our Nexus page
and follow the instructions to install what you need. Do NOT wait until the
first assignment is out to do this -- installing some of these
packages can be a task in itself. Alternatively, you can
use our CS lab machines, which already have these packages installed.
We have three lab spaces:
All of these labs are available to you 24/7 using your ID card, except when classes
are being held in them.
- Olin 107
- Pasta lab (N104 in the Science & Engineering building)
- CS Resource room (Steinmetz Hall, 209A, down the hall from my office)
- Quizzes. There are no midterms or final exam for
this course, but there will be occasional quizzes throughout the term
to make sure you keep up with the material. Quizzes are closed-book
- Projects. Programming
projects will be assigned throughout the term to reinforce
the concepts discussed in class. Projects are due at the
of class on the day it is due. You must turn in both
your code and a set of image files (png, jpg, etc.) showing your visualizations.
No lates will be accepted.
You must turn in both a hard copy (on paper) and an electronic copy (on
Nexus). Your assignment is not
turned in unless you give me both.
- Critiques. You will be doing
both oral and written critiques of visualizations during
class as you learn more about good design principles.
I will occasionally have you turn in your critiques
- Final Project.
Instead of a final exam, there will be an extensive final visualization
project related to your major or minor. This will include a write-up and
an oral presentation during our normal final exam period. You are required
to be at the final presentations for the entire time.
- Voluntary Participation The quality of
visualizations can only be grasped through discussion, so this course
lives and dies on you getting involved. So speak out! You're the
only one who can bring your background and experience to the discussion.
Participation will be worth 50 points for the entire term, and you can
earn 5 points per week. You get 1 point for showing up to class, so you
can earn 3 out of 5 each week just from attendance. The other two points
must be earned by asking/answering questions and participating in discussion.
You can only get points for participating of your own free will. If I
call on you, it doesn't count.
- Quizzes: 20%
- Projects: 40%
- Critiques: 10%
- Participation: 10%
- Final Project: 20%
We have an honorcode now and I trust y'all to follow it.
Read up on it at
http://honorcode.union.edu. All suspected
violations will be reported to the Honor Council chair and Dean
of Studies. You must include the following honor code affirmation
in the comments or prose of everything you hand in:
I affirm that I have carried out the attached academic endeavors with full academic honesty, in accordance with the Union College Honor Code and the course syllabus.
Here are some concrete things to avoid
(this is not a complete list):
Do not "work on the project together" with friends, especially if the group members
are each at your own computers and are always in lock step trying to figure out the same
line or section of code at the same time.
Do not give your
code to another person or receive code from another person -- EVER.
You might think that it's just helping out a friend, but it's still
Do not even look at someone else's code unless it is to
give that other person help. For example, if someone asks you
to look at their code in order to understand an error message, that's fine.
If you are looking because you yourself don't know how to write something and
you need "inspiration", that's plagiarism.
Ok, so what should you do? Here are some tips:
Once you've struggled with something on your own and you're still getting nowhere, ask for help!
Email and visit me, go to the helpdesk, and, yes, ask your fellow students! They can't show
you code, but they can sure write down examples, show you demos, and explain things.
It's ok to write pseudocode together. Get the logic down in English. Then go off
by yourself and translate it to code.
It's ok to read and write code together that is not part of the assignment, but that
helps demonstrate the concept of what you're being
asked to do. Go through a class example together or maybe a demo. There's no better
way to understand something than trying to think up examples in order to teach it to someone else.
It is ok to reuse code...
- that I hand out in class
- that is part of a demo that I leave on Nexus
- that is based off something you saw on the Web as long as you cite the URL
(not verbatim -- see below)
It is NOT ok to reuse code...
Here's the bottom line: except for the above, you have to write all the
code yourself, from scratch.
In all cases, you must explicitly cite any source
(like a web page tutorial or a helpdesk person) that you use to help
complete an assignment. Again, this is similar to writing an English
if you use a quote or material from someone else,
you have to give credit where credit is due. Otherwise you are
inappropriately plagiarizing or borrowing ideas. You do not have
to cite help from me.
- that is part of someone else's project
- that is verbatim from the Web/Internet
- that is in other textbooks
What you need to do
To prepare for class, you are required to do the following:
You are expected to be present for every class. However, I realize that
sometimes other things come up (interview, illness, etc.) so
just please let me know in advance by phone/email if you're going to
be absent. All absences
count as zero points for participation that day. If you miss class, get notes from someone
and do the readings before coming to see me. I'm happy to
explain things, but I won't repeat lectures for you.
Read any assigned readings
Our textbook is a great reference book of good design principles, and I'll
occasionally assign readings from it. However, I hope you pour
though it as much as I have -- it's a great book! There will also
be other readings that I hand out in class. Be sure to keep up with those
since more than likely, we'll be discussing it the next class period.
Check the webpage on Nexus
The reading assignments (and other announcements) will be
posted regularly on the course webpage. You are required
to check it at least once a week. I usually update it over the weekend.
Check your email twice a day
I know: it's old tech, but this school runs on email. I send out
a lot of tips, hints, announcements, error corrections, and
lecture addendums over email. Check it at least twice daily.
Part of your job is to stay engaged in class.
If you're using a laptop/tablet to take notes,
that's fine, but
class time is for class work. Using your computer for other things like
other classes' work, checking Facebook, reading email, or catching the latest ESPN
highlight video is not permitted. This policy extends to cell & smart phones too.
Phones should be in silent mode and out of sight (mine and yours).
Class goes by quick. Stay focused.
If you're done with an in-class exercise, don't allow yourself to get bored.
Extend the exercise. Or help out your neighbor.
I always have at least one student each term who loses all of
his/her work due to a computer glitch or hard drive crash.
Don't let it be you. Make backups
of everything either by saving it on a USB flash drive or
storing it on your orzo account.
Union College facilitates the implementation of reasonable accommodations, including
resources and services, for students with disabilities, chronic medical conditions and temporary
disabilities resulting in difficulties accessing learning opportunities. All students needing services must
first register with Accommodative Services located in Reamer 303. It is strongly recommended that
accommodations be requested within the first two weeks of the term. Last minute requests can be denied.
Any student with a documented learning disorder is welcome to
come talk to me privately about options for completion of exams and
The Bottom Line
Ask questions and seek help. This is the most important
point of all. I live to answer questions. Don't be afraid to
come to my office every single day if you want. It's better
for everybody (you AND me) if you understand
things sooner rather than later. More often than not, there's
a line of people waiting to see me on the day before a project
is due. You'll get the help you need faster by starting on projects
sooner rather than waiting until the last minute.