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

CS50 - Spring 2003
TR 1:15-2:30, W 2:45-4 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.

  • 5/11: The final is on Tuesday 5/13, from 2-5PM, in Andrew 257.
  • 4/23: The lecture on 5/6 is required.
  • 4/9: For those wanting to share frustrations about the course, I encourage you to do so poetically. See details here. See submissions here.
  • 3/11: The 2nd midterm has been moved to Tuesday, 4/8. Attendance is required at the lectures on 3/25, 4/1 and 4/3.
  • 2/27: A general CS50 help mailing list has been created (cs50-help@cs.pomona.edu). Mail sent to this list goes to me, the TA, and the graders. Hopefully one of us will reply quickly to any questions sent to the list.
  • 2/11: The first midterm is on Thursday, 2/20. It is open book and open one double sided 8.5" by 11" sheet of notes.
  • 1/22: We have a TA: his name is Ian Manners (ian.manners@pomona.edu). He'll be having office hours on Tuesdays from 7 to 8PM in Andrew 257.
  • Information

    CS50 is a relatively intense introduction to computer programming (in Java) and computer science (with some coverage of both data structures and algorithms). The first part of the semester focusses 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.

    CS50 satisfies the PAC 3 requirement.

    The spring 2003 version of CS50 meets three times a week in Andrew 257. The lectures are on Tuesdays and Thursday from 1:15-2:30; the labs are on Wednesdays from 2:45-4.

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

    Week Tuesday Wednesday (lab) Thursday
    1/21 intro to cs50
    <ps> <pdf>
    using emacs, javac
    <ps> <pdf>
    variables, assignment, data types
    <ps> <pdf>
    1/28 constants, methods, Math class
    <ps> <pdf>
    methods, console input
    <ps> <pdf>
    objects, classes, methods
    <ps> <pdf>
    2/04 objects, classes, methods
    <ps> <pdf>
    implementing classes
    <ps> <pdf>
    selection
    <ps> <pdf>
    2/11 iteration
    <ps> <pdf>
    classes, selection, iteration
    <ps> <pdf>
    applets & graphics
    <ps> <pdf>
    2/18 review, applets & graphics
    <ps> <pdf>
    review
    *Midterm I*
    2/25 designing classes, random numbers
    <ps> <pdf>
    Pong (designing classes) static methods/variables, interface
    <ps> <pdf>
    3/04 interfaces, polymorphism
    <ps> <pdf>
    interfaces
    <ps> <pdf>
    inheritance
    <ps> <pdf>
    3/11 arrays
    <ps> <pdf>
    Lights (inheritance, arrays) arrays
    <ps> <pdf>
    3/18 *** spring break *** *** spring break *** *** spring break ***
    3/25 recursion
    <ps> <pdf>
    recursion
    <ps> <pdf>
    recursion
    <ps> <pdf>
    4/01 recursion
    <pdf>
    review exceptions
    <ps> <pdf>
    4/08 *Midterm II* exceptions
    <ps> <pdf>
    files
    <ps> <pdf>
    4/15 GUIs, event-driven programming
    <ps> <pdf>
    GUIs, event-driven programming
    <ps> <pdf>
    sorting
    <ps> <pdf>
    4/22 sorting, big-O notation
    <ps> <pdf>
    sorting
    <ps> <pdf>
    searching and linked lists
    <ps> <pdf>
    4/29 stacks and queues
    <ps> <pdf>
    data structures
    working on <PS12>
    data structures
    <ps> <pdf>
    5/06 data structures (trees and heaps)
    wrap-up
    <ps> <pdf>
    *no class - end of semester*

    Problem Sets

  • Problem Set 1
  • Problem Set 2
  • Problem Set 3
  • Problem Set 4
  • 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>, <CS50 - fall 2002>.

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