CSSE 514 Programming Methods

 

Instructor:            Rob Jasper

Office:                  ENGR 413A,Engineering Building

Office Hours:        Tuesday and Thursday, before class, and by appointment

Phone:                  W: 425-455-7601 x234  SU FAX: 296-2179
Web:                     http://fac-staff.seattleu.edu/jasperr
Email:                             jasperr@seattleu.edu

Class Hours:                  8:20-9:35 Tuesday and Thursday, ENGR 413A
                                   

Objectives:

To provide students with new skills for designing, programming, testing, and reasoning about programs, with a focus on creating programs correct, robust, efficient, and maintainable. I’ve made several significant changes to the format of this course from prior years. My basic objectives are to:

  1. More closely align the lectures with the text (which has been used on and off over the years).
  2. Add unit testing, debugging, inspections, and refactoring as key concepts.
  3. Make the class a little more lab-like. Programming is one of those skills those skills (like math) that can only be learned through doing.

 

Grading Criteria:  20%    Homework

                                    20%    Midterm Exam (currently in class)

                                    40%    Term Project

                                    20%    Final Exam (take home)

Text

                              Steve McConnell, Code Complete, Microsoft Press, 1993 (BookPool, Amazon)

 

Schedule

Lectures, homework, and tests are in both PowerPoint (ppt), Microsoft Word, or Adobe Acrobat (pdf) format. Appropriate views for most platforms are available at the Microsoft and Adobe sites. Lectures will be posted no later than the Monday morning before each week’s lectures. Future lectures may be posted, but are subject to change without notice prior to Monday of the week of the lecture.

 

Updates

I’ll post additional slides that didn’t make it into the lectures here.

From time to time, I’ll post updates to assignments or answers to general questions in this location. You should make a habit of checking occasionally, especially if you have a question.

 

*  Wednesday, May 21, 2003 – Updated project.jar to include PerformanceTest. This runs pretty much like TokenizationTest except

that you don’t need to pass in a text file containing tests. As an example:

 

             java -cp project.jar;yourfile.jar edu.seattleu.se514.testHarnesses.PeformanceTest

                        edu.seattleu.se514.yourImplementation.YourTokenizerName

     

 

Session

Date

Due

To Be Discussed

Assignment

1

4/1

 

Introduction,

Object-oriented Design

Text 7

 

2

4/3

 

Intro to Detailed Design,

Program Design Languages (PDL)

HW1, Text 4

3

4/8

 

Design from State-Transition Models

Project

4

4/10

HW 1

Project Discussion (Java, Interfaces, Issues, Approaches)

Gref94

5

4/15

 

Proofs of Correctness*

proof review

6,6-S

4/17

 

More Proofs of Correctness*

HW2

7

4/22

Project

teams

Data Structured Programming

Mills86, Ben84c

 

4/24

 

Data Structured Programming, extended

 

8

4/29

HW2

Semantics Preserving Transforms (SPT)—Data Structures

HW3, Text 28-29

9

5/1

 

SPT—Loops / Logic

 Draft Test cases

10

5/6

 

SPT—Procedures

Midterm

11

5/8

HW3 

System Dependent Efficiencies

Final Test cases

12

5/13

 

High Quality Routines, Modularity

Text 5,6

13

5/15

 

Programming Style

Text–9,18-19

14

5/20

Midterm

Unit Testing

Text 25

15

5/22

Proj-1

Unit Testing (part 2)

Basis Paths

16,16-S

5/27

 

Walkthroughs and Inspections**

Text 24, Final Exam

17

5/29

Proj-2

Debugging

Text 26

18

6/3

 

Programming Paradigms: Prolog

 

19

6/5

Final Exam

Term Project Inspections

 Piecora’s Pizza

 

 

* Guest lecturer

** Special Guest lecturer

Homework & Grading:

Homework is very important to this class, and students are expected to do their own work with only very general help or advice from other students. Homework assignments are due at the start of class on the day specified. You will normally have at least one weekend to work on an assignment. Unless arrangements have been made before the scheduled due date, late homework will not be accepted. If you are on a business trip, homework may be sent by fax or mail.

 

Seattle University has a grading scale of A, A-, B+, B, B-, C+, C, C-, D+, D, D-, E and does not allow the awarding of A+ grades. As a department we are very reluctant to give a grade of in­complete unless there is a major personal problem. Graduate students must maintain an average of B (not B-) or better. Courses graded lower than C- must be repeated. Check the Graduate School Bulletin for details.

 

Additional References:

  1. Bentley, Writing Efficient Programs, Prentice-Hall, 1982 (out of print) see web summaries (e.g., http://www.geocities.com/ResearchTriangle/Facility/4118/misc/wep.html).
  2. David Gries, The Science of Programming, Springer-Verlag, 1981
  3. Donald Knuth, Fundamental Algorithms, Sorting and Searching, Semi-numerical Algorithms

4.      Harold Abelson, Gerald Sussman, Structure and Interpretation of Computer Programs, MIT Press, 1996.

5.      Jon Bentely, Programming Pearls

Links

Java

http://java.sun.com/j2se/1.4/

Java Development Environments

http://www.intellij.com/idea/
http://jdee.sunsite.dk/

Design by Contract

http://www.eiffel.com/doc/manuals/technology/contract/page.html

http://classes.seattleu.edu/computer_science/csse514/jasper/http:/www.reliable-systems.com/tools/iContract/iContract.htm

Program Optimization (Java)

http://java.oreilly.com/news/jptsummary_1100.html

Unit Testing (Java JUnit)

http://www.junit.org/
http://www.clarkware.com/articles/JUnitPrimer.html