CSC107 Creative Computing


An introduction to computer science and programming, motivated by examples from digital art, music and sound processing, and generation and manipulation of web files. Introduces students to algorithms, basic data structures, and programming techniques. All computing for the course will be done in the Python programming language.

Required Text

Introduction to Computing and Programming in Python: A Multimedia Approach, 4th Edition, Mark Guzdial & Barbara Ericson, Prentice Hall, 2015.

Assignments & Grades

There are numerous types of assignments for this course - programming is a very hands-on activity and the more you do, and the different ways you think about it, the better you will become at it.

Working together is a great way to more fully explore the concepts of the course. At the same time, independent work is also critical so that you fully understand the material on your own. Thus assignments are designed to balance opportunities to work together and individually. In lab, I am happy for you to work together. PLEASE indicate whom you worked with on your lab cover sheet. It is NEVER acceptable to collaborate for homework assignments.

There will be weekly homework exercises. Homework exercises are for you to play with and reinforce the concepts we talk about in class. Each person must hand in his or her own solution. Where these exercises require python programs, you MUST hand in working code. If a section of code does not work for you, it is ok to comment it out. This will be explained more fully at the appropriate time.

There will be two programming projects. These projects will combine different programming concepts and multimedia techniques, and provide opportunities for creativity. Each student must complete his or her own programming project. You may discuss algorithms with each other, but you may NOT look at each other's code. To complete these projects on time, it is critical that you start each as early as possible and get help as soon as possible when needed.

At no point in the course, for assignments, labs or projects, may you use code you find from online resources such as stack overflow.

There will be labs where you will work on exercises in-class and receive help from your peers and myself.

There will be one in-class midterm exam, and a final exam that must be completed individually. There may be “pop quizzes” and independent in-class exercises. The intent is not that these be “punitive” in any way, but rather motivate you to keep up and provide feedback on your progress. Learning to program is like learning a foreign language: if you do not speak it during some part of everyday your progress will be quite slow.

Finally, class attendance and participation is a critical component of the course. Please discuss any necessary absences with me (see below).

Handing in assignments: For both homework exercises and programming projects, you will turn in a hard copy of the source code and submit the program electronically using the NEXUS website.

Whether you work on your own computer or on the system at Union, ultimately your programming projects and homework exercises must - so be sure to test it before handing it in. Labs and in-class exercises will also be submitted on NEXUS.

Grade Allocation

Homework exercises: 15% In-class exercises, quizzes and lab work: 15% Project 1: 10% Project 2: 10% Midterm: 20% Final: 20% Attendance and Participation: 10%