CS 105: Digital Media Computing

Spring 2017

Welcome to Introduction to Digital Media Computing!

All the homework/labs/lectures will be distributed on Moodle.

Useful Links

Useful Links

Instructor Information(back up↑)

  • Instructor: Dr. Joann J. Ordille
  • Email: ordillej at lafaytte.edu
  • Office: 522 AEC
  • Office Phone: (610) 330-5416
  • Office Hours: MW 4pm-5pm. TWR 10:30am-11:30am. Please email me if you would like to meet at any other time. Also, if my door is open, feel free to drop in.








Course Information

Course Information(back up↑)

  • Web Page:http://sites.lafayette.edu/ordillej/cs-105-digital-media-syllabus-spring-2017/
  • Textbooks:
    • learningprocessingbigdigitalworldbig
    • Learning Processing : A Beginner’s Guide to Programming Images, Animation, and Interaction, 2nd Edition, by Daniel Shiffman. ISBN 9780123944436, Morgan Kaufmann.
    • and
    • Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security, by Brian W. Kernighan. ISBN: 9780691176543, Princeton University Press.
  • Prerequisite: No previous programming experience necessary. If you have a lot of programming experience, I will set up a meeting with you.

Course Description

Course Description (back up↑)
This class is designed as an introduction to computer science using digital media. The prevalence of digital images, digital videos, digital music and large corpora of text make digital media a useful source to learn the basics of computer science. In addition, digital media processing algorithms utilize all of the basic building blocks which underlie computer science. In this class we will examine problems related to digital media processing, such as image blurring, sound editing and text analysis, and learn how to develop computer algorithms which can solve them.

Course Goals and Outcomes

Course Goals and Outcomes(back up↑)
Course Goals:

  • Our main goal is to learn how to develop algorithms, which is basically the process of moving from a problem statement to a computational formulation of a method for solving the problem.
  • Learn how to write code to implement these algorithms using the Processing and Java languages.
  • Learn how to program for digital media and useful digital media processing algorithms.

Course Outcomes: At the conclusion of this course students will be able to do the following.

  • Have the ability to apply knowledge of computing and mathematics appropriate to the discipline.
  • Employ the fundamental elements of the scientific method in the physical and natural world.
    • Identify and/or formulate a testable scientific hypothesis.
    • Generate and evaluate evidence necessary to test and/or revise a hypothesis.
  • Create, interpret, and evaluate descriptions and representations of scientific data including graphs, tables, and/or models.
  • Understand how scientific uncertainty informs the evaluation of hypotheses.
  • Develop algorithms for different problems in different disciplines.
  • Write Processing programs to implement these algorithms.
  • Extend your coding skills to Java.
  • Have enough basic knowledge to pickup other programming languages.

Assignment Types

(back up↑)Assignment Types
Class Participation: Class participation includes asking or answering questions, expressing an opinion about a topic of discussion, meeting with me during office hours, and reporting on activities in a group project, a reading group, or other group activity.  All sincere efforts to participate are admired, so don’t worry, just speak up.  You are even welcome to express an opinion different than mine.  All types of participation count except participation that shows you failed to prepare for class.  For example, asking: “Who is Ada Lovelace?” when the assignment was to read the Countess of Lovelace’s biography would not count as class participation.

Reading Groups: During our first lab, we will form reading groups of four students.  You will read and discuss chapters from Understanding the Digital World in preparation for discussing the chapter in class with me.  The chapters are short and will give you an overview of many facets of computing. You may also want to meet with your reading group to study for exams.

Quizzes: Most of the material in this class is cumulative, so it is essential to stay current in the class.  To help you stay current, there will be unannounced quizzes which will test your knowledge of the previous week.  The intention of the quizzes is to encourage you to review the material each week in preparation for the next week.

