Bryn Mawr College
CMSC 110: Introduction to Computing
Fall 2013
Course Materials
Prof. Deepak Kumar
General Information
Instructors:
Lecture Hours: Tuesdays & Thursdays, 2:15 p.m. to
3:45 p.m.
Room: Park 338
Lab: Wednesdays 10:00 a to Noon in Room 231 (additional lab
hours will also available, see below)
Laboratories:
- Computer Science Lab Room 231 (Science Building)
- You will also be able to use your own computer to do the labs
for this course.
Lab Assistants: The following Lab assistants
will be available during the week (names and schedules will be
posted by the end of this week) for assistance on lab assignments.
- Angie Yunqi Chen, Thursdays 8:00p to 10:00p and Fridays 10:30a to 12:30p
- Elizabeth Fawcett, Sundays 7:00p to 9:00p and Tuesdays 7:00p to 9:00p
- Rebecca Park, Thursdays 4:00p to 6:00p and Fridays 12:30p to 2:30p
- Bryce Lewis, Fridays 7:30p to 9:30p and Saturdays 2:00p to 4:00p
- Angela Mastrianni, Sundays 3:00p to 5:00p and Mondays 10:00a to Noon
Texts &
Software
Processing: Creative Coding & Generative Art in Processing 2 by
Ira Greenberg, Dianna Xu, Deepak Kumar, Friends of ed, 2013.
Available at the Campus Bookstore. Also at amazon for $41.48 click here
A Kindle eBook is available for those comfortable learning from an eBook (Amazon price is $20.00). The Bryn Mawr Bookstore price is $44.99.
Processing Software (This software is
already installed in the Computer Science Lab). The
software is also available for your own computer from
Processing web site (www.processing.org). Download the latest stable 2.X version for your own computer/Operating System.
|
|
Syllabus
Course Description: An introduction to the
nature, subject matter and branches of computer science as an
academic discipline, and the nature, development, coding,
testing, documenting and analysis of the efficiency and
limitations of algorithms. Also includes the social context of
computing (risks, liabilities, intellectual property and
infringement).
This semester, we will be exploring the creative aspects of
coding as a context for learning the above concepts. You will
exercise your creativity by desiging programs in a language
called, Processing. Processing is a new language/environment
built upon the programming language Java. Processing was created
by artists, designers, and computer scientists to explore ideas
of creative coding sing computer algorithms.
We will cover the entire text during this semester. Please
refer to the text for more details.
Important Dates
September 3 : First lecture
October 1: Exam 1
December 12: Last lecture/Exam 2
Assignments
- Assignment#1 (Due on Tuesday, Septmber 17): Click here for details.
- Assignment#2 (Due on Tuesday, September 24): Click here for details.
- Assignment#3 is posted (Due on Tuesday, October 8): Click here for details.
Changed: Now due on Thursday, October 10
- Assignment#4 is posted (Due on Tuesday, November 5): Click here for details.
- Assignment#5 is posted (Due on Tuesday, November 12): Click here for details. Code file for Assignment#5: Click here.
- Assignment #6 is posted (Part#1 Due on November 21, Part#2 due on December 5): Click here for details.
Lectures
- Week 1 (September 3, 5)
September 3: Course introduction, adminstrivia. Computing: an introduction, examples of modern day computing. Algorithms, programs, and programming languages. Creative computing: an introduction with examples. Introduction to Processing.
Slides: 01_Introduction
Do: Go to the computer lab, log in and start the Processing 2.0 application. Go to the Tutorial section of the Processing web site:
http://www.processing.org/tutorials/gettingstarted/
Read the Getting Started tutorial (by Casey Reas and Ben Fry) and try out the two examples of simple Processing programs presented there.
If you’d like to be able to work on your own computer, go to processing.org’s Download section and install Processing on your computer. Ensure that you have a working implementation of Processing.
After completing the above tutorial, readChapter 1 (Read pages 1-12, skim 12-32, return to IDE details as needed)
September 5:Art By Numbers. Processing, Drawing basics: canvas, shapes, and colors. Introduction to Processing commands: size(), background(), 2D shapes (point(), line(), triangle(), rectangle(), quad(), ellipse(). Drawing attributes and modes. Structure of a static processing program. CS/Programming principles: Algorithms, psuedocode, code, syntax, sequencing.
Slides: 02_ArtByNumbers
Do: Read Chapter 2 (pages 33-50).
Read and do the Coordinate System and Shapes and the Color tutorials on processing.org.
Review the Processing commands introduced; try them out, experiment with shapes, modes, attributes, and colors.
Assignment#1 (Due on Tuesday, Septmber 17): Click here for details.
- Week 2 (September 10,12)
September 10: Lecture#3
Topics: Basic drawing & 2D shapes contd.: arc(), quad(), curve(), beginShape(), endShape(), vertex(), curveVertex(). Basic structure of a static Processing program.
Slides: 03_2DShapes.ppt
Do: Finish reading Chapter 2. For more on drawing curves read the Drawing Curves tutorial on processing.org.
September 12: How to draw simple text. Variables, types (int, flot, String, boolean, color), naming rules, declarations, arithmetic operators. Predefined Processing variables: width, height, displayWidth, displayHeight, PI, HALF_PI, TWO_PI, mouseX, mouseY.
Static vs. Dynamic Program modes, (usijng setup() and draw() functions), code blocks ({..}), interactivity with mouseX and mouseY variables, event listeners, frame rates.
Do: Read Chapter 3 (page65-72)
Slides: 04_Functions
- Week 3 (September 17, 19 )
September 17: Functions: mathematical functions, parameters/arguments, return values, definition vs. application, defining and using functions in Processing, variables and scope. Creating shape abstractions using functions, using mathematical functions in Processing: random().
Do: Read Chapter 3 (page65-72)
Slides: 04_Functions
Assignment#2 (Due on Tuesday, September 24): Click here for details.
September 19: Functions: Boot camp! How to design and build functions and use them, and reuse them. Example using drawing trucks, clovers, and flowers. Transformations: translate, rotate, scale.
Examples from class: Trucks, Clovers
- Week 4 (September 24, 26)
September 24 : Control Structures: Loops: for- and while-; if- and switch-. Examples of using simple logical statements and loops.
Do: Read Chapter 3 (pages 73-80, 88-91)
Slides: 05_ControlStructures
September 26 : Computing points on the plane using Trigonometry. Putting loops and if-statements to work: Drawing Polygons.
Examples: Ball Example, polygons with lines, polygon shapes
Assignment#3 is posted (Due on Tuesday, October 8): Click here for details.
- Week 5 (October 1, 3)
October 1: Exam 1 is today.
October 3: Discussion of Exam1. Introduction to Perlin Noise: noise(). The difference between random() and noise(). String art using noise()
Assignment#3 is posted (Due on Tuesday, October 8): Click here for details.
Changed: Now due on Thursday, October 10
Bryce Lewis' TA hours for Friday, October 4 are cancelled.
Example: StringArt (Version 2)
- Week 6 (October 8, 10)
October 8: String art, contd. Handling Data: Visualizing Data. Simple Pie Charts and bar graphs. Introduction to arrays.
Read: Chapter 5 (pages 149-158).
October 10: Arrays: defining, creatin, initializing, indexing. Basic Array Operations.
Example: Pie Chart with arrays.
- Week 7 (October 15, 17)
No Classes. Fall Break
- Week 8 (October 22, 24)
October 22: Review of pre-Fall Break materials via additional visualization examples.
Read: Chapter 5
Examples: Pie Chart, Bar Chart, Divided Bar Chart, Bubble Chart
October 24: Reading data from files. Strings: splitting strings. Using the map() function. text formatting basics. Doing a Time Series Visualization.
Example: USPS First Class Volume
Assignment#4 is posted (Due on Tuesday, November 5): Click here for details.
- Week 9 (October 29, 31)
October 29: A general program design strategy for building data visualizations. Example: Visualizing state population data.
Example: Visualizing State Population (Note: You will need to get the data file and place it in your sketch's Data folder)
October 31: OOP - Object Oriented Programming. Fundamentals: objects, attributes, behaviors, classes, instances, etc. Doing OOP in processing.
Read: Chapter 6
- Week 10 (November 5, 7)
November 5: OOP contd. Defining constructors. The "this" keyword. Adding gravity to the balls example. OOP concept: Encapsulation and its (non)-implementation in processing. Defining a 2-D Vector class. Using the PVector class from processing.
Read: Chapter 6
Assignment#5 is posted (Due on Tuesday, November 12): Click here for details.
November 7: More OOP examples. PVector class in processing. Ball in a box.
Code file for Assignment#5: Click here.
- Week 11 (November 12, 14)
November 12: Ball in a box, conclusion. Review of assignment#5. Inheritance in OOP.
Read: Chapter 6.
Example(s) from class: The ballInColoredBoxSketch, base ball class, ballInBox class, base box class, colored box class.
Assignment #6 is posted (Part#1 Due on November 21, Part#2 due on December 5): Click here for details.
November 14: Strings: beyond the basics. Putting Everything You Have learned to Work: How to design, write, develop a large program. ArrayList class in Processing.
Read: Chapter 7.
- Week 12 (November 19, 21)
November 19: How to design, write, develop a large program: The Wordle application.
Change: TA Hours for Angie Chen today will be from 8:40p to 10:40p
(instead of 8:00 - 10:00p)
November 21: How to design, write, develop a large program: The Wordle application - Counting word frequencies, sorting.
- Week 13 (November 26, 28)
November 26: How to design, write, develop a large program: The Wordle application - Visualizing the words, layout strategies, etc.
Example Code: The Final Version of Wordle app: Main Program, the Word class, the WordTile class, the WordFreq class
November 28: No class. Thanksgiving!
- Week 14 (December 3, 5)
December 3: No class today, Deepak is out of town.
December 5: Prof. Xu will teach today. Topic: Image Processing.
Read: Chapters 9 & 10 (relevant sections only as covered in class).
Slides: Click here.
- Week 15 (December 10, 12)
December 10 :
December 12: Exam 2 is today.
Course Policies
Communication
Attendance and active participation are
expected in every class. Participation includes asking questions,
contributing answers, proposing ideas, and providing constructive
comments.
As you will discover, we are proponents of two-way communication
and we welcome feedback during the semester about the course. We
are available to answer student questions, listen to concerns, and
talk about any course-related topic (or otherwise!). Come to
office hours! This helps us get to know you. You are welcome to
stop by and chat. There are many more exciting topics to talk
about that we won't have time to cover in-class.
Although computer science work can be intense and solitary, please
stay in touch with us, particularly if you feel stuck on a topic
or project and can't figure out how to proceed. Often a quick
e-mail, phone call or face-to-face conference can reveal solutions
to problems and generate renewed creative and scholarly energy. It
is essential that you begin assignments early, since we will be
covering a variety of challenging topics in this course.
Grading
There will be seven assignments,
weighted equally in the final grading. Assignments must be
submitted according to the Assignment Submission
instructions. You should pay careful attention to the Code Formatting Standards and Grading Policy when doing your
assignments. The grading structure for individual
assignments is broken down in the Grading Policy.
At the end of the semester, final grades will be calculated as a
weighted average of all grades according to the following weights:
Exam 1: |
18% |
Exam 2: |
26% |
Assignments: |
56% (8% each)
|
Total: |
100% |
Incomplete grades will be given only for verifiable medical
illness or other such dire circumstances.
Submission and Late Policy
All work must be turned in either in hard-copy or electronic
submission, depending on the instructions given in the
assignment. E-mail submissions, when permitted, should request
a "delivery receipt" to document time and date of submission.
Extensions will be given only in the case of verifiable medical
excuses or other such dire circumstances, if requested in advance
and supported by your Academic Dean.
No assignment will be
accepted after it is past due.
Exams
There will be two exams in this course. The exams will be
closed-book and closed-notes. The exams
will cover material from lectures, homeworks, and assigned
readings (including topics not discussed in class).
Study Groups
We encourage you to discuss the material and work together to
understand it. Here are our thoughts on collaborating with other
students:
- The readings and lecture topics are group work. Please discuss
the readings and associated topics with each other. Work
together to understand the material. We highly recommend forming
a reading group to discuss the material -- we will explore many
ideas and it helps to have multiple people working together to
understand them.
- It is fine to discuss the topics covered in the homeworks, to
discuss approaches to problems, and to sketch out general
solutions. However, you MUST write up the homework answers,
solutions, and programs individually without sharing specific
solutions, mathematical results, program code, etc. If you
made any notes or worked out something on a white board with
another person while you were discussing the homework, you
shouldn't use those notes while writing up your answer.
- Under ABSOLUTELY NO circumstances should you share computer
code with another student. Similarly, you are not
permitted to use or consult code found on the internet for any
of your assignments.
- Exams, of course, must be your own individual work.
If you have any questions as to what types of collaborations are
allowed, please feel free to ask.
Links
Created on August 7, 2013.