Chapter 1 Introduction 1.1 Outline the history of hardware in computing 1.2 Hardware Concepts and History Overview 1.2.1 Computer Structure Concepts 1.2.2 Development of Computers 1.3 Software and the Information Age 1.3.1 First Generation: Switches Using Punch Cards 1.3.2 Second Generation: Assembly Language, Interpreters, Compilers 1.3.3 Third Generation Programming Languages (3GL) 1.3.4 Fourth Generation (4GL) and Artificial Intelligence 1.3.5 New Methodologies 1.3.6 Future Computing 1.4 Operating Systems (OS) 1.4.1 Windowing Systems 1.4.2 X-Windows 1.5 History of the Intemet 1.6 What is Software Engineering? 1.7 Review Questions Chapter 2 Discrete Mathematica 2.1 Logic 2.1.1 Propositional Logic 2.1.2 Predicate Logic 2.2 Set Theory 2.2.1 Set Theory Basics 2.2.2 Axiomatic Set Theory and Paradoxes 2.2.3 Fuzzy Set Theory 2.3 Probability Theory 2.3.1 Kolmogorov's Probability Calculus 2.3.2 Classical Probability 2.4 Graph Theory 2.4.1 Basic Terminology 2.4.2 Graph Coloring 2.4.3 Star Graphs 2.4.4 Simple Circuits and Simple Paths 2,4.5 Euler Circuits, Hamilton Circuits, Directed Graphs 2.4.6 Trees 2,5 Boolean Algebra. 2.6 Review Questions Chapter 3 Operating Systems (OS) 3.1 Operating System Functions 3.1.1 Computer start up 3.1.2 Loading applications 3.1.3 Memory and file management 3.1.4 Command Interpretation 3,2 File Systems 3.2.1 Hierarchical File Systems 3.3 Modem Operating Systems 3.3.1 UNIX 3.3.2 WINDOWS Desktop Operating Systems 3.3.3 Windows Server Operating Systems 3,3.4 Linux 3,4 Review Questions Chapter 4 0rgani zati on of Programming Languages and Programmi ng Concepts 4.1 Organization of Programming Languages 4,1.1 Language Design Factors 4.1.2 Programming Language Abstractions 4.1.3 Computer Language Types 4.1.4 Programming Language Definition 4.2 Data Structures and Algorithms 4.2.1 Data Structures 4.2.2 Algorithms 4.3 Object Oriented Principles 4.3.1 Objects 4.3.2 Class 4.3.3 Inheritance 4.3.4 Indirection 4.3.5 Encapsulation 4.3.6 Messages 4.4 Review Questions Chapter 5 Programming Languages 5.1 Legacy Languages 5.1.1 FORTRAN 5.1.2 PASCAL 5.1.3 ADA 5.1.4 COBOL 5.2 Modem Network Languages 5.2.1 HTML - Hyper Text Markup Language 5.2.2 XML 5.2.3 XHTML 5.2.4 Microsoft .NET 5.2.5 The C Programming Language 5.2.6 C++. 5.2.7 C# or C Sharp 5.2.7 ASP .NET 5.2.8 Web Services 5.2.9 Java 5.3 Review Questions Chapter 6 Software Engineering Requirements Analysis 6.1 Requirements Analysis Phases 6.1.1 Elicitation 6.1.2 Requirements Grouping 6.1.3 Requirements Evaluation 6.1.4 Software Requirements Specification (SRS) 6.2 Analysis and Design Concepts 6.2.1 Requirements Modeling 6.2.2 Analysis Modeling 6.2.3 Data Modeling 6.2.4 Information Flow and Data Flow Diagrams (DFDs) 6.2.5 Behavior Modeling 6.3 Unified Modeling Language 6.3.1 Modeling Mechanisms 6.3.2 Metamodel 6.3.3 Architectural Views 6.3.4 Notation and Diagrams 6.4 Use Cases 6.5 Review Questions Chapter 7 Software Development Concepts and Design Methodologies 7.1 Software Design Fundamentals 7.1.l Stepwise Refinemen 7.1.2 Abstraction. 7.1.3 Software Architecture 7.1.4 Data Structure 7.1.5 Program Structure and Modularity 7.1.6 Procedure 7.1.7 Information Hiding 7.1.8 Design Representation 7.2 Traditional Design Methodology System Development Life-Cycle Model 7.3 Modem Design Methodologies 7.3.1 Object-Oriented Technology 7.3.2 Prototyping 7.3.3 Operational Modeling 7.3.4 Software Design and CASE Technology 7.3.5 Rapid Application Development (RAD) 7.3.6 Cleanroom Software Engineering 7.4 Large Scale Software Design Issues 7.5 Review Questions Chapter 8 Software Architecture and System Design 8.1 System Architecture 8.2 Software Architecture 8.2.1 Pipes and Filters 8.2.2 Data Abstraction and Object-Oriented Organization 8.2.3 Implicit Invocation 8.2.4 Layered Systems 8.2.5 Centralized 8.2.6 Distributed 8.2.7 Main Program/Subroutine 8.2.8 Domain architectures 8.2.9 Mixed Architectures 8.3 Developing an Architecture 8.4 Component Level Design. 8.4.1 Component Based Development Methods 8.4.2 Modeling a Component-Based Application 8.5 User Interface Design 8.5.l Graphical User Interface (GUI) 8.5.2 Interface Design Factors 8.6 Review Questions Chapter 9 Database Systems 9.1 Database History and Concepts 9.1.1 The Relational Model 9.1.2 Structured Query Language (SQL) 9.1.3 ACID Properties 9.2 Database Design 9.2.1 Key Definitions and Concepts 9.2.2 Database Normalization 9.3 Commercial Database Systems 9.3.1 Open Source RDBMS 9.3.2 Desktop Databases 9.3.3 Choosing a Database 9.3.4 Database Features 9.3.5 Database Standards 9.4 Data Warehousing 9.4.1 Dimensional Design 9.4.2 Data Warehouse Design Considerations 9.4.3 Data Warehousing Product Considerations 9.5 Data Mining 9.5.1 Ad Hoc Query Processing 9.5.2 Online Analytical Processing (CLAP) 9.6 Review Questions Chapter 10 Computer Networking 10.1 Networking Basics 10.1.1 Network Topology 10.1.2 Interface Timing 10.1.3 Line Configuration 10.1.4 Data Interfaces 10.1.5 Network Application Paradigms 10.1.6 Network Protocols 10.1.7 Network Operating System (NOS) 10.1.8 Network Management Systems 10.1.9 Network Devices 10.2 Local Area Network (LAN) 10.2.1 Ethernet 10.3 Wide Area Networks (WAN) 10.3.1 Packet Switching 10.3.2 Packet Technology Development 10.4 The World Wide Web 10.4.1 Firewall. 10.4.2 File Transfer Protocol 10.4.3 Domain Name Service (DINS) 10.5 Home Based Broadband Network Services 10.5.1 Digital Subscriber Line Technology 10.5.2 Cable Modems 10.6 Wireless Networking. 10.6.1 Wireless Application Protocol 10.6.2 Bluetooth 10.6.3 Wi-Fi 10.7 Review Questions Chapter 11 Project and Process Management 11.1 Project Management 11.1.1 Developing a Project Plan. 11.1.2 Manage Expectations 11.2 Project Management Tips 11.3 Software Processes 11.4 Quality 11.5 Capability Maturity Model (CMM) for Software 11.6 Team Software Development 11.6.1 The Team Software Process (TSP) 11.6.2 Personal Software Process (PSP) ] 1.7 Implementing SW-CMM l 1.8 Software Change and Configuration Management 11.8.1 Change Management and Configuration Management 11.8.2 Change Management Support Tools 11 ~9 New Project Management Methods and Software Development 11.9.1 Steve McConnell's Surviving Projects 11.9.2 Jim Highsmith: Adaptive Complex Systems 11.10 Summary 11.11 Review Questions Chapter 12 Software Testing and 0ual ity Assurance 12.1 Test Methods 12.1.1 White Box Testing 12.1.2 Black Box Testing 12.1.3 Performance and Reliability Testing 12.2 Testing Levels 12.2.1 Unit Testing 12.2.2 Integration Testing 12.2.3 Alpha or System Test 12.2.4 Acceptance or Beta Test 12.2.5 Regression Testing 12.2.6 Installation Testing 12.3 Test Completion Criteria and Metrics 12.3.1 Test Metrics 12.3.2 Quality Measurement 12.3.3 Risk Measurement 12.3.4 Mean Time to Failure/Repair 12.3.5 Process Measurement 12.4 Software Testing Teams 12.5 Common Testing Problems 12.5.1 Understanding the Purpose of Testing 12.5.2 Poor Test Plans 12.5.3 Wrong Test Personnel 12.6 Testing Techniques 12.6.1 Inspection 12.6.2 Common Tests 12.6.3 Interface Testing t2.7 Quality Measurement and Standards 12.7.1 ISO 9000 12.7.2 The ISO 9000-3 Standard 12.7.3 ISO Certification Process 12.7.4 Implementing ISO 9000-3 12.8 Review Questions Bibl i ography Acronym D i ct i onary Index.