This course provides an introduction to multimedia programming: developing programs that create and manipulate text, pictures, sound, and movies. Topics include creating negative and gray-scale images, reversing and splicing sounds, creating sound visualizations, and creating animations. You will learn some of the concepts and techniques underlying software applications like Photoshop or SoundEdit as well as fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound.

Hands-on programming is a central component of the course, embodied in weekly labs and frequent programming assignments. There will be some lecture-style content, but most of the in-class time in both Mon/Wed/Fri "lectures" and Thursday "labs" will be devoted to active learning activities such as discussions, labs, and group activities.


Instructor:


Course Web Site:   www.cs.kzoo.edu/cs107/
Course Teams Sites:   CS 107 Pictures & Sound;   CS Collaboration Center
CS Collaboration Center Staff and Hours: http://www.cs.kzoo.edu/cs107/people.html

Required Readings and Videos: The required textbook is Understanding the Digital World by Brian W. Kernigan, 2nd Edition (2021). Other required reading and video assignments will listed on the class Detailed Schedule page and will be available online. You can find other references in the class bibliography.

Class and Lab: Classes and labs will take place in Olds/Upton 312. There are several college computers available in this classroom, although many students choose to bring their own laptop.
Computing Requirements: A computer running Windows, MacOS, or Linux, plus Internet connectivity, is recommended. Most, if not all, of the college-owned computers on campus have the appropriate software.

Required Software: The computer science department uses free and open source software whenever possible, choosing applications that work across Linux, Mac, and Windows platforms.

In this class we will use Visual Code and JES4py for developing and running Python code. While these software packages are installed on the college computers, I highly suggest having them installed on your personal computer.

How you set up a Python environment depends on the type of computer you are using (Mac, Linux, Windows). Follow the Installation Instructions for installing VC, python, and JES4py. For each installation, make sure you choose the appropriate package for your operating system.

Prerequisite:  none


Topics to be covered (and approximate course schedule):

  Topics
Week 1: Introduction to Course; Variables and Functions in Python
Week 2 - 4: Pictures as Media Types; Conditions and Looping
Program Design
Week 5: Midterm Exam: mid-semester reflection
Week 5 - 7: Sound as a Media Type; Testing and Debugging
Week 8: Movies: Generating Frames, Creating Animations
Weeks 9 - 10: Algorithm Analysis, Complexity, and Computability
Exam Week: Final Exam: semester reflection

Participation and Staying On-Track:

Learning a language, even a programming language, requires lots of practice, adding a little more "vocabulary" every day and continuing to use and become familiar with the constructs you learned yesterday and last week. It is very important in this class to practice and make progress every day. There is a direct correlation between keeping up and how much you learn and can apply in later courses or in a job. Active and consistent attendance, engagement, and collaboration is the best way you can benefit your learning.

Although it is your choice to wear a mask outdoors or in common indoor spaces after week 1, the proper use of masks is required while attending COMP 107 or while in my office. Students who are not masked will be asked to leave until a suitable mask is acquired. Please keep a mask supply in your backpack/bookbag.

Assignments:

Assignments, announcements, class notes, and other material will be made available on the course web site:

http://www.cs.kzoo.edu/cs107/
Students are responsible for checking this resource frequently.

Reading assignments, short videos, and/or problem sets may be assigned for each class. You are expected to come to class prepared to discuss the concepts from the reading or videos and your solutions to any exercises. You should also bring questions you have from the reading to class.  You may work on the problem sets in groups; just be sure that each group member understands each answer well enough to present it to the class. The readings and videos will provide an introduction to new topics and the problem sets will check your understanding of concepts. Problem sets will be turned in.

There will be several different types of programming assignments. Almost every new concept has an associated mini-lab which is an immediate "hands-on" activity to experiment with that concept. They are designed to be completed during a typical class period. The weekly laboratory assignments provide a more in-depth exploration of a concept and are designed to be completed during the typical weekly 2-hour lab time, although some may take slightly longer. The programming assignments will be more complex, allowing you to tie several concepts together, and may take a week or longer to complete. The time required to write a program and debug it is difficult to predict. We will make programming assignments available online far enough in advance that you will have some flexibility in scheduling your work, but you are responsible for budgeting your time wisely so that you will be able to complete your projects on time. It is very important in this class to practice and make progress every day. There is a direct correlation between keeping up and how much you can learn and apply in later courses or in a job.

Late Assignment Policy

Assignments are expected to be turned in on time. Currently, no penalty will be applied to late assignments. This policy will change if late assignments become a problem! Consistent practice helps solidify the concepts and ideas presented throughout this course. Failure to keep up with home work assignments limits your ability to build on CS concepts. In addition, it is disrepectful to yourself, your fellow students who are here to learn, and the TAs who dedicated time to grading.

If it is determined by the TAs and myself this policy needs to change, A 10% reduction will be imposed on late work for every day turned in late. This does not include weekends or holidays.

Tests and Quizzes

There are no tests or quizes administered in this course. Instead, weekly or biweekly reflections will be given to assess understanding of the concepts covered. It is important to complete these reflections thoroughly. Instead of a midterm and final exam, comprehensive reflection assessments will be given. These assessments will be take home so the weekly/biweekly reflections as well as other course materials may be used. Assessments are to be done individually, no exceptions!

CS Collaboration Center:

The CS Collaboration Center is open for two hours on Sunday through Thursday evenings. (Check the Collaboration Center schedule for staff and hours.) Think of it as your computing wellness and fitness center, frequented by a community of learners and staffed with personal fitness trainers (the instructors and teaching assistants).

Grades:

Grades will be based on:

Problem Sets 50%
Laboratory Assignments 25%
Programming Projects 25%

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor system. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Problem Sets: You should feel free to work with others on the problem sets. As you work with others, keep in mind that the goal is not just getting a solution to the problem, but learning how to solve the problem yourself.

Laboratory Assignments and Programming projects: Some assignments may allow you to work in pairs. Whether working individually or in a team, you may discuss lab assignments and programming projects with classmates and give and receive help. You may not, however, digitally share code or code fragments, unless you are working as a team on a project where teamwork has been explicitly allowed. You may also, of course, receive help from your instructor and from the CS teaching assistants. during labs, mini-labs, and Collaboration Center hours.

You should document authorship, group-work, and "outside" help (from the TAs, your instructor, or other groups within the class) in your program documentation using the following clauses:

        Authors(s):
        Working with or alongside lab group members:
        With Assistance From:
    

Exams should be entirely your own work.

Penalties for violating the Honor System in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in the immediate failure of the course.


Title IX Responsibilities:

Kalamazoo College strives to provide an environment free of bias, discrimination, and harassment. If you have been the victim of sexual or gender-based harassment, discrimination, misconduct, or violence, I encourage you to report this so the College can provide you options for support or resolution though the Title IX process. If you share information of an incident with me, I am required to notify the Title IX Coordinator about the facts of the incident. For more information about your options and confidential resources, please visit the Title IX website.