Bryn Mawr College
        CS 110: Introduction to Computing 
        Spring 2013 
        Course Materials
            Prof. Deepak Kumar & Prof. Paul Ruvolo
      
    
    
      
    
    General Information
    Instructors: 
    
      
        
          Deepak Kumar 
            246-B Park Science Building 
            526-7485 
            dkumar at brynmawr dot edu 
            http://cs.brynmawr.edu/~dkumar | 
          Paul Ruvolo 
            250 Park Science Building 
            pruvolo at cs dot brynmawr dot edu  | 
        
      
    
    Lecture Hours: Tuesdays & Thursdays , 2:15 p.m. to
      3:45 p.m.
      Room: Park 338
      Lab: Wednesdays 1:30p to 3:30p 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 Chen (Thursday 4pm-6pm, Saturday 4pm-6pm)
       
      - Juliette Kingsberg (Monday / Thursday 6pm-8pm)
       
      - Bryce Lewis (Tuesday / Thursday 8:45am-10:45am)
       
      - Hanna Organick (Saturday / Sunday 10am-12pm)
       
      - Mengjie Pan (Monday / Friday 2pm-4pm)
 
    
     
    
      
 Texts &
      Software
    
      
        
          
            
              Learning Processing: A Beginner's Guide to
                  Programming Images, Animation, and Interaction by
                Daniel Shiffman, Morgan Kaufmann Publishers, 2008.
                Available at the Campus Bookstore. 
                 
                Book Web Site: Here you
                will find additional materials. 
              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). 
                 
               
             
           | 
          
               
              
           | 
        
      
    
    
      
 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. The blurb below,
        from Shifman's text is an excellent description of what we will
        be doing this semester: 
      
        This book tells a story. It’s a story of liberation,
            of taking the first steps towards understanding the
            foundations of computing, writing your own code, and
            creating your own media without the bonds of existing
            software tools. This story is not reserved for computer
            scientists and engineers. This story is for you. 
            
            From: Learning Processing,
          by Daniel shiffman, page ix.
      
      We will cover the entire text during this semester. Please
        refer to the text for more details. 
    
     
    
      
 Important Dates
    
      January 22 : First lecture
        March 7: Exam 1
        May 2: Last lecture/Exam 2 
    
    
      
 Assignments
    
      -  Assignment#1:
          (Due on January 29)
 
      - Assignment#2
            (Due on February 12) 
 
      - Assignment#3
            (Due on Thursday, February 21) 
 
      - Assignment#4
            (Due on Tuesday, March 4) 
 
      - Assignment #5 (Due
            on Tuesday, April 2)
 
      - Assignment#6 is
            posted (Part 1 Due on Thursday, April 11, Part @ on
            Thursday, April 18) 
 
      - Assignment #7 (Due
            on Tuesday, April 30)
        
       
    
    
      
 Lectures
    
      - Week 1 (January 22, 24)
        
        January 22 1: Course Introduction. What is
        computing? Algorithms, programming. What is creative computing?
        Examples. Introduction to Processing. Basic shapes and colors:
        point, line, rect, triangle, quad, stroke, fill, grayscale
        color, rgb color. 
          
          Slides from lecture: Introduction 
        
          Read: Chapters 1-3 from Shifman. In case the books
        are not yet in at the bookstore, you can read the online
        tutorials posted at the Processing website. Read through the
        sections: Getting Started, Overview, Coordinate System &
        Shapes, and Color. 
          
          Install: Download and install Processing on your
        computer and play with it. For downloads, go to www.processing.org 
        Install the Release 1.5.1 only. Processing is already installed
        on all computers in the CS Lab (Room 231 PSB). You are
        encouraged to use the lab to do all your assignments. 
        
          January 24: Drawing primitives: point, line, shapes
        (ellipse, triangles, rectangles, quads, etc), color (grayscale,
        rgb, alpha channels), curves, shapes, images, simple mouse
        interaction.
        Read: Chapters 1, 2, and 3 from Shifman.
        
           Slides from lecture: Intro to Processing
        
        
        Examples:
        AlphaChannels,
        CartoonCharacter1,
        LadyBug1,
        Monster1,
        Ndebele,
        Penguin1,
        Sushi
        
        Useful Tools:
        Arc Editor,
        Curve
          Editor, Bezier
          Editor
        
        Assignment#1:
          (Due on January 29)
        
        
  
      - Week 2 (January 29, 31)
        
        January 29: Review of basic Processing drawing
        primitives. Review of Assignment#1. Static vs. Dynamic modes in
        processing.
        
        Read: Chapters 1&2 from GXK.
        
          January 31: Creating shapes using vertices and
        curves. Variables: data types, names, and values. Assigninment
        and simple arithmetic operations. Mouse interaction.
        
        Read: Chapters 4 from Shiffman. Start reading
        Chapter 3 from GXK.
        
        Examples: simpleShapes,
        bluetoothV1,
        bluetoothV2,
        house#1,
        house#2,
        snowAngel 
        
        Assignment#2 (Due
            on February 12) 
        
        
  
      - Week 3 (February 5, 7)
          
          February 5: Deepak & Paul are out of
        town. Class will be held by Prof. Eric Eaton. 
        
          February 7: Deepak & Paul are out of
        town. Class will be held by Prof. Eric Eaton. 
        
        
  
      - Week 4 (February 12, 14)
        
        February 12:  
        Review of loops and variables.  For loops.
        
        Read: Chapters 5 and 6 from Shiffman
        
       
      - February 14:   Nested
        loops and functions. Passing parameters. How to draw a heart
        using Bezier Curves. Hell Week entertainment... 
        
        Examples: Heart, a
          simple heart using Bezier Curves, Heart with
          functions, Happy
          Together! 
        
        Assignment#3 (Due
            on Thursday, February 21) 
        
        Read: Chapters 6 and 7 from Shiffman.
        
  
      - Week 5 (February 19, 21)
        
        February 19: Functions: return values,
        parameters. Functions that do computing, draw objects. Designing
        with functions.
        
        Read: Chapter 7 from Shiffman. Also Chapters 3
        & 4 from GXK. 
        
        Examples: basicFunctions
          and parameters 
        
        February 21: Introduction to angles
        (degrees, radians) and basic trigonometry. Examples: drawing
        circles, polygons, stars, spirals.
        
        Read: Section 13.7 & 13.8 from Shiffman.
        Also Chapters 3 & 4 from GXK. 
        
        Examples: Trucks, Moving
          Truck, Polygons
        
        
  
      - Week 6 (February 26, 28)
        
        February 26: Using basic trigonometry
        in sketches.Drawing polygons, stars, and spirals. Randomness
        versus Noise: An introduction to Perlin Noise. String Art: An
        exposition on computational creativity.
        
        Read: Section 13.6 from Shiffman.
        
        Examples: Polygons,
        Fillable
          Polygons, Stars, String Art
        (version 1) 
        
        Assignment#4
            (Due on Tuesday, March 4) 
          
          February 28: String Art (uisng Perlin Noise),
        Functions revisited.
        
        Read: Chapter 7 again (from Shiffman) 
        
        Examples: String Art
          (Final Version), Chairs 
        
  
      - Week 7 (March 5, 7)
        
        March 5: Review. Transformations:
        translate(), scale(), rotate(), pushMatrix(), popMatrix().
        Visualizing using Pie Charts. 
          
          Read: Chapter 14 from Shiffman.
          
          Examples: Deepak's
          Mandala, Birthday
          Pie Chart , anhe here is a colored
          version of Deepak's Mandala. 
        
          March 7: Exam 1 is today. 
        
  
      - Week 8 (March 12, 14)
        
        No Classes. Spring Break 
        
  
      - Week 9 (March 19, 21)
        
        March 19: GXK Chapter 5, Shiffman Chapter 9.
        
        Assignment 5 out (due
            Tuesday April 2nd)
         
          March 21: Data Visualization and Arrays
        
        Examples: BarChart
        (in class example using frequencies of birthday months)
        
  
      - Week 10 (March 26, 28)
        
        March 26: Arrays, Data Visualization:
        Acquire, Filter, Input (loadStrings(...)), Parse (split(...)),
        Process, Visualize. 
        
        Read: Chapter 5 from GXK.
        
        Examples: Bar Chart
          Version 2, Bar Chart
          Version 3, the
          birthday data file 
        
          March 28: Bar Charts, again! Making the app
        completely generic! Acquiring some real data, cleaning, and
        using it (we will work with US Census Data).
        
        Read: Chapter 5 from GXK.
        
        Examples: Interactive
          Bar Chart 
        
  
      - Week 11 (April 2, 4)
        
        April 2: 
        Introduction to Object Oriented Programming
        
        Read: Chapter 6 from GXK
        
        Examples: BouncingBall
        
        April 4: 
        Object-Oriented Programming
        
        Read: Chapter 6 from GXK
        
        Examples: House
          With Objects
        
        Assignment#6 is
            posted (Part 1 Due on Thursday, April 11, Part @ on
            Thursday, April 18)  
       
    
    
      
 
    
      - Week 12 (April 9, 11)
        
        April 9: OOP Design
        recap: Designing with objects. Other examples: bank account,
        PVector. Using PVector. The 'this' keyword. Writing generic
        constructors. 
        
        Read: Chapter 6 from GXK.
        
        Examples: Ball
          with PVector and use of 'this' 
        
        April 11: OOP Design,
        contd. The 'this' keyword. Inheritance in OOP. Interfaces. 
        
        Read: Chapter 6 from GXK 
        
        Examples: A
          sample creature sketch with two creatures. 
        
  
      - Week 13 (April 16, 18)
        
        April 16: Recursion.
        Problem solving using recursion. Creative recursion.
          
          Read: Chapter 8 from GXK. 
          
          Examples: Factorial,
        Circles,
        Trees
        
        
          April 18: Recursion.
          
          Read: Chapter 8 from GXK.
          
        Examples: Fib, LSystem
        
        Assignment #7 (Due on
            Tuesday, April 30)
        
  
      - Week 14 (April 23, 25) 
        
        April 23: Image manipulation in Processing. Pixel buffers.
        
        Read: Chapter 15 from Shiffman & Chapter 10 from GXK.
        
        
        Examples: Load an image, Negative, Grayscale/Sepia, Pixelation, Pixel Buffer 
        
          April 25:  Pixel Buffers. Example of various image processing techniques.
          
          Examples: Fade, Obamicon, Pointillism        
        
  
    
    
      - Week 15 (April 30, May 2)
        
        April 30: From pixels to Computational Photography and other cool stuff. Review. 
        
        Sample Exam2: Exam from Fall 2012 (Ignore Q5 & 3) 
        
          May 2: 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: | 
          22% | 
        
        
          Quizzes: 
           | 
          4% (total) 
           | 
        
        
          | Assignments: | 
          56% (8% each) 
           | 
        
        
          | Total: | 
          100% | 
        
      
    
    Incomplete grades will be given only for verifiable medical
      illness or other such dire circumstances.
    All graded work will receive a percentage grade between 0% and
      100%.  Here is how the percentage grades will map to final
      letter grades:
    
    
      
        
          Rounded Percentage 
           | 
          Letter grade 
           | 
           
           | 
          Rounded Percentage  | 
          Letter grade  | 
        
        
          97% -100% 
           | 
          A+ (4.0) 
           | 
          77% - 79% | 
          C+ (2.3) | 
        
        
          | 93% - 96%  | 
          A (4.0)  | 
          73% - 76%  | 
          C (2.0)  | 
        
        
          | 90% - 92%  | 
          A- (3.7)  | 
          70% - 72%  | 
          C- (1.7)  | 
        
        
          | 87% - 89%  | 
          B+ (3.3)  | 
          67% - 69%  | 
          D+ (1.3)  | 
        
        
          | 83% - 86%  | 
          B (3.0)  | 
          60% - 66%  | 
          D (1.0)  | 
        
        
          | 80% - 82%  | 
          B- (2.7)  | 
          0% - 59%  | 
          F (0.0)  | 
        
      
    
    
    The instructors reserve the right to adjust the percentage ranges
    for each letter grade upward in your favor.
    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.
    
    Late submissions will receive a penalty of 15% for 0-24 every hours
    it is past the due date and time (e.g., assignments turned in 25-48
    hrs late will receive a penalty of 30%). No assignments will be
    accepted after two days it is past due. 
    Quizzes 
    There will be a number of short open-book/open-notes quizzes
      (approximately 4-8) over the semester.  They will not be
      announced ahead of time, and will be given in the first few
      minutes of class (so be on-time!).  If you miss a quiz, you
      will not be able
      to make it up.  At the end of the semester, we will drop your
      lowest quiz grade.
    They will cover material from lectures, homeworks, and assigned
      readings (including topics not discussed in class).  So, keep
      up with those readings!
     Exams
    There will be two exams in this course.  The exams will be
      closed-book and closed-notes.  As with the quizzes, 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 January 4, 2013.