csc 111: Introduction to Programming I

o Computer Science Department Web Site
o Computer Science Department Facebook Page


Judy Franklin (lectures)

Fall 2013

Office: 355 Ford Hall

Office Hours:

Use email to contact

Monday 2:30 - 3:30, Wednesday 2:30-3:30 (this time changed)

email: jfrankli@smith.edu

or by appointment


Alicia Wolfe (labs)

Fall 2013

Office: 343a Ford Hall

Office Hours:

Use email to contact

Monday 1:00 - 3:00

email: apwolfe@smith.edu

 


Lectures: Mon, Wed, Fri 10:00 - 10:50, room 240 Ford Hall (large lecture room)
Lab Section: Thurs 1:10 - 3:00 (sec 01), Thurs 3:10 - 4:50 (sec 02), and Fri 1:10-3:00 (sec 03), room 241 Ford Hall (graphics lab)
There will be an opportunity to change lab sections at the beginning of the course.

Course Content: An introduction to computer science and computer programming. The programming language Python will be taught and used to introduce programming techniques, and students will gain proficiency with the UNIX operating system.

This is the first course in the Computer Science major. No previous experience is assumed.

Required Textbooks:

  1. Python Programming: An Introduction to Computer Science, Second Edition, by John Zelle, Franklin, Beedle, and Associates, 2010.

    ISBN-10: 1590282418 | ISBN-13: 978-1590282410

    Errors in text
    Author's text web site
    Zelle's graphics module on-line reference
  2. Python Pocket Reference: Python in Your Pocket (Pocket Reference) Fourth Edition, Mark Lutz; O'Reilly Publishers

    ISBN-10: 0596158084 | ISBN-13: 978-0596158088
Recommended Texts
  1. Non-Programmer's_Tutorial_for_Python_3/Print_version

Course Work: Weekly labs and programming projects due by Wednesday nights 11:59pm at the latest. You will work in pairs on the programming assignments, and take the exams on your own..

Two exams: 1) an open-book midterm during lab on Wednesday and Friday (TBA)
2) an open-book second exam in near the end of November (see syllabus).


Jump here for syllabus
Jump here for TA schedule
Jump here for ssh on your machine

Course Grade: The programming projects are 70% of your course grade, (this semester programs plus questions homework = 70%), the midterm exam is 15%, and the second exam is 15%. Attendance in both class and lab, as well as class participation is also a factor and may supercede these percentages by plus or minus 5%.
There is a whole grade penalty for each day that a project is late. Programs that are not interpretable by Python will not receive any credit.