Homework: Learning computer programming is much like learning to play a sport or musical instrument, or speak another language.  Practice is important.  The homework as well as the labs and projects are meant to help you practice and gain proficiency.  Homework includes completing assigned problems in Shiffman. These are skill building problems, and the answers are mostly available online on the Learning Processing Website.  Homework also includes assignments that will be distributed occasionally through Moodle. These will  be small assignments which will not involve computers and will help you prepare for the written exams. Homework will not be graded, but will be marked if submitted or not. Notice that you will be able to grade many of the homework problems on your own, through the Learning Processing Website or running your solution on the computer. However, I highly recommend you answer the questions first without a computer and then test your results later.

Labs: Labs are the hands-on side of our class. In them you will get to implement the tools we discuss in class and see how they really work. Lab assignments will be given weekly, and most of our lab time will be dedicated to working on these assignments. Periodically the lab instructor will stop everyone in the lab to discuss common issues or interesting observations. Notice that usually our lab time will not be enough to actually complete the lab. This means that you should plan on working on them outside of the allotted time. Do not wait until the last day

Projects: We will have three projects throughout the semester. These will be similar to our labs but will involve more complicated digital media processing, and demand developing your own algorithms using the tools taught during class. You will have approximately two to three weeks for each project. Each project will involve processing a different type of digital media. The first project will use images, the second sound, and the final project will involve text analysis.

Exams: We will have two midterms. One will be a written exam in class. The second will be a lab exam, which will happen in the lab on the computers (will require coding during the exam). The Final exam will be a comprehensive written exam. Exam absences will receive a score of zero for the exam (unless a dean’s excuse is given).


(back up↑)Submission

For labs and projects:

  • All tasks are individual.
  • All submissions should be made on the Moodle Website.
  • You should zip (compress) the project’s folder and submit the zipped results.
  • Labs assignments are usually due the following Sunday at 11:55pm.
  • If your lab does not work as described in the assignment you are required to hand in an additional text
    document which specifies what does not work.
  • No late submission. Moodle lab submission link will be closed promptly at the deadline. Submissions made after the due time (for example, via email) will not be graded. If you cannot finish the project before the deadline, please make sure to submit what you have before the deadline.

Intellectual Honesty:
What is cheating?

  • Sharing code: copying, retyping, looking at, supplying file.
  • Describing code: Verbal description of code from one person to another.
  • Helping write code line by line.
  • Searching web for solutions.

What is not cheating?

  • Talking about general concepts or high level design.

Statement: All students are expected to adhere to the college policy on academic honesty as listed in the Student Handbook. Discussion of concepts with others is encouraged, but all assignments must be done by yourself or your own team as specified in each assignment requirements. If you use any source other than the text, reference it/him/her, whether it is a person, a book, a solution set, a web page or whatever. You MUST write up the solutions in your own words.


(back up↑)Grading

Graded Material:
The course grade is based on the materials listed below graded on a 100 point scale, with each item contributing a specified percentage to the overall score. As specified in the student handbook, A will reflect excellent work, B will reflect good work, C will reflect acceptable work, and D will reflect passing work.

Class Participation 3%
Quizzes 2%
Homework 3%
Labs (averaged) 18%
Lab Exam 19%
Projects 15%
Mid-Term 15%
Final Exam 25%

Grading Scale:
Typically, grades are assigned as follows from your final numerical grade:

A:  93-100 B+: 87-89 C+: 77-79 D+: 67-69 F:  0-59
A-: 90-92 B:   83-86 C:   73-76 D:   63-66
B-:  80-82 C-:  70-72 D-:  60-62

Assignment Grading:
Your submitted programs (for labs, projects, and exams) would be graded based on:

  • Correctness: Correctness is an objective criterion, which means that the program behaves according to the requirements explained in the assignment in all possible cases.
  • Good Style: Good style refers to the way the program text looks. This includes commenting and correct indentation. We will discuss different aspects of good programming style as we learn how to program.
  • Good Design: Good design is a harder criterion to describe. It affects both the execution of the program and its readability. Characteristics of a good design will be illustrated throughout the course.

Tentative Schedule

(back up↑)Tentative Schedule*

Wk. Dy. Date Topic

