Computer Science 2 Overview

Page last updated 1/15/07

Overview

Software Engineering

Data Structures

Collections

Abstract Data Types

Algorithm Analysis


Software Engineering

The discipline devoted to the design, production, and maintenance of computer programs that are developed on time and within cost estimates, using tools that help to manage the size and complexity of the resulting software products.

SE includes supporting activities such as

The Software Life Cycle


The Waterfall Life-Cycle model


The Spiral Life-Cycle Model


The Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

That is, while there is value in the items on the right, we value the items on the left more.

 

 


Goals of Quality Software

Regardless of approach!

 

 


Development Toolboxes

Hardware—the computers and their peripheral devices

Software—operating systems, editors, compilers, interpreters, debugging systems, test-data generators, and so on

Ideaware

Design aids

Software Concepts

 

 

 

 

 


Recommended Program Specification

Detailed Program Specification

Stepwise RefinementCRC card

A problem is approached in stages. Similar steps are followed during each stage, with the only difference being the level of detail involved. Some variations:

 


 

A Quick Review of Object-Oriented Programming

Three inter-related constructs: classes, objects, and inheritance

Objects represent

Objects can represent “real-world” entities such as bank accounts as well as abstract entities such as a particular organization of objects.

Objects well-designed are self-contained and therefore easy to implement, modify, and test for correctness.

Object-oriented classes, when designed properly, are very easy to reuse.

 

 


Data Structures

Data structures is the common name for this level of course.

Most languages support primitive data structures:

Modern languages such as Java provide modules or packages in support of more complex data structures

CS 240 is not about how to train you to necessarily reinvent these structures when you need them, but for you to know how to use the right structures at the right time.

 


Abstract Data Types

Abstraction: A model of a complex system that includes only the details essential to the perspective of the viewer of the system.

Abstractions are a theme in this course and in programming:

ADTs give the ability to define new types along with the operations appropriate for that type. 

Collect operations in one place with the definitions (encapsulation). 

The abstract definitions are independent of implementation (information hiding).

Encapsulation

The collection of all definitions related to a data type in one location and restriction of the use (access) of the type to the operations defined at the location.

Information Hiding

Parna's principles: Provide the user with all the information needed to use the module and no more. Provide the implementor with all the information needed to implement the module and no more.

  • The practice of hiding the details of a module with the goal of controlling access to the details from the rest of the system.
  • A programmer can concentrate on one module at a time.
  • Each module should have a single purpose or identity.

ADTs with encapsulation and Information Hiding are implemented in Java classes.

 

 

 

 


Collections

"Collections" is another term for data structures. Collections are sets of data, multiple values, that are organized and related in some manner.

Typically the data types (integers, floats, strings) or objects within the collection are the same.

Linear collections

 

 

Hierarchical collections

 

 

 

 

 

Graphs

 

 

 

 

 

Unordered collections

 

 

 

 

 

 


Operations on Collections

What are costs for each of these operations?  That is the analysis part of the course.

 

 


Algorithm Analysis

There are multiple solutions to a given problem.  

Time efficiency 

 

 

 

 

 

 

 

 

 

Algorithm Types