Computer Science 101

Data Abstraction

Gregory M. Kapfhammer

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in the Textbook

Software Development

Design

Implementation

Testing

Debugging


flickr photo shared by Michael Matti under a Creative Commons ( BY-NC ) license

Software Design

Designing Classes

Identify the basic operations and the groupings

Organize similar classes into packages

Any questions about using class design?

Using Pseudocode

Express the basic operations of our programs

Avoid the implementation complexities of Java

Any questions about using pseudocode?

Software Implementation

Code Comments

Give an overview of classes with JavaDoc comments

Explain all methods with JavaDoc comments

Enhance precision, enhance intuition, avoid duplication

Why should we adopt these commenting standards?

Learn more about Checkstyle for Java!

Software Testing

Establish a confidence in program correctness

Identify defects into our programs

How do you know that you picked the right inputs?

Not all test cases are equivalent!

Software Debugging

Fixing Defects

Determine where a defect is lurking in a program

Develop and introduce a fix for the defect

How do you know that the "fix" did not break another part of the program?

Disciplined software development avoids ❤-ache!

Strategies for managing system complexity

Draw a diagram

Take your time

Use data abstraction!

Any questions about software development?

You will gain experience throughout the semester