- •Ssd2: Introduction to Computer Systems contents
- •Prerequisites
- •Course Textbook
- •Hardware/Software Requirements
- •The purpose of ssd2 is for students to
- •Students successfully completing ssd2 will be able to
- •1.1 Overview of Computer Systems
- •1.1.1 Components of a Computer System
- •Hardware System
- •Software System—Operating System Software and Application Software
- •Network System
- •1.2 Evolution of Computer Systems
- •1.2.1 Brief History
- •1200S—Manual Calculating Devices
- •1600S—Mechanical Calculators
- •1800S—Punched Cards
- •1940S—Vacuum Tubes
- •1950S—Transistors
- •1960S—Integrated Circuits
- •1970S to Present—Microprocessor
- •Pace of Advancement
- •1.2.2 Applications of Computer Systems
- •In Education Multimedia-Facilitated Learning
- •Simulation-Based Education
- •Intelligent Machine-Based Training
- •Interactive Learning
- •In Business Supply Chain Management
- •Project Management
- •Customer Relationship Management
- •Sales and Marketing Using Electronic Commerce
- •Manufacturing Research
- •In Entertainment Movies
- •Video Games
- •1.3 Data Representation in a Computer System
- •1.3.1 Bits and Bytes
- •Data Representation Using Binary Digits
- •Increasing Need for Bytes
- •1.3.2 Number Systems
- •Decimal
- •Hexadecimal
- •Learning Exercise
- •2.1 Processor and Memory
- •2.1.1 Processor Basics
- •Processor
- •Instruction Execution with the cpu
- •Performance: Factors and Measures
- •Types of Processors
- •2.1.2 Types of Memory
- •Cmos Memory
- •Summary
- •2.1.3 Lab: Benchmarking (Optional)
- •2.2 Peripherals
- •2.2.1 Connecting Peripherals
- •Expansion Slots and Cards
- •Usb and FireWire
- •Comparing Different Ports
- •2.2.2 Buses
- •2.2.3 Input/Output Devices
- •Input Devices
- •Cameras
- •Digital Camcorders
- •Scanners
- •Output Devices: Monitors and Projectors
- •Crt Monitors
- •Lcd Monitors
- •Projectors
- •Output Devices: Printers
- •Ink Printers
- •Dye-Sublimation Printers
- •Laser Printers
- •Comparing Printers
- •2.3 Storage Devices
- •2.3.1 Disk Controller Interfaces
- •Ide Interface
- •Eide Master/Slave
- •2.3.2 Mass Storage
- •How Mass Storage Devices Differ from ram
- •Disk Drive Reliability
- •Optical Media: cDs versus dvDs
- •Magnetic Media
- •Optical versus Magnetic
- •Solid State
- •Comparing Storages
- •2.4 Putting Together the Hardware Components
- •2.4.1 How Components Work Together
- •2.4.2 Lab: Researching a Computer System
- •2.4.3 Lab: Online Configuration
- •2.5 Improving Computer Performance
- •2.5.1 Moore's Law
- •2.5.2 Bottlenecks
- •Bottlenecks—Slowing a Process
- •Typical Bottlenecks
- •Eliminating Bottlenecks
- •2.5.3 Throughput and Latency
- •Unit 3. Operating System Software
- •3.1 Structure
- •3.1.1 Layers of Software
- •Layers and Process Management
- •Encapsulation and Abstraction
- •Layers of Software
- •3.1.2 The bios: Life at the Bottom
- •The Role of the bios
- •Changing bios Settings
- •3.1.3 Process Control
- •3.1.4 Lab: The Task Manager
- •3.2 Device Management and Configuration
- •3.2.1 Interrupt Handling
- •Interrupts
- •Interrupt Priority and Nested Interrupts
- •Traps and Faults
- •3.2.2 Hardware Attributes
- •Installing Drivers
- •Changing a Driver's Configuration
- •3.2.3 Configuration
- •3.2.4 Lab: Device Management
- •3.3 Resource Sharing
- •3.3.1 Virtual Memory
- •Managing Memory
- •Relocation
- •Virtual Memory
- •3.3.2 File and Printer Sharing
- •Printers
- •3.4 File Systems
- •3.4.1 File Organization
- •Folders
- •Shortcuts
- •File Names and Types
- •3.4.2 File Allocation Table and nt File System
- •Clusters and File Allocation Tables
- •Nt File System
- •Unit 4. Application Software
- •4.1 Software Basics
- •4.2 Using Software Systems
- •4.2.1 Lab: dos Commands
- •4.2.2 Lab: Macros
- •4.2.3 Lab: Embedding Application Objects
- •4.3 Batch Script Files
- •4.3.1 Advanced Command-Line Functions
- •Dos Command Syntax
- •Review of File System Commands
- •Wildcard Characters
- •Redirection and Piping
- •4.3.2 Batch File Commands
- •Batch Files
- •Commands
- •4.3.3 Lab: Creating a Batch File
- •Example of a Batch File
- •Example of a Batch File with Arguments
- •4.4 Databases
- •4.4.1 Lab: Searching the Library of Congress
- •4.5 Software Engineering
- •4.5.1 Issues in Large-Scale Software Development
- •The Software Development Process
- •Define or Redefine the Problem
- •Plan a Solution to the Problem
- •Code the Solution
- •Evaluate and Test Everything
- •4.5.2 Open Source Model
- •Free Software
- •4.5.3 Tools for Software Creation and Management
- •Editors
- •Compilers
- •Debuggers
- •Integrated Development Environments (idEs)
- •Unit 5. Network Systems
- •5.1 Internet Basics
- •5.1.1 Mime Types
- •5.1.2 Internet Languages
- •JavaScript
- •5.2 Local and Wide Area Networks
- •5.3 Communication Strategies
- •5.3.1 Client-Server Framework
- •5.3.2 Peer-to-Peer Connectivity
- •5.4 Data Transfer Technologies
- •5.5 Internet Architecture
- •5.5.1 Routers and tcp/ip
- •Internet Protocol
- •Routers
- •Transmission Control Protocol
- •5.5.2 Domain Name Service
- •Domain Name Service
- •5.5.3 Connectivity
- •Conventional Analog Phone Lines
- •Isdn: Integrated Services Digital Network
- •Cable Modem
- •XDsl: Digital Subscriber Line
- •Dedicated High Speed Lines
- •5.5.4 Internet Service Providers
- •Unit 6. Computer Security
- •6.1 Security Threats
- •6.1.1 Intruders: Who, Why, and How?
- •6.1.2 Identity Theft and Privacy Violation
- •Password Cracking
- •Packet sniffing
- •Social Engineering/Fraud
- •Spoofing
- •Port Scanning
- •6.1.3 Malicious Software
- •Trojan Horse
- •Prevention
- •Detection
- •Counter Measures
- •6.1.4 Denial of Service
- •Network Connectivity
- •Network Bandwidth
- •Other Resource Consumption Attacks
- •Distributed Denial of Service Attack
- •Prevention
- •6.2 Security Technologies
- •6.2.1 Encryption
- •Substitution Cipher
- •Transmitting the Key
- •Private Key Encryption Scheme
- •Public Key Encryption Scheme
- •Hybrid Encryption Schemes
- •6.2.2 Applications of Encryption
- •Hard Drives
- •Dvd Movies
- •Cellular Phones
- •6.2.3 Authentication
- •Strong Passwords
- •Smart Cards
- •Biometrics
- •Digital Signatures
- •Digital Certificates and Certificate Authorities
- •Ssl Protocol
- •6.3 Prevention, Detection, and Recovery
- •6.3.1 Firewall
- •Application Gateway
- •Packet Filter
- •Application Gateway versus Packet Filter
- •Intruder Attacks Prevented by Firewall
- •Setting up a Firewall
- •6.3.2 Intrusion Detection Tools
- •Intrusion Detection Systems
- •Network Monitoring Tools
- •Anti-Virus Software
- •6.3.3 Data Recovery
- •6.3.4 Summary of Security Tips
Define or Redefine the Problem
Recognition of need: This might be generally recognized; it might come from marketing or management; it might originate in the technical groups; or it might come as a contract.
Specification of requirements: This is a process of polling stakeholders as to what needs they have for a proposed software system. It is a good idea to make several iterations and to test assumptions with focus groups representing the actual users.
Plan a Solution to the Problem
Enumeration of alternatives: Once requirements for a problem are in hand, enumerate known solutions. There usually will be more than one, each with implications for cooperating with existing systems, for ease of implementation (creation cost) and for maintenance (ongoing costs).
System design, including tests: This is the actual technical design of a system once an alternative has been selected. It is critical to design tests of the system. It must be possible to recognize a working system unambiguously, and objectively.
Code the Solution
Implementation of solution: Programmers code a system in the chosen language or languages. Decisions have been locked down at the design phase (for example, interfaces and performance) but details of how a piece of the system does what it must do are left to the programmer.
Programmer testing of solution: First, the programmer examines software to see that it appears correct. At the next level, software teams meet to read and comment on each other's work in code review sessions. Whole system testing is conducted by project leaders.
System acceptance: Another group of individuals operates the software for a period of time in simulated or real settings. System acceptance can be very formal or surprisingly informal.
Evaluate and Test Everything
Test in context: Working systems will soon exhibit bugs that slipped past earlier filters. Also, design decisions will reveal their flaws at this stage. Really good systems often spark more demands for changes than bad ones: once people actually get the feel of using good software they get ideas about additional features they would like to have. Finally, the context in which a system operates may change, requiring revisions to the software. For example, a system is working perfectly for a small business, but introduction of the Internet requires the system to be integrated into the Web.
Redesign: Now the redesign begins looping back to the first step of the process.
4.5.2 Open Source Model
Unless you work for Microsoft, you will not be allowed to read the source code for the Windows operating system (although Microsoft plans on offering an open source version of Windows). But, you can read the source code for the Linux operating system, make copies of it, even give it away for free. Linux is an example of an open source software project.
The open source approach is a convenient way for a large number of loosely organized programmers to contribute to the development of a piece of software. Usually they are unpaid volunteers who donate their time. They enjoy programming and have a need for that particular piece of software, so it is in their interest to help improve it by adding new features or fixing bugs. One person, or a small group, acts as the project coordinator and maintains the official version of the source. Other people suggest bug fixes, contribute new features, or improve the design of existing modules. The coordinators examine and test these contributions and decide how to integrate them into the current source.
Open source advocates argue that when code is available for anyone to read, "All bugs are shallow," meaning they will be tracked down quickly by somebody. In addition, some users place a greater degree of trust in open-source systems because it is harder to hide malicious features, such as built-in security holes or mechanisms that violate privacy. When you run a piece of software whose source code is not available for inspection, you must hope that the authors have not snuck in any undesirable behaviors. Sometimes they have.
Most software today is still produced using a closed-source model. Companies must invest substantial funds to create a successful software product. Giving the code away would rob them of the chance to recoup those costs through sales. The code may also contain what a company regards as proprietary technology, or trade secrets, such as tricks for improving the performance of a database system, that it does not want to reveal to competitors.
It is still possible to make money with open source software, by selling support services, printed manuals, or proprietary add-ons that enhance an open source product. Several companies now market Linux distributions this way. Another famous open source software system is the Firefox (formely Netscape) browser. Originally developed as a closed source product, Netscape decided to turn the browser into an open source system and give it away for free. The company makes money by selling server software and other services.