Introduction to Computers and Programming
CSCI-UA.0002-001
(aka, V22.0002-001)

Summer 2011
Adam Meyers
Research Assistant Professor &
Visiting Clinical Associate Professor

General Information:

Time and Place

Warren Weaver Hall
251 Mercer Street
Room 102
Mondays, Tuesday, Wednesday and Thursday
9:30PM--11:05 AM (most classes)
9:30--11:30 AM (4 Wednesdays: May 25, June 1, June 8, June 15)

May 23, 2011 to June 30, 2011 (no class June 23, 2011)

Final Exam: June 30, 2011, 9:30-11:05AM

Instructor Contact Info

715 Broadway, Room 702
meyers at cs dot nyu dot edu
212 998 3482
http://nlp.cs.nyu.edu/people/meyers.html

Instructor Office Hours

Tuesday and Thursday 12:00PM--1:00PM
or by appointment

Required Text Book

Visual Quickstart Guide to Python
Tony Donaldson
Peachpit Press, 2009
ISBN-10: 0321585445
ISBN-13: 978-0321585448

Optional Text Book

Starting Out with Python (Second Edition)
Tony Gaddis
Addison-Wesley, 2012 (published 3/2011)
ISBN-10: 0132576376
ISBN-13: 9780132576376


Course Description and Syllabus: This course introduces computer programming using the language Python 3 as a vehicle. The course will cover basic definitions (what is hardware, what is software, etc.), basics of planning programs (flow charts, psuedo-code, algorithm design), variables (initialization, assignment, scope), operators (+, -, ==), control structures (if, else, elif), iteration (using loops), functions, modules, sequences (lists, strings), among other topics (time permitting). While students will learn how to implement these concepts using Python, general principles will be taught which apply to all modern programming languages.

Prerequisites: Anyone interested and willing to learn about computer science and programming can take this class. However, some proficiency in High School math (algebra, geometry) is assumed. As with any mathematically oriented class, the concepts learned build on each other and it is not advisable to join the class late in the term (beyond the third class). This class is also a prerequisite for V22.0101.

Previous Class Website: For more information, please examine websites from previous classes, such as V22.0002.004 (Spring 2011).

The current lectures and class structure may be similar, but will not be identical to what is indicated on this previous class website.

Test Dates: There will be two midterms and one final. The dates of these tests are given below. Please make a careful note of these times in order to prevent scheduling conflicts.

Test

Date and Time

Sample Problems

Tests/Answers/Grades

Midterm

Midterm: Monday, June 13, 2011, 9:30-11:05 AM

Sample Midterm
Answer Keys: (1) Turtle Question (Question 3); (2) All Other Questions (Question 1,2,4-12)
[Answer Key was updated on June 9, 2011]

The midterm: midterm.pdf
Answers and example programs   
    questions 1-4 & 6-9: midterm.py
    question 5: midterm_turtle.py
Grading Curve

Final

Final Exam: Thursday, June 30, 2011, 9:30-11:05 AM

Sample Final
Answer Keys: (1) Turtle Question (Question 7); (2) All Other Questions; (3) list-of-quotations.txt (Read in by question 4)



Homework: Read the Donaldson book over the course of the semester and do the assigned programming assignments as the term progresses. This section will be continually updated as the term progresses. Grades on homework contribute 25% to the final grade for the course. Initial Homework Descriptions will be revised as the term progresses -- Initial descriptions are based on the class during the year.

Assignment 1

May 24, 2011

Assignment 2

May 26, 2011

Assignment 3

May 31, 2011

Assignment 4

June 2, 2011

Assignment 5

June 7, 2011

Assignment 6

June 14, 2011

Assignment 7

June 16, 2011

Assignment 8

June 21, 2011

Assignment 9

June 23, 2011

Assignment 10

June 27, 2011

Extra Credit (Optional)

June 27, 2011


Class Schedule with Materials from Class Attached: This schedule and the attached materials will be revised throughout the class (as needed). Preliminary versions of the materials are based on the previous semester's class:

Class 1

Administrative Matters Talk

Introduction to Introduction to CS Talk

Idle Output Class 1


Classes 1,2,3

Installation Issues, etc.

First Python Talk (Print statements, Data Types, etc.)

How Computers Work:Go to Course Documents on Blackboard Page

Idle Output Class 2


Class 3

In Class Exercises (with pseudo code answer to Day in the future problem)

Sample py file

Idle Output Class 3


Class 3,4

Identifiers: functions and variables



Class 4,5

In Class Exercises

Python Script Class 4
Python Script Class 5

Idle Output Class 4
Idle Output Class 5


Class 5,6

Modules & Scripts (and turtles)

four_squares.py

Idle Output Class 6

Class 6 & 7

Flow of Control
(If, Boolean, etc.)

goldilocks.py
diagnosis.py

Idle Output Class 6 (repeated)

Class 7 & 8

Loops

asterisk_triangle_001.py (written in class)
for_loop_checkerboard.py

Idle Output Class 7
Idle Output Class 8

Class 8 & 9
Midterm Review Part I
See Sample Midterm (answers above next in midterm schedule)
Idle Output Class 8 (repeated)

