SIMS 255: Foundations of Software Design
Fall 2003

Lectures, Labs & Assignments

This schedule is subject to change. Readings are meant to be read in advance of the lecture for which they are shown. Assignments will be posted as the semester progresses.

Go directly to the current week.

NOTE: Lectures and Homework solutions have been reomoved.  -- Brian S. Hayes, 9/8/2004


Week 1:

Tues Aug 26
Lecture: CourseOverview; Intro to Binary and Boolean
Readings: Brookshear, Ch. 1.1-1.6

Thurs Aug 28
Lecture: How Computers Work
Readings: Brookshear 2.4, Online demo of logic gates and circuits


Week 2:

Tues Sept 2
Lecture: How Computers Work: Logic Gates cont, the CPU; Instructions versus Data
Readings: Brookshear 2.1-2.5, Online demo of a CPU
Assignment 1: How Computers Work, due Thursday Sept. 11.

Thurs Sept 4
Lecture: How Computers Work: CPU cont, the Memory Hierarchy, Programs vs. Processes
Readings: Brookshear 3.1-3.5, 8.1-8.2, Online demo of Operating System functions

Lab: Using SIMS File Services (Kevin Heard)


Week 3:

Tues Sept 9
Lecture: How Computers Work: Operating Systems and Memory Management
Readings: Online demo of Operating System functions

Thurs Sept 11
Lecture: The Java VM; Programming Paradigms
Readings: Brookshear 5.1-5.5
Assignment 2: Memory Management and Program Structure, due Thursday Sept 18


Lab: Build a Home Page


Week 4:

Tues Sept 16
Lecture: Analysis and Design
Readings: Lafore Ch. 1

Thurs Sept 18
Lecture: Analysis and Design
Readings: Brookshear 4.3, 6.1 - 6.6, Handout on designing with CRC Cards, Class diagrams portion of this UML tutorial

Lab: Using the Eclipse IDE (and other java tools)


Week 5:

Tues Sept 23
Lecture: Algorithms and Pseudocode
Readings: Brookshear 0.1-0.5, 4.1-4.2, 4.4; Lafore Ch. 2
Assignment 3: Tic-Tac-Toe, due Thursday Oct 2

Thurs Sept 25
Lecture: Math Review, Intro to Analysis of Algorithms
Readings:

  • Math Review: Logarithms and Exponential Functions (Be sure to follow the links to the topic Logarithms and any others that you might find helpful.),
  • Lafore Chapter 2 (Review),
  • Complexity and Big-O Notation,
  • Thinking In Java, Appendix A: Passing & Returning Objects
    Definitely read the sections "Passing references around," "Aliasing", "Making local copies," "Pass by value," and "Summary." Familiarize yourself with the section on Cloning (e.g. read the first couple of pages and skim the rest of the section titles). You might also find the information on "Read-only classes" and "The String and StringBuffer classes" to be interesting and useful as a reference.)

Lab: Javadoc, Intro to Unix, Part I (Kevin Heard)


Week 6:

Tues Sept 30
Lecture:
Analysis of Algorithms, cont.
Readings: Brookshear 4.6, Handout from Goodrich & Tamassia

Thurs Oct 2
Lecture: Stacks
Readings: Lafore Ch.4: p 115-132

Lab: Version Control (and turning in your assignments electronically) [CVS with Eclipse Tutorial]


Week 7:

Tues Oct 7
Lecture:
Queues, Vectors
Readings: Lafore Ch 4: p 132-173
Code: VectorQueue and test driver (note slightly different than what is in the lecture slides)
Assignment 4: Analysis of Algorithms, due Oct 16

Thurs Oct 9
Lecture: Intro to Recursion
Readings: Lafore Ch.6

Lab: Intro to Unix, Part II (Kevin Heard) [This is optional, but only if you already know Unix.]


Week 8:

Tues Oct 14
Lecture:
Trees
Readings: Lafore, Chapter 8

Thurs Oct 16
Lecture: Tic-Tac-Toe Design and Miscelaneous Java Notes
Readings: Thinking In Java

  • Chapter 1: Introduction to Objects - pp 31 - 59
  • The static keyword - pg 92+
  • Coding style - pg 103
  • Java access specifiers - pg 224+
  • Choosing composition vs. inheritance - p 258+

Assignment 5: Generating HTML using Trees and Recursion, due Oct 28

Lab: Debugging with Eclipse


Week 9:

Tues Oct 21
Lecture:
Heaps, and Misc. Java Notes
Readings: Lafore Ch 12

Thurs Oct 23
Lecture: Hash Tables
Readings: Lafore Ch. 11
Lab:


Week 10:

Tues Oct 28
Lecture:
JavaServer Pages
Readings: JavaServer Pages, by Hans Bergsten, Chapter 1, 2, 3
   The electronic version of the book can be viewed at Safari Tech Books Online (see link at UC Berkeley Library, Electronic Reference Books).