Additional Web links:
    Four Concise, Useful References
  1. Linux Quick Reference
  2. Emacs Quick Ref
  3. Python3.2 quick reference card
  4. Full list of built-in python3 functions and how they are used

  • More Python Links:
  • Scientific and Numeric programming in python
  • Python Library Reference (www.python.org/doc/current/lib/lib.html)
  • Python Daily URL. Up to the minute news on new python programs, such as secure voting software.
  • The Python Image Module (PIL)
  • Audio in Python
  • Ways to Beep
  • Carbon module
  • Soundscape generator
  • Soundscape again - boodler.org
  • aiff files
  • New media support for CPython
  • pygame - Game Development in python

    To use SSH on your own computer,

    • For Windows Users:
      Go to The Smith software download page
      You can then use your regular Novell/Groupwise username/password to get the software.
      Scroll down and look for Secure File Transfer for Windows, and SSH Secure Shell and Secure File Transfer
    • For Mac users:
      Your Mac comes with ssh installed already.
      Click on your Applications Folder. Then click on the Utilities Folder. You should see a Utility called Terminal. Open the Terminal application and a window (a shell) should open up for you. If it doesn't, go under the File menu and select New Shell, right at the top.
      In the terminal window, type the follow command: ssh -Y 111a-XX@beowulf.csc.smith.edu (replace XX with your own two letters).
      When asked, type your password, hit enter, and you should get the beowulf prompt.

      The -Y part gets ssh to ignore some security checks that can unfortunately cause headaches.

    CSC111 Teaching Assistants:

    Hours are in Table below
    Lab Assistants
    • Section 01, Th 1:00-2:50 - Anna Partridge
    • Section 02, Th 3:00-4:50 - Catherine Delima
    • Section 03, Fr 1:10-3:00 - Kaitlyn Stumpf
    Department Master Teaching Assistants

         Gavi Levy Haskell
            Thursday 7:00pm-9:00pm in Ford 241 
    
    
        Julia Edwards
            Sunday 7-9 in Ford 241
            Monday 7:30-9:30 in Ford 241
    
    
     

    -->
    Help Sessions: RoomTA
    Sunday Ford Hall 241
    6- 9pm Joanna Jionghua Wang
    7-10pm Madeleine (Maddi) Wyda.
    7-9pm  Catherine Delima
    7 - 9pm Anna Partridge
    
    Tuesday Ford Hall 241
    3 - 6pm Deirdre Fitzpatrick
    7 - 9pm Yezhezi Zhang
    9:00 - 11:00pm Danae Metaxa-Kakavouli
    
    
    Wednesday Ford Hall 241
    6:00 - 8:00 Deirdre Fitzpatrick
    6:00-9:00 Danae Metaxa-Kakavouli
    7:00 - 10:00 Catherine Delima, Mengjie Zhang, Yezhezi Zhang
    
    Friday Ford Hall 241 3:00-4:00 Kaitlyn Stumpf

    Syllabus Table:

     

    Week and Topic

    Reading

    Lab Assignment
    and

    Lab Date

    Homework

    Due Date

    Sept 3-6

    What is CS?
    What is a computer?
    What are languages?
    What is Programming
    Pair Programming
    o Picture of ssh to Beowulf
    o Picture of Edit Cycle
    Python

    Zelle: Prefaces, and Intro
    Article: Pair programming



    Nano scale CPUs - circa 2011

    New York Times on CS Education

    Lab 0

    Sept 5, 6

    Hw 0



    Tetris written in python - cute

    Sept 11

    Sept 9-13
    o Functions
    o Identifiers
    o Reserved Words
    o Statements
    o Syntax
    o print function
    o Assignment statements
    o Numerical types
    o Math operators, including Modulus
    Python

    Zelle: Prefaces, Intro, and Ch2, up to loops (2.1-2.5)
    Ch3 Section 3.1, 3.3-3.5

    =========================
    and From on-line text
    Non-Programmer's Tutorial for Python 3/Print version:
    o Section 3.3 Expressions
    and
    o Section 4.4 Input and variables
    =========================
    Article: Pair programming



    Nano scale CPUs - circa 2011

    New York Times on CS Education

    Lab 1

    atm program

    Sept 12, 13

    Hw 1



    hw1 Algorithm (if you need it)

  • change.py Tetris written in python - cute
  • Sept 18

    Sept 16-20

    o ASCII table
    o Binary Numbers,
    o Expressions,
    o Numbers and types,
    o More Reserved words,
    o Input/output,
    o character representations,
    o for loops,
    o Strings

    on-line text section on for loops

    Zelle power-pt slides for chapter 5, strings and lists

    Readings in Zelle:

    1. Quick Python Reference Page 469-478 (Appendix A)
    2. Ch2 sections 2.1-2.5
    3. Ch3 sections 3.1, 3.2, and 3.5
    4. Ch5 pages 131-133 (section 5.4.1)
    5. Ch6 pages 169-173 (section 6.2)

      Computers and Arts:
    o live editing of wikipedia translated to sound (and visual):

    o Starry Night Mosaic done with images from Hubble Space Telescope

    Lab2

    Sept 19, 20

     

    for loop examples
  • loopLoopOne.py
  • loopLoopTwo.py
  • loopLoopDouble.py
  • loopLoopTopDown.py
  • lineLoop.py
  • newLoop.py
  • ourLoop.py
  • futval.py
  • aveTen.py
  • average1.py
  • factorial.py
  • Hw2
    hw2Judy.py
    lab2Judy.py
    hw2Hint.py
    powerLoop.py




    Character Representation. First ASCII, then Unicode. The Unicode link provides some history:

    ASCII Table

    Parity bit

    Unicode

    Sept 25

    Sept 23-27

    NO CLASS OR LAB FRIDAY SEPT 27 o Definite Loops
    o Strings
    o Lists
    o Decision Structure - if statement

    Zelle:

    1. Ch2 section 2.6 and 2.7 (Definite Loops)
    2. Ch3 section 3.3 (Accumulating Results)
    3. Ch5 sections 5.1 - 5.8 (Sequences: Strings and Lists)
    4. Ch7 sections 7.1 (Simple Decisions)

    Definite Loops, range() function, List concatenation, strings
    Pair Programming
    Review

    Why is it called eXtreme Programming?

    Diebold: Stealing Votes

    Sept 26, 27

    NO CLASS OR LAB FRIDAY SEPT 27
  • converse.py
    converse2.py
    converse3.py
    stringExample.py
    spamExamp.py


  • NO CLASS OR LAB FRIDAY SEPT 27




    3) Roger Dannenberg - CMU - In Transit


    Oct 2

    Sept 30 - Oct 4

    o Definite Loops
    o Strings
    o Lists
    o Decision Structure - if statement

    Zelle:

    1. Ch2 section 2.6 and 2.7 (Definite Loops)
    2. Ch3 section 3.3 (Accumulating Results)
    3. Ch5 sections 5.1 - 5.8 (Sequences: Strings and Lists)
    4. Ch7 sections 7.1 (Simple Decisions)

    Lab3

    Oct 3, 4

  • converse.py
    converse2.py
    converse3.py
    stringExample.py
    sampleQues.txt
    inNext.py
  • quadratic.py
  • quadratic2.py

    Talk to Lee

    Claudio personality bot


    2) Kismet robot

  • Hw3

    hw3Judy.py

    Oct 9

    Industrial Light and Magic's use of python
    Oct 7-11

    Functions:
    • Defining
    • Calling (using)
    if-else and if-elif-else statements

    The calendar program
    Reading this week and next:
    Zelle: Ch 6 pp. 167-173 and 175-181, 183-189
    Zelle: Ch 7




    lab4


    Oct 10, 11

    Examples of decision structures:

  • quadratic.py
  • quadratic2.py
  • quadratic3.py
  • quadratic4.py
  • sphere.py

    Examples of function definitions:
  • Hw4 Text homework
    hw4Answers.txt
    Hw4 is on Moodle. Log in to Moodle to find it.
    Click on csc111 Lecture. When you click on it, it will say this
    The quiz will not be available until Friday, October 11, 2013, 4:00 PM
    
    This quiz will close at Friday, October 18, 2013, 11:59 PM
    
    I have to call it a quiz because moodle doesn't know the word homework.
    Notice that it is due late Friday after break.
     

    Oct 16

    Oct 14-15 is Fall Break

    More:
    • Functions
    • Decision Structures,
    • Strings and Lists,

    Chapters 6,7 and 8 (except 242-246): defining functions, decision structures, and indefinite loops, respectively.

    python 3.2 reference card (2 pages)

    Emacs Quick Ref

    lab5

    Oct 17, 18

    lab5demo.py

    funcExample1.py

    dayTotals.py

    Hw5-text only


    Hw5 Text homework
    Hw5 is on Moodle. Log in to Moodle to find it.
    Click on csc111 Lecture. When you click on it, it will say this

    The quiz will not be available until Saturday, October 19, 2013, 8:00 AM
    
    This quiz will close at Tuesday, October 22, 2013, 11:59 PM
    
    I have to call it a quiz because moodle doesn't know the word homework.

    Oct 23
    Oct 21-25 Midterm Week

    ALL READING, labs, and homeworks assigned up to this point

    Readings from Zelle:
    Chapters 1, 2, 3  (intro computers, 
      intro python,elements of programming)
    Chapter 6: functions
      (defining and using)
    Chapter 5: sections 5.1-5.6 and 5.8 
      (strings, lists)
    Chapter 7: sections 7.1-7.3 and 7.5
      (the if statement decision structure)
    Chapter 11: sections 11.2.1 and 11.2.2
      (lists and list operations)
    

    *No* Class on Friday Oct 25.

    hw4Answers.txt

    hw5Answers.txt

    revString.py


    No class on Friday morning (10/25)

    MIDTERM EXAM DURING LAB
    open book, open notes. No computers!

    Oct 24,25

    MIDTERM EXAM DURING LAB
    open book, open notes. No computers!

    No HW after midterm

      None
    Oct 28-Nov 1

    No class on Friday Nov 1.
    But there will be lab on Friday

    Graphics

    Zelle: CH4 and CH8: 233-251e

    Zelle's power point slides for chapter 4

    Zelle's graphics programming reference page Graphics, motion, collision avoidance

    circleExample1.py
    circleExample2.py
    circleExample3.py
    circleExample4.py
    python's time module
    graphics.py
    Stanley and Stella ala 1987
     
    No class Friday morning.
    Lab Friday will be held.

    Lab6
    lab6Judy.py with only one function
    lab6Pippin.py with helper functions
    graphics.py


    Oct 31, Nov 1

    Graphics

    Class Examples:
    circleColors.py
    squareExample1.py
    hex.txt
    Other graphics examples not needed for hw6:
    1. triangle.py
    2. shapeMover.py
    -->

    Hw6

    python3 time module documentation, for using sleep() method to delay circle motion

    Nov 6

    Nov 4-8

    o more complex programs
    o Images in graphics
    o while loops/sentinel loops
    o more function definitions
    o Files input/output
    o and sorting



    Presentation of
    Computer Science Major
    Wednesday: 12:10, Nov 6
    Ford Hall Foyer
    Chinese Food
    including fortune cookies!
    Courses you can take in the Spring,
    if you have completed CSC 111:
    
    (1) CSC 102/105: 
    How the Internet Works/
    Interactive Web Documents
    
    or CSC 103 How Computers Work (2) MTH 153: Discrete Math. This is a requirement for the CS major. (3) CSC 205: Modeling in the Sciences The only CS prereq is CSC 111. Math prerequisites: MTH 112 or MTH 114 (4) CSC 212: Programming with Data Structures (5) CSC 250: Theoretical Foundations of Computer Science (pre-req MTH 153 may be taken concurrently)

    -

    Zelle: Ch5, sections 5.1 (string indexing and slicing) and 5.9.2 (file processing), and Ch6 (defining functions)



      Concise, Useful References
    1. Linux Quick Reference
    2. Emacs Quick Ref
    3. Python 3.2 Quick Reference from New Mexico Tech
    4. Full list of built-int python3 functions and how they are used
    "GuitarBotana" by Mari Kimura

  • GuitarBot
  • Zelle's on-line graphics.py reference

    Boolean Algebra wiki

    Lab7 (first part of hw7)

    Nov 7,8

    scoper.py
    while1.py
    moveDarth.py
    Darth.gif
    manyDarths.py


    Hw7, extension of lab7

    Turtle graphics

    Nov 13

    Nov 11-15

    Object-oriented programming

    Writing function definitions

    Reading from and Writing to Files (file I/O)

    Sel-sort function

    Zelle: Review Chapter 4.
    Zelle chapter 10. sections 10.1, 10.4

    Announcement:
    Intro Java Programming J-term course taught by 2 CS students.
    The course is officially approved as a non-credit j-term course. It is designed for anyone with some programming experience (especially Python) but without any Java experience.
    The concepts covered include: syntax, class structure, object-oriented programming, design and debugging. It's geared towards preparing people who are going to take csc212 (but anyone is welcomed). If you have any questions or would like to be kept updated on how to register for this course, email either Jessica Mann or Naomi Long. Emails: jmann@smith.edu & nlong@smith.edu

    Lab8
    books.dat

    Nov 14,15

    Lab 8 is important for the final project (hw9) and for exam 2. Class definitions are used in hw9 (not in lab8)

       


    Nov 20

    Nov 16, 20


    No class on Friday morning, Nov 20th.
    Exam 2 and Review

    All reading, lecture material, and lab and homework material. Open book, open note. No electronic devices, computers, phones, Dick Tracey watches, i*.

    No class on Friday morning, Nov 20th.  

    Exam 2 in labs this week

    Nov 19, 20



    Exam in Labs this week

    Coburn and Smith's music from satellite images

     

    None

    No class on Friday morning, Nov 20th.
    Nov 25-27
    There is Class Nov 25. No labs this week - Thanksgiving break.

    recursiveFuncs.py
    searchExample.py
    Koch.py

    Spamity spam, wonderful spam
    Thanksgiving

    Nov 27,29

    No HW

    Dec 2-6

    hw9 - final project
    using urllib

    Hw9=Lab9

    hw9urlFunc.py

      Zelle: Chapters 4, 6, 7, 8, 9, 10 hobbiesObject.py example of class definition.


    Objects and classes, accessing the Internet, and writing to files.

    urllib.request module documentation
    Check here for documentation on the open function

    Hw9=Lab9

    hw9urlFunc.py

    Dec 5,6


  • Kami Cott: Smith student digital design project (2003)
  • Lauren Kvalheim '08 Demo Reel Lauren was a double CS/Studio Art major
  • Dec 10

    Dec 9-10

    Just class Monday this week, no labs

    Special Topics

    Zelle: Ch 13



    What we did

    List of language features from last week

    Look for csc212 in Spring14
    to learn java and more about data structures.
    Also Intro Java Programming J-term course taught by 2 CS students.
    Emails: jmann@smith.edu & nlong@smith.edu
     

    No Final Exam
    Just final project (hw9)

    Dec 12

    No Lab
    Experiential Extremism
    2) Motu 828 firewire audio
    3) Teleo System

    Pat Metheny and his Orchestrion

     

    Good luck

    Scroll down a little on this link, and watch 'Always Look on the Bright Side of Life', the end Monty Python's Life of Brian
    -->