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

CS50 - Fall 2002
MWF 1:15-2:30 in Andrew 257
Prof. Chen

News

  • 2/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 can find a link to a more recent offering of the class here.

  • 12/10: the review session will be on Thursday, 12/12, in Andrew 257, starting at 1PM.
  • 10/25: the 2nd midterm will be on November 13th, I will start handing out midterms at 12:30PM, and I will start taking them away from people at 2:30PM. I will also bring some (not very impressive) food and drinks for those who can't get to lunch before the midterm.
  • 10/14: a modified version of PS5 has been put on the web page
  • 9/29: after the first course evaluation on 9/25, I've decided to try having 30-45 minute lectures followed by 30-45 minute labs in every class meeting (rather than lecturing for 2 classes and having a lab for all of a 3rd).
  • 9/12: a list of students is available here.
  • Information

    CS50 is a fairly intense introduction to computer programming (in Java) and computer science (a spoonful of data structures and a pinch of algorithms). The first part of the semester focusses on the basics of object-oriented programming in Java (applets, control structures, recursion, arrays, designing classes). 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.

    CS50 satisfies the PAC 3 requirement.

    The fall 2002 version of CS50 meets three times a week in Andrew 257. The lectures are on Mondays and Wednesdays from 1:15-2:30; the labs are on Fridays from 1:15-2:30.

  • Administrivia <ps><pdf>
  • Syllabus <ps><pdf>
  • The TA is Thomas Elgin (thomas.elgin@pomona.edu). He will be around to help with the labs on Friday. He will also hold "office hours" in Andrew 257 from 8 to 9PM on Thursdays.

    Lectures and Labs

    Week MondayWednesdayFriday (lab)
    9/02 *no class - labor day* intro to cs50
    <ps> <pdf>
    using emacs, javac
    <ps> <pdf>
    9/09 objects, classes, methods
    <ps> <pdf>
    objects, classes, methods
    <ps> <pdf> <code>
    using/implementing classes
    <ps> <pdf>
    9/16 fundamental data types
    <ps> <pdf> <code>
    computer arithmetic
    <ps> <pdf> <code>
    Math class, implementing classes
    <ps> <pdf>
    9/23 applets & graphics
    <ps> <pdf>
    applets & graphics
    <ps> <pdf> <survey>
    applets & graphics
    <ps> <pdf>
    9/30 selection
    <ps> <pdf>
    selection, iteration
    <ps> <pdf>
    iteration, input
    <ps> <pdf>
    10/07 review *Midterm I* random #s, simulation
    <ps> <pdf>
    10/14 designing classes
    <ps> <pdf>
    static variables, methods
    <ps> <pdf>
    interfaces, polymorphism
    <ps> <pdf>
    10/21 *no class - fall recess* inheritance
    <ps> <pdf>
    testing, debugging
    <ps> <pdf>
    10/28 inheritance, recursion
    <ps> <pdf>
    recursion
    <ps> <pdf>
    recursion
    <ps> <pdf>
    11/04 arrays (1d)
    <ps> <pdf>
    arrays (1d and 2d)
    <ps> <pdf>
    arrays
    <ps> <pdf>
    11/11 review *Midterm II* exceptions
    <ps> <pdf>
    11/18 files
    <ps> <pdf>
    files, GUIs
    <ps> <pdf>
    GUIs, event-driven programming
    <ps> <pdf>
    11/25 event-driven prog, sorting
    <ps> <pdf>
    sorting, demo
    <ps> <pdf>
    *no class - Thanksgiving*
    12/02 sorting, big-O notation
    <ps> <pdf>
    sorting, big-O notation
    <ps> <pdf>
    searching
    <ps> <pdf>
    12/09 data structures
    <ps> <pdf>
    wrap-up *no class - end of semester*

    Problem Sets

  • Problem Set 1
  • Problem Set 2
  • Problem Set 3
  • Problem Set 4
  • Problem Set 5
    10/14: modified version of Problem Set 5
  • Problem Set 6
  • Problem Set 7
  • Problem Set 8
  • Problem Set 9
  • Problem Set 10
  • Problem Set 11
  • Problem Set 12
  • 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 - spring 2002, taught by Prof. Marshall.

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