Bryn Mawr College
        CMSC 110: Introduction to Computing 
        Fall 2013 
        Course Materials
            Jia Tao 
      
    
    
      
    
    General Information
    Instructors: 
    
      
        
          | Jia Tao 249 Park Science Building
 526-5061
 jtao@cs.brynmawr.edu
 
 | 
      
    
    Lecture Hours: Mondays & Wednesdays, 2:30 p.m. to
      4:00 p.m.
      Room: Park 338
      Lab: Wednesdays 10am - 12pm (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 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:00pSaturdays 2:00p to 6:00p
 
- Angela Mastrianni, Sundays 3:00p to 5:00p and Mondays 10:00a to Noon 
 
      A full schedule of TAs can be found here
    
Announcement: 
    
      - Oct 27th: Rebecca Park has cancelled her TA office hours on Thursday, Oct. 11th 4:00p to 6:00p. 
 
- Oct 27th: Bryce Lewis has changed her TA office hours from Fridays 7:30p to 9:30p and Saturdays 4:00p to 6:00p
 
 
    
      
 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 $40.94 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  4: First lecture
        October 2: Exam 1
        December 11: Last lecture/Exam 2 
  
    
      
 Assignments
    
      -  Assignment#1: (Due on Monday, Septmber 16): 
		Click here for details
          
 
-  Assignment#2: (Due on Wednesday, Septmber 25): 
		Click here for details
          
 
- 
      Assignment#3: (Due on Wednesday, October 9Friday, October 11): 
        Click here for details.
 
- 
      Assignment#4: (Due on Wednesday, Nov 6Friday Nov 8): 
        Click here for details.
 
- 
      Assignment#5: (Due on Monday, Nov 18: 
        Click here for details. 
        Code file for Assignment #5: 
        Click here. 
        
 
- 
      Assignment#6: (Part 1 Due on Monday, November 25; Part 2 Due on Wednesday, December 4): 
        Click here for details. 
        
        
 
      
 Lectures
    
      - Week 1 (September 2, 4)
 
 September 2: No class. labor Day!
 
 September 4: 
          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, read Chapter 1 (Read pages 1-12, skim 12-32, 
			return to IDE details as needed)
 
 
 
 
- Week 2 (September 9, 11)
 
 September 9: 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 Monday, Septmber 16): 
		Click here for details.
 
 
          September 11:  
 			Basic drawing & 2D shapes contd.: arc(), quad(), curve(), beginShape(), 
 			endShape(), vertex(), curveVertex(). Basic structure of a static Processing program. 
 			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. How to draw simple text.
			
			Slides: 03_2DShapes
			
			Do: Finish reading Chapter 2. For more on drawing curves read the 
			Drawing Curves tutorial on processing.org.
        
        
 
      - Week 3 (September 16, 18)
 
 September 16:
          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, 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_Function
 
 Assignment#2 (Due on Wednesday, Septmber 25): 
		Click here for details.
 
 
September 18: 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 
          
        
 
      - Week 4 (September 23, 25)
 September 23: 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
 
 September 25:   
          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
 
 
 
- Week 5 (September 30, October 2)
 
 September 30: Computing points on the plane using Trigonometry. 
        Putting loops and if-statements to work: Drawing Polygons.
 
 Examples: Ball Example
 
 Assignment#3 is posted (Due onWednesday, October 9Friday, October 11): 
        Click here for details.
 
 October 2: Exam 1 is today.
 
 
- Week 6 (October 7, 9)
 
 October 7: 
        Exam review. String art.
 
 October 9:  String art cont. Introduction to arrays.
 
 
- Week 7 (October 14, 16)
 
 No Classes. Fall Break
 
 
 
- Week 8 (October 21, 23)
 
 October 21:Arrays: defining, creatin, initializing, indexing. Basic Array Operations.
 Read: Chapter 5 (pages 149-158).
 Slides: 06_Array
 Examples: Pie Chart Example
 
 October 23:Using array to draw pie chart
 Examples: Pie Chart Using Arrays
 
 
 
- Week 9 (October 28, 30)
 
 October 28: Additional visualization examples using arrays. Using the map() function. Using an array as a parameter.
 Examples: 
        Pie Chart    
        Bar Graph    
        Bubble    
        Divided Bar
 Read: Chapter 5 (pages 149-158).
 
 October 30: Reading data from files. Strings: splitting strings. Using the map() function. text formatting basics. Doing a Time Series Visualization.
 Assignment#4 is posted (Due on Wednesday, November 6): Click here for details.
 
 
- Week 10 (November 4, 6)
 
 November 4 :A general program design strategy for building data visualizations.
 Examples: 
        USPS First Class Volume   
        data
 State Population   
        data
 
 November 6 : OOP - Object Oriented Programming. Fundamentals: objects, attributes, behaviors, classes, instances, 
          etc. Doing OOP in processing. Defining constructors. The "this" keyword.
 Read: Chapter 6.
 
 
- Week 11 (November 11, 13)
 
 November 11: More OOP examples.  PVector class in processing.
 Assignment#5 is posted (Due on Monday, November 18): Click here for details.
 Examples: 
        Rotating ball with eye
 
 November 13:   Balls in colored boxes example. Inheritance in OOP.  
      	Examples: 
        Ball in colored box
 
      
 
    
      - Week 12 (November 18, 20)
 
 November 18: OOP - Object Oriented Programming: inheritance, super class, sub class, 
        objects, attributes, behaviors, constructors, abstract classes, instances, overriding methods
 Assignment#6: (Part 1 Due on Monday, November 25; Part 2 Due on Wednesday, December 4): 
        Click here for details.
 
 November 20:
 control flow switch statement, toString() method, String class: beyond the basics, ArrayList class, 
          how to design and develop large programs
 
- Week 13 (November 25, 27)
 
 November 25: Covered by Professor Kumar
 
 November 27:  The class is cancelled
 
- Week 14 (December 2, 4) 
 
 December 2: Covered by Professor Kumar
 
 December 4 :  Design and implement a game: BrickBreaker
          Unfinished version
 
      - Week 15 (December 9,11)
 
 December 9:
 
 December 11: 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 assignments 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.