[ news | information | lectures and labs | problem sets | links ]

CS51 - Fall 2003
MW 2:45-4, M 7-8:15 in Andrew 257
Prof. Chen

8/11/2004: I've archived all of the notes and problem sets 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.

News

  • 031117: The lecture on 031126 (the Wednesday before Thanksgiving) will be run as a lab. The lab period on 031124 will be more of a lecture.
  • 030908: This is a new web page, to accomodate scheduling changes due to moving the labs to Monday evenings. The old web page is available here
  • 030904: The labs are being moved from Thursdays 2:45-4 to Monday evenings from 7-8:15. A revised schedule/syllabus will be posted in a few days.
  • Information

    CS51 is an introduction to computer programming (in Java) and computer science (with some coverage of both data structures and algorithms). The course has been designed for students already interested in math and/or science and who are perhaps considering a major or minor in computer science. The first part of the course focuses on object-oriented programming in Java (control structures, recursion, arrays, designing classes, applets, event-driven programming). The last few weeks focus more on learning about basic data structures (linked lists, stacks, queues, etc) and algorithms (sorting, searching). No programming experience is required (or assumed). However, Math 30 is a prerequisite.

    CS51 satisfies the PAC 3 requirement.

    The fall 2003 version of CS51 meets three times a week in Andrew 257. The lectures are on Mondays and Wednesdays from 2:45-4:00; the labs are on Monday evenings from 7:00-8:15.

  • Administrivia <ps><pdf>
  • Lectures and Labs

    Week Monday Monday lab Wednesday
    9/1 *** no class ***
    (wednesday) intro to cs51
    <pdf>
    (thursday) using emacs, javac
    <pdf>
    9/8 variables, assignment, data types
    <pdf>
    cancelled
    String data type, methods, constants
    <pdf>
    9/15 Math class, implementing methods
    <pdf>
    methods, console input
    <pdf>
    objects, classes, methods
    <pdf>
    9/22 objects, classes, methods
    <pdf>
    implementing classes (Pong)
    <pdf>
    selection
    <pdf>
    9/29 iteration
    <pdf>
    control structures, designing classes
    <pdf>
    applets & graphics
    <pdf>
    10/6 applets & graphics
    <pdf>
    review
    *Midterm I*
    10/13 designing classes
    <pdf>
    debugging
    <pdf>
    static methods/variables, interface
    <pdf>
    10/20 *** fall recess *** *** fall recess *** interfaces, polymorphism
    <pdf>
    10/27 inheritance
    <pdf>
    interfaces
    <pdf>
    arrays
    <pdf>
    11/3 arrays
    <pdf>
    Lights (inheritance, arrays)
    <PS8>
    recursion
    <pdf>
    11/10 recursion
    <pdf>
    recursion
    <pdf>
    recursion
    <pdf>
    11/17 exceptions
    <pdf>
    review
    *Midterm II*
    11/24 exceptions, files
    <pdf>
    files, Game of Life
    <pdf>
    work on Game of Life problem set
    12/1 GUIs, event-driven programming
    <pdf>
    GUIs, Game of Life (cont.)
    <pdf>
    sorting, big-O notation
    <pdf>
    12/8 sorting
    <pdf>
    sorting
    work on ps12
    wrap-up

    Problem Sets

  • Problem Set 1, due 9/10
  • Problem Set 2, due 9/21
  • Problem Set 3, due 9/28
  • Problem Set 4, due 10/5
  • Problem Set 5, due 10/12
  • Problem Set 6, due 10/26
  • Problem Set 7, due 11/2
  • Problem Set 8, due 11/9
  • Problem Set 9, due 11/16
  • Problem Set 10, due 11/23
  • Problem Set 11, due 12/3
  • Problem Set 12, due 12/10
  • Links

  • Advice from me to you.
  • Java on a macintosh information from Tom Elgin.
  • Java on a PC information.
  • Basic DOS commands.
  • Java documentation.
  • Emacs manual. Emacs basics.
  • How to install emacs on your home machine (writeup by Prof. Marshall).
  • Resources for the class textbook.
  • <CS50 - fall 2002>. <CS50 - spring 2003>. (CS50 from previous semesters is the same as CS51 now.)

  • "Computer science is no more about computers than astronomy is about telescopes."
    --Edsger W. Dijkstra