Class 9, 10, 11, 13 & 14

Sequences

morphology.py
example-string-functions.py

number_program (in class version)
number_program 2 (complete version, including Chinese numbers)
intersperse_strings.py

Idle Output Class 9
Idle Output Class 10
Idle Output Class 13

Class 10 & 11

Midterm Review Part II

Sample Midterm
Answer Keys: (1) Turtle Question (Question 3); (2) All Other Questions (Question 1,2,4-12)     [Answer Key was updated on June 9, 2011]

Idle Output Class 10 (repeated)
Idle Output Class 11


Class 12
Midterm Exam





Class 13

Post- Midterm Review

See Midterm and Answers in Table of Tests


Idle Output Class 13 (repeated)


Class 14
String Manipulation regexp-experiments.py
Idle Output Class 14

Classes 14, 15, 16 & 17

Collections

future-days.py
common_words.py and random_sentence.py (These 2 files need to be in the same directory.)
turtle_commands_001.py
phonebook_001.py

Idle Output Class 14 (repeated)
Idle Output Class 15
Idle Output Class 16
Idle Output Class 17


Classes 17 & 18

Input and  Output

IO-examples.py

Idle Output Class 17 (repeated)
Idle Output Class 18


Classes 18, 19 & 20

Review for Final Part I

Sample Final
Answer Keys: (1) Turtle Question (Question 7); (2) All Other Questions; (3) list-of-quotations.txt (Read in by question 4)
Idle Output Class 18 (repeated)
Idle Output Class 19
Idle Output Class 20

Classes 20 & 21

Recursion

recursion-functions.py
british-royal.txt (used with geneology functions)
001_recursive_examples.py (includes examples from class for both days)

Idle Output Class 20 (repeated)
Idle Output Class 21

Class 22

Final







Installing Software:

  1. Go to www.python.org

  2. Click on Download tab on left

  3. Download Python 3.1 or greater for Windows, MAC or Linux (as appropriate)

  4. Install Python as per the instructions

Grading: 25% Homework + 33% Midterm + 42% Final

Tutoring:

Other Information:

  1. Python 3 on an Apple: Apples often have Python 2.x pre-installed. This means that, by default, Python 2.x is used to run python programs (file type .py). This is appropriate because Python 2.x is currently more prevalent than 3.x. So, having 2.x as a default works well when you, for example, click on a python program that is on a website somewhere. This is however, kind of inconvenient for purposes of this class which is taught using Python 3.x.  Below, I will provide some information for changing the default once you install 3.x. After this course is complete, you will have the option of reversing these instructions and returning the default to 2.x.  (If you have trouble following these instructions, a graduate assistant, tutor or the instructor should be able to help.)

    1. Type "whereis python" and hit the enter key

    2. Go to the directory containing that file using the command "cd"

      • Type "cd /usr/bin" if the file is "/usr/bin/python"

    3. Find out where python3 is and pythonw3 are

      • which python3

      • which pythonw3

    4. Rename the old version of python (so that way you can change it back if you need to)

      • sudo mv python python-old

        • enter your password when prompted

    5. Create two symbolic links to the current versions of python 3

      • sudo ln -s /usr/local/bin/python3 python

        • enter your password when prompted

      • sudo ln -s /usr/local/bin/python3w python3w

        • enter your password when prompted

    6. Go to any python file in any folder (using the normal Windows or Apple GUI)

      • e.g., Applications/Python3.1/Extras/Demo/turtle/tdemo_clock.py

    7. Change the default program to open it. (Go to File/Open with/Other)

      • Select Applications/Python3.1/Python Launcher

      • Click on “always open with” and enter

  2. Python 2.x versus Python 3.x: This course will use versions of Python 3, the version of Python that is expected to be prevalent in the near future. Currently, however, most Python code available on the web and most Python text books assume some version of Python 2, including some of the free textbooks described below. Therefore, it may be necessary for students to understand some of the differences.

    1. See http://docs.python.org/release/3.0.1/whatsnew/3.0.html for the full details

    2. The most important differences for this class are:

      • The print statement. Python 2 allows you to omit the parentheses. Thus the statement print('Hello') in Python 3, would be rendered as: print 'hello'

      • Python 2 has two functions input and raw_input corresponding to Python 3's function input. Python 2's function raw_input is essentially equivalent to the Python 3 function input, whereas raw_input is a special case for dealing with integers. A Python 3 statement like my_number = int(input('What is your favorite number')would simply be my_number = input('What is your favorite number') in Python 2 (coersion of the input string to integer is incorporated into the Python 2 input function).

      • Integer division in Python 2 yields an integer rather than a float as in Python 3. In Python 2: 100/40 = 2 In Python 3, 100/40 = 2.5. Python 3 has an additional operator // that functions like / in Python 2.

Additional Resources:

  1. Python Resources using Safari online at Bobst (note differences between Python 2 and 3 above):

  2. Online Python Resources:

  3. Online Free Python Textbooks (note differences between Python 2 and 3 above)

  4. Introduction to Machine Code, Assembly Language, etc. (the Professor and Pat series):

  5. Computer History