Instructor Will Rosenbaum
- Lecture M/W 2:00–3:20, SCCE A131
- Office Hours, SCCE C216
- Monday 3:30–4:30
- Friday 2:00–3:00
- By Appointment: TBD
Official Course Description
What Algorithms and Visualization is Really About
The main conceptual theme that pervades this course is the interplay between algorithms and aesthetics. Many algorithms are beautiful. Yet the traditional means of expressing algorithms—as (pseudo)code or computer programs—often obscures the elegance of a procedure. Modern web programming tools allow us to generate interactive illustrations that depict, rather than describe, an algorithmic process. By creating thoughtful demonstrations of algorithms, we can illustrate their beauty in a way that is more impactful and accessible than traditional formal descriptions of algorithms.
Another dimension of the interplay between algorithms and aesthetics is the use of algorithms to desired aesthetic ends. When an aesthetic principle can be formalized or codified, we may be able to devise an algorithm to achieve the aesthetic end. Throughout the course, we will see examples where algorithms can be employed towards a desired visual impact.
The main goals of this course are:
- To develop technical proficiency with standard web programming tools.
- To learn to apply algorithmic techniques in order to (1) solve geometric problems, and (2) achieve desired aesthetic ends.
- To generate visualizations of data and algorithmic processes.
Readings and Resources
Required readings will be posted to the course website before each class. You will be expected to do the readings before class each day.
Readings for class will be assigned primarily from the Mozilla Web Docs (MDN). MDN offers extensive documentation and tutorials for web development that focus on fundamental principles.
More expansive (but sometimes less systematic) documentation is also available from W3 Schools. Some required readings will be assigned from W3 Schools.
Additional readings will be posted to the course website.
The main topics covered in this course are:
- Introduction to web programming
- scalable vector graphics (SVG)
- jQuery library
- Color and color spaces
- Cellular automata
- Recursion and dynamic programming
- generating fractals
- optimal design layout
- Computational geometry and visualization
- convex hull
- k means clustering
- Graph drawing
- tree drawing algorithms
- force directed graphs
- circular graph embeddings
- Visualizing graph algorithms
Additional topics may be included as time allows.
The class meets twice a week for 80 minutes. Class meeting time will be divided between a lecture component and small group activities. The activities will require you to program in class, so you should bring your laptop computer with you to class every day. It is essential that you prepare for class by doing the assigned reading as well as any mini-assignments for the class.
Graded coursework is divided into the following categories, along with their relative weights in determining grades.
Programming Assignments (40%). There will be two types of programming assignments: mini-assignments and full assignments. Mini-assignments will typically consist of a short programming task to be completed before class. Mini assignments are to be completed individually. Full assignments are larger assignments that ask you to produce a larger program with more functionality. The assignment description will specify if the assignment should be completed individually or in pairs.
Final Project (35%). The course culminates with an open-ended final project. The project should be done in pairs.
Quizzes (15%). There will be occasional quizzes to check that you have internalized the concepts encountered in class. Quizzes may be in class or take-home. The topic and dates of quizzes will be announced the week before the quiz.
Participation (10%). You are expected to actively participate in class discussion. Excessive absences and/or disengagement will result in a lower participation score.
Late Homework Policy
Late homework is not accepted without prior approval, except in extreme circumstances. Mini-assignments must be submitted before class, as they are prerequisite to class engagement. In order to account for occassional absences, the lowest few mini-assignment grades will be dropped from your raw score when determining final grades.
Other Course Policies
The main course materials (slides, assignments, etc.) will be posted to the course website. Class announcements and discussion will be moderated on Moodle. All assignments should be submitted through Gradescope.
If you have clarifying questions about course material, policies, assignments, etc., that might be pertinent to other students in the class, please post your question to the Moodle discussion board. For individual questions, email and/or office hours are the best ways to get in touch with me. Please include the tag [COSC 225] in all emails sent to me about the course.
You are encouraged to discuss homework problems and work on assignments together. However, individual submitted work should be your work and yours alone. In particular, simply sharing completed work is not acceptable collaboration.
During quizzes, any form of collaboration and/or use of outside resources is strictly forbidden.
Attendance and Illness
You are expected to attend class regularly and actively participate in class discussion.
All students are expected to follow college guidelines and policies regarding COVID testing and masking.
- Unless you are sick or unable to attend, you should come to class.
- If you are sick, you should not attend class.
- If you are experiencing any symptoms of illness, please take a COVID test before attending and (if negative) wear a mask at all times in class.
As much as possible, I will make course materials available online to help mitigate the effects of absences.
Well-being and Accommodations
If you require accommodations due to a documented disability, please contact Accessibility Services.
All students are expected to uphold the Amherst College Honor Code, in particular the Statement of Intellectual Responsibility:
Every person’s education is the product of their intellectual effort and participation in a process of critical exchange. Amherst College cannot educate those who are unwilling to submit their own work and ideas to critical assessment. Nor can it tolerate those who interfere with the participation of others in the critical process. Therefore, the College considers it a violation of the requirements of intellectual responsibility to submit work that is not one’s own or otherwise to subvert the conditions under which academic work is performed by oneself or by others.
Cases in which intellectual responsibility is violated (such as cheating) will result in loss of credit for an assignment and/or a failing grade in the course. Additionally, all suspected cases of academic dishonesty will be reported to the college, which may result in further disciplinary action by the college.