Readings (S:Shiffman)
1 T 1/24
Introduction to Processing, Pixels
S: 1,2,4
Lab 1: Drawing
R 1/26
S: 3,4
2 T 1/31
Variables and Interaction
S: 3,4
K: 1
Lab 2: Drawing with Variables
 R 2/2
S: 5, 11
3 T 2/7
S: 6
Lab 3: Conditions and Interaction
  R   2/9
Loops and Arrays
S: 9
    4   T  2/14
K: 2
Lab 4: Array Processing
  R  2/16
S: 7
    5   T  2/21
Functions and Scope
K: 3
Lab 5: Functions
  R  2/23
Nested Loops
S: 8, 9, 13-12
    6   T  2/28
Objects and Classes
(Midterm #1)
Project 1: Image Editor
  R  3/2
S: 15
    7   T  3/7
Objects and Classes
  R  3/9
Objects and Classes
    8   T  3/14
  R  3/16
    9   T  3/21
In Class, Class Creation
Lab 6: Creating Classes
  R  3/23
In Class, Class Creation
  10   T  3/28
  R  3/30
   11   T   4/4
Project 2: Sound Manipulation
  R  4/6
Complexity, Search, Sort
(Midterm #2: Lab Exam)
K: 4
  12   T  4/11
Working with Strings
S: 17
(til Example 17-7)
  R  4/13
Data Input with Processing
S: 18
(Skip 18-8,-12,-13)
  13   T  4/18
More Data Input
Lab 8: Final Project Preparation
  R  4/20
Inheritance, Polymorphism, Full Java
S: 22, 23
  14   T  4/25
Inheritance, Java File I/O
Lab 8: Final Project Read
  R  4/27
Recursion, Programming Languages
K: 5
S: 13-11
  15   T  5/2
Software Systems, Programming
K: 6,7, Wrap Up
Final Project: Text Analysis
  R   5/4

*Tentative schedule, subject to change. Check Moodle for the most up to date information.

**No travel arrangements should be made until the final exam schedule has been issued


Additional Information

(back up↑)Additional Information

Respect for classmates, colleagues and team members: All students are expected to show respect and courtesy to each other.  Mutual respect is a high ideal in academic, business, and personal life.  It is central to learning well together.  Disagreements over ideas or constructive criticism of someone’s work is in keeping with this ideal.  Attacking or disparaging someone is not, and will not be tolerated.  In group projects, mutual respect also includes reliably contributing to the project and keeping your commitments to the group.

We follow the College Diversity Statement which says in part:

All members of the College community share a responsibility for creating, maintaining, and developing a learning environment in which difference is valued, equity is sought, and inclusiveness is practiced.

To learn more about how these principles are followed in the computing industry, view the Google video:

Diversity at Google (https://youtu.be/_3RoQRN65AI)

and the eBay video:

Diversity Workshop at eBay, Europe (https://player.vimeo.com/video/159767606)

Privacy: Moodle contains student information that is protected by the Family Educational Right to Privacy Act (FERPA).  Disclosure to unauthorized parties violates federal privacy laws.  Courses using Moodle will make student information visible to other students in this class.  Please remember that this information is protected by these federal privacy laws and must not be shared with anyone outside the class.  Questions can be referred to the Registrar’s Office.

Equal Access: In compliance with Lafayette College policy and equal access laws, I am available to discuss appropriate academic accommodations that you may require as a student with a disability.  Requests for academic accommodations need to be made during the first two weeks of the semester, except for unusual circumstances, so arrangements can be made.  Students must register with the Office of the Dean of the College for disability verification and for determination of reasonable academic accommodations.

Important Dates:

  • Normal Add/Drop deadline: Feb. 3rd
  • Last day to Withdraw (WD): April 19th
  • Classes end: May 5th
  • Final Exams: May 8th – 15th

Federal credit hour statement: The student work in this course is in full compliance with the federal definition of a four [two or one as appropriate for half and quarter unit courses] credit hour course. Please see the Registrars Office Website (http://registrar.lafayette.edu/additional-resources/cep-course-proposal/) for the full policy and practice statement.