[ news | information | syllabus | labs | links ]

Introduction to Computer Science
CS51 - Spring 2011

Lectures: MW 11-12:15 in Edmunds 114
Labs: M 7-9:50pm and T 1:15-4pm in Edmunds 229
Instructors: Chen (lectures), Kampe (Monday lab), Kauchak (Tuesday lab)

1/6/2012: I've archived all of the notes and problem sets (ie, most of the links below don't work) and am only leaving up the syllabus for reference. If you're looking for the material, you may be able to find a link to a more recent offering of the class here or here.


Please check here regularly for general announcements/thoughts/etc. You are responsible for any information posted here.
  • 5/9/11: Solutions to the practice final here
  • 5/6/11: I'll have office hours at the usual times next week: Monday and Wednesday 1:30-3pm.
  • 4/27/11: No labs next week, no TA office hours next week.
  • 3/31/11: We will have a guest lecturer on Monday April 4. Please be on time!
  • 3/21/11: requests for regrades on the midterm are due by 5pm on Wednesday 3/23.
  • 3/2/11: No TA hours this Thursday 8-10pm. No required lab next week, but Mark Kampe will hold a Monday night tutorial on debugging in Eclipse. No TA hours next week.
  • 2/28/11: I will try to put the examples for lecture online by lecture time.
  • 2/16/11: Jack's office hours will actually be on Thursdays from 2:30s-4pm. Also, the due date for Lab5 (Frogger) has been moved back by 24 hours to Friday at 11pm.
  • 2/8/11: Jack will be holding office hours on Thursdays from 2-4pm. For this week only Dylan's TA hours will be 9-11pm on Thursday (instead of 8-10pm).
  • 2/7/11: If you are trying to access the starters remotely, you should connect to vpn.cs.pomona.edu and look for the appropriate folder in /common/cs/cs051/labs/.
  • 2/2/11: The designs that you bring to lab and that we grade should not include any code. Of course, in addition to the design you may bring code to the lab that you've already started working on.
  • 1/31/11: The slide I showed with the instructors' and TAs' names and office hours is available here.
  • 1/26/11: For those of you who haven't gotten a copy of the textbook yet, I've made the first 5 chapters available (see links at the bottom of the page). After that, you're responsible for having a copy of the textbook!
  • Information

    Computer Science 051 is an introduction to algorithm development emphasizing object-oriented design. Algorithms will be implemented as programs in the Java programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in CSCI 052, CSCI 062, and more advanced computer science courses. For those who wish a good introduction to the science of computing, we highly recommend the combination of CSCI 051 and CSCI 052, which includes an introduction to a broad array of topics in computer science. For those who wish a more intensive introduction to programming, we suggest the combination of CSCI 051 and CSCI 062.

    By the end of this course you should have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Java, and have a basic understanding of how one might analyze programs for correctness and efficiency.

    This course is a prerequisite for all upper level Computer Science courses. In this course we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you should consider taking cs52 or cs62 instead. Please discuss this with any member of the department's faculty if you feel you fall into this category.

    The required textbook for the class is the Java: An eventful approach, by Kim Bruce, Andrea Danyluk, and Tom Murtagh. You can find the book at Huntley bookstore.

    General information about the course is available in the administrivia < pdf >.


    Any topics or assignments that are listed for dates in the future should be taken as (potentially very) tentative. Anything for a date at least 2 days in the past will accurately reflect what actually happened in the class.

    1 1/17, 1/18No lab this week
    1/19 admin, java basics, graphics,
    event handling, variables
    Ch. 1, 21.9.3 
    2 1/24 local variables, instance variables,
    methods, parameters, numbers
    Ch. 2, 31.6.3, 2.7.7 
    1/24, 1/25Lab 1 - No Clicking <pdf>   Due 11pm 1/27
    1/26numbers, constants, conditionals, booleansCh. 3, 43.11.5, 4.2.2 
    3 1/31random numbers, colors, primitive types,
    Ch. 4, 54.8.6, 5.3.1, 5.7.2 
    1/31, 2/1Lab 2 - Laundry <pdf>   Due 11pm 2/3
    2/2classes, constructors, methodsCh. 5, 65.7.6,6.9.1 
    4 2/7classes, methods, parameters <slides.pdf>Ch. 66.8.3 
    2/7, 2/8Lab 3 - Magnets <pdf>   Due 11pm 2/10
    2/9parameters/variables, control constructs,
    active objects
    Ch. 7, 8, 98.6.2, 8.6.3, 7.1.2 
    5 2/14more on while loops, more active objects, <slides.pdf>Ch. 7, 99.10.1, 9.11.1 
    2/14, 2/15Lab 4 - Boxball <pdf>  Due 11pm 2/17
    2/16more complex loops
    thoughts on debugging, design
    Ch. 21 
    6 2/21design, keyboard inputCh. 10 
    2/21, 2/22Lab 5 - Frogger <pdf>   Due 11pm 2/25 (Friday!)
    2/23interfaces and GUIsCh. 10, 1110.5.1, 10.5.2,
    11.4.2, 11.4.3
    7 2/28more GUIs, TP1Ch. 11 TP1 due 5pm on 3/10
    2/28, 3/1Lab 6 - Textplay  Due 11pm 3/3
    3/2 last bit on GUIs, inheritance
    Practice Midterm here
    Ch. 1717.5.1  
    8 3/7recursion, review, <slides.pdf> Ch. 12  
    3/7, 3/8No lab this week, TP1 due 5pm on Thursday 3/10
    3/14, 3/15
    Spring break, no class
    9 3/21 recursion Ch. 1212.1.6, 12.1.8,
    3/21, 3/22Lab 7 - Recursion <pdf>   Due 11pm 3/24
    3/23recursionCh. 1212.1.10, 12.1.12 
    10 3/28arrays, more loopsCh. 13, Ch. 1413.6.2, 13.6.3,
    3/28, 3/29Lab 8 - Scribbler (Recursion 2) <pdf>   Due 11pm 3/31
    3/30arraysCh. 1414.9.2 
    11 4/4multidimensional arrays
    <pdf> <MinesweeperField.java>
    Ch. 1515.2.1 
    4/4, 4/5Lab 9 - Simon <pdf> Due 11pm 4/7
    4/6multidimensional arraysCh. 1515.4.1, 15.4.2 
    12 4/11stringsCh. 1616.5.2, 16.5.9 
    4/11, 4/12Lab 10 - Nibbles <pdf>  Due 11pm Friday 4/15
    4/13 *** Class cancelled ***  
    13 4/18exceptions, TP2Ch. 1818.9.1, 18.9.2TP2 design due 11am on 4/25
    TP2 due 5pm on 5/4
    4/18, 4/19Lab 11 - Apples <pdf>   Due 11pm 4/21
    4/20file I/O, streamsCh. 1919.7.2,19.7.3
    14 4/25networks, algorithmsCh. 1919.2.2, 19.8.2
    TP2 design due 11am
    4/25, 4/26Lab 12 - Pictionary <pdf>  Due 11pm 4/28
    4/27sorting algorithms, asympotics
    Practice Final here (skip #8)
    Ch. 2020.4.1, 20.6.3 
    15 5/2sorting, searching, concurrency 
    5/2, 5/3 No lab this week, TP2 due 5pm on Wednesday 5/4
    5/4review  TP2 due 5pm

    The final will be on Thursday, May 12 at 9am.


    The following documents provide information on the standard Java libraries and additional libraries developed for this course:

    "Computers do not solve problems, they execute solutions"
    --Laurent Gasser