Assignment 6-I: Codebreaker - Part I , due Nov 13

Thurs Oct 30
Lecture: JavaServer Pages
Readings: JavaServer Pages, by Hans Bergsten, chapters 5, 6, 8, 17 and Review chapters 10, 19.


Lab: Codebreaker help


Week 11:

Tues Nov 4
Lecture:
JavaServer Pages (Part III), Regular Expressions, and Substring Matching
Readings:

  • Learning to Use Regular Expressions by Example , by Dario F. Gomes.
    Note that this is a multipage tutorial that provides a good introduction to regular expressions.
  • Regex Tutorial, by Jan Goyvaerts
    This tutorial is more detailed and you should read it after the above Gomes tutorial (above).
  • Tools and Languages
    Peruse this page, and read the pages about using regular expressions in Java (or your favorite programming language).
  • You should review the Java API references for java.lang.String, java.util.regex, java.util.regex.Pattern, and java.util.regex.Matcher.

Thurs Nov 6
Lecture: Graphs – Guest lecturer: Nick Galbreath, friendster
Readings:

  • Lafore Chapter 13, Graphs
  • Review Heaps

Lab: JSP


Week 12:

Tues Nov 11
NO LECTURE — Veterns Day Holiday
Readings: Catch up on all the reading!

Thurs Nov 13
Lecture:
Graphs – Guest lecturer: Nick Galbreath, friendster
Readings: Lafore Chapter 14, Weighted Graphs
Assignment 7: Graphs, due Nov 25


Lab: Regular Expressions


Week 13:

Tues Nov 18
Lecture:
Sorting
Readings:

  • Lafore Ch 3, Simple Sorting (pg 77+) [understand Bubble Sort, peruse Selection Sort and Insertion Sort, read Comparing the Simple Sorts]
  • Lafore Ch 7, Advanced Sorting (pg 315+) [understand Quicksort, peruse or skip others]
  • Lafore Ch 12, Heapsort (pp 601-602)
  • Lafore Ch 15, Sorting (pp 724-725)
  • Eckel (Thinking in Java), Sorting an array (pp 476-480)
  • Eckel, Sorting and searching Lists (pp 560-561), and Utilities (pp 561-562)

Thurs Nov 20
Lecture: Databases, SQL, JDBC
Code: SQL for Schedule Database Demo
Readings:

  • Brookshear Ch 9, Database Structures
  • MySQL Basics, by The Analysis and Solutions Company.
    This is a very quick MySQL tutorial. Start with the section on Creating.
  • JDBC Basics, by Maydene Fisher.
    This tutorial is also a quick read. JDBC is the Java Database Connectivity standard and APIs for accessing databases using Java code.
    Sections:
    • Setting Up a Database
    • Establshing a Connection
    • Setting Up Tables
    • Retrieving Values from Result Sets
    • Updating Tables
  • Optional reading: MySQL Cookbook by Paul DuBois
    For further discussion of MySQL, you may be interested in the MySQL Cookbook. It is available on-line via the Safari Tech Books Online (see link at UC Berkeley Library, Electronic Reference Books).

Lab: Programming to a Database


Week 14:

Tues Nov 25
Lecture:
XML and DOM
Code Samples: 255_DOM_Lecture_Examples.zip
Readings:

  • XML Basics — Read one of the following:
    • Learning XML, 2nd Edition, By Erik T. Ray, Chapters 1, 2, 3, 4.1.
      It is available on-line via the Safari Tech Books Online (see link at UC Berkeley Library,Electronic Reference Books). This book provides a good introduction to XML and the reads fairly quickly. The opening sentences of chapter 1.1 are certainly amusing: "XML is a lot like the ubiquitous plastic containers of Tupperware. There is really no better way to keep your food fresh than with those colorful, airtight little boxes..."
    • A Technical Introduction to XML, by Norman Walsh
      You can skip the more technical parts of this article.
  • Understanding DOM, IBM developerWorks, by Nicholas Chase
    IBM developerWorks supports a number of tutorials. This one does require you to register — if you don't want to do this, you can probably find a reasonable alternative by searching the web.

Assignment 8: Sims Bank, Part A (design) due Thurs. Dec 4 start of lecture, Part B (code) due Monday Dec. 15 at noon. No Late Turn-ins Accepted!

Thurs Nov 20
Thanksgiving Holiday — NO LECTURE


Week 15:

Tues Dec 2
Lecture:
Assignment Discussion and Review
Readings: NONE.

Thurs Dec 4
Lecture: Recap and Sims Bank Design
Readings: NONE.
Resources: Sims Bank Javadoc (note that this is the documentation for an example design/implementation and the documentation is not complete).

Lab: Help for Sims Bank


Finals "Week" (Dec 10-18):

Mon Dec 15
Assignment 8 due at 12 noon.