[ news | information | syllabus | labs | links ]

Introduction to Computer Science
CS51 - Fall 2009

Lectures: MWF 10-10:50 in Edmunds 114
Lab: F 1:15-4 in Edmunds 229
TA Office hours: Su/M 7-9pm
Instructors: Yi Chen, Dave Kauchak

News

Please check here regularly for general announcements/thoughts/etc. You are responsible for any information posted here.

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 might 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. We've placed an order for the book at Huntley bookstore so you should be able to find it there.

Syllabus

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.

The readings are to be done for that day's lecture. The book problems are to be done after that day's lecture (i.e. you should be ready to discuss them in the following lecture).

Week Date In class Readings for class Book problems Assignments due
1 (Wed) 9/2 introduction
java basics, graphics
event handling
1.9.3
(Fri) 9/4 instance variables, methods, parameters
lab 1
Ch 1, 2 1.6.2, 2.7.2
(Fri) 9/4 lab 1 - no clicking
2 (Mon) 9/7 parameters, variables
numbers, constants
Ch 2, 3 2.7.7, 3.11.2, 3.11.5 lab 1 due 11PM
(Wed) 9/9 conditionals, booleans
lab 2
lab 2 handout
Ch 3, 4
4.2.2
(Fri) 9/11 more conditionals
colors, random numbers
Ch 4 4.8.8
(Fri) 9/11 lab 2 - laundry design for part 1 of lab 2
3 (Mon) 9/14 primitive types
classes, constructors
Ch 5 5.7.2, 5.7.6 lab 2 due 11PM
(Wed) 9/16 classes, constructors
methods, parameters, variables
lab 3
lab 3 handout
Ch 6
6.8.4, 6.9.1
(Fri) 9/18 methods, parameters, variables Ch 6, 8 8.6.2, 8.6.3
(Fri) 9/18 lab 3 - magnets design for part 1 of lab 3
4 (Mon) 9/21 control structures, active objects Ch 7 7.2.1, 7.10.1 lab 3 due 11PM
(Wed) 9/23 active objects lab 4
Ch 9.1-9.2
9.10.1, 9.10.2
(Fri) 9/25 more active objects
more complex loops
Ch 9.3-9.5 9.10.3, 9.11.1
(Fri) 9/25 lab 4 - boxball design for lab 4
5 (Mon) 9/28 even more active objects
interfaces
Ch 9.6-9.9 9.11.2 lab 4 due 11PM
(Wed) 9/30 interfaces, design
lab 5
lab 5 handout
Ch 10, 21
10.5.2, 21.9.2
(Fri) 10/2 debugging tips,
keyboard input, GUIs
Ch 10 10.5.1
(Fri) 10/2 lab 5 - frogger design for lab 5
6 (Mon) 10/5 GUI components Ch 11.1-11.3 11.9.1
(Wed) 10/7 test program 1
GUI components
Ch 11.1-11.3 11.9.2 , 21.9.3 lab 5 due 11PM
(Fri) 10/9 review, inheritance
lab 6
Ch 11.7-11.8
(Fri) 10/9 lab 6 - GUIs
7 (Mon) 10/12 midterm
(Wed) 10/14 inheritance Ch 17.1-17.5 17.5.1, 17.8.5 lab 6 due 11PM
(Fri) 10/16 more inheritance
recursion
Ch 17.6-17.7 17.8.6
(Fri) 10/16 no lab, Test Program 1 due 4PM
8 (Mon) 10/19
*** No class - fall recess ***
(Wed) 10/21 recursion Ch 12.1 12.1.10
(Fri) 10/23 lab 7
more recursion
Ch 12.1 12.1.12
(Fri) 10/23 lab 7 - recursion
9 (Mon) 10/26 even more recursion
lab 8
Ch 12.2 lab 7 due 11PM
(Wed) 10/28 for loops, arrays Ch 13 13.6.2, 13.6.5
(Fri) 10/30 more arrays Ch 14.1-14.5 14.2.2
(Fri) 10/30 lab 8 - recursion
10 (Mon) 11/2 still more arrays Ch 14.6-14.8 14.9.3 lab 8 due 11PM
(Wed) 11/4 multidimensional arrays
lab 9
lab 9 handout
Ch 14.6-14.8, 15.1-15.2
15.4.1, 15.4.2
(Fri) 11/6 multidimensional arrays
(Fri) 11/6 lab 9 - simon design for lab 9
11 (Mon) 11/9 more multidimensional arrays Ch 15.2-15.3 15.4.4 lab 9 due 11PM
(Wed) 11/11 strings
lab 10
lab 10 handout
Ch 15.3, 16.1
16.5.2
(Fri) 11/13 more strings Ch 16.1-16.2 16.5.3, 16.5.4
(Fri) 11/13 lab 10 - nibbles
12 (Mon) 11/16 even more strings
characters
test program 2
Ch 16.3-16.4 16.5.6 lab 10 due 11PM on 11/17
(Wed) 11/18 exceptions
lab 11
lab 11 handout
Ch 18
18.5.1
(Fri) 11/20 more exceptions, streams Ch 19.1-19.3 18.9.1
(Fri) 11/20 lab 11 - strings
13 (Mon) 11/23 file I/O Ch 19.1-19.3 19.7.2 lab 11 due 11PM
(Wed) 11/25
*** No class ***
Ch 19.4 19.7.3 design for TP2 due 10AM
(Fri) 11/27
*** No class/lab - Thanksgiving ***
14 (Mon) 11/30 streams Ch 19.5-19.6
(Wed) 12/2 networks
lab 12
lab 12 handout
Ch 20
 
(Fri) 12/4 asymptotics, algorithms, sorting
sample final
Ch 20 20.3.4, 20.3.8
(Fri) 12/4 lab 12 - pictionary
15 (Mon) 12/7 sorting, turing machines, misc lab 12 due 11PM
(Wed) 12/9 review session Test Program 2 due 4PM

The final exam will be on Friday 12/18 from 9AM-noon.

Programming Assignments

  • Lab 1 - NoClicking <html> <pdf>
  • Lab 2 - Laundry <html> <pdf>
  • Lab 3 - Magnet <html> <pdf>
  • Lab 4 - Boxball <html> <pdf>
  • Lab 5 - Frogger <html> <pdf>
  • Test Program 1 <html> <pdf>
  • Lab 6 - Textplay <html> <pdf>
  • Lab 7 - Recursion <html> <pdf>
  • Lab 8 - Scribbler <html> <pdf>
  • Lab 9 - Simon <html> <pdf>
  • Lab 10 - Nibbles <html> <pdf>
  • Lab 11 - Strings <pdf>
  • Test Program 2 <html> <pdf>
  • Lab 12 - Pictionary <html> <pdf>
  • Links

    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