CSCI 1300
Lecture Notes


8/26/97

Note: Explain, explain, explain. What is Computer Science? Algorithms and Data Structures 1. Characterizes classes of problems and solutions according to - Time characteristics vs. data size - Space characteristics vs. data size Example: x2 vs. 2x 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., 20, ..., 30, ..., 40, ..., 50 Polynomial: 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ..., 400, ..., 900, ..., 1600, ..., 2500 Exponential: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ..., 1048576, ..., 1073741824, ..., 1099511627776, ..., 1.125899906843e+15 At 100MIPS, this would take A fraction of a second vs. 11258999 seconds = 187649 minutes = 3127 hours = 130 days 2. Discover efficient solutions to general classes of problems. Example: x2 vs. 2x Example: Sorting algorithms, O(nlogn) Questions? Computer Architecture 1. How to build fast, efficient computer components - Processors - Memory - I/O - Interfaces - Storage systems Example: RISC vs. CISC Example: Separate processor for I/O 2. How to combine the components to produce fast, efficient computer systems - General-purpose - Special-purpose Example: Space tradeoffs in chip design. Is it better to have more memory on the CPU chip or a math module? Example: Computers for controlling car engines. Different operating and processing requirements. Artificial Intelligence and Robotics 1. Create computers that can accomplish tasks or behaviour that are considered alive or "human" Example: Chess-playing computers (once considered totally human) Example: Robots (Mars Rover, etc.) walks like a human, collects samples, but in a hostile environment Example: Robot insects at MIT 2. Learn about how humans do things by figuring out how to make machines do them Example: Laplacian-constant applied to baseball trajectories. Theory, people do laplacians automatically. Database and Information Retrieval Efficient storage, manipulation, and retrieval of large amounts of information. Includes aspects of other areas combined to achieve effective solutions to this large, important set of applications. Example: Banks and ATMs. Example: Transaction processing. Human-Computer Interaction The design of machines so as to facilitate the natural exchange of information between humans and computers. Example: wires Example: switches Example: keyboard and text display Example: graphic displays and computer mice Example: virtual reality interface Numerical Computation The science of solving large numerical equations with computers. Example: geologists – oil companies Example: space-flight calculations, shuttle guidance, MIR docking procedures. Operating Systems 1. Facilitate efficient sharing of computer resource among different people/processes. The first systems were single-user at any one time. Very inefficient to share. 2. Provide easy-to-use abstractions for low-level system facilities. Example: DOS, UNIX, MacOS, etc. Example: Files Example: I/O primitives Example: memory management Example: devices Example: scheduling Example: security Example: networking Example: ... Programming Languages Provide high-level abstractions for low-level functions. Provide virtual machines that are architecture independent. Further manage system resources for the user. Examples: Wires Example: Bits and bytes machine code – switches Example: Assembly code Examples: Cobol, Fortran, Basic, Pascal, LISP, C, C++, Java, and many more. Software Engineering Development of software systems. Specifically, the efficient specification, design, production, and verification of large software systems. Example: 2 people developing a few thousand lines of code vs. hundreds of people developing millions of lines of code. Example: Software for military applications – must be secure and reliable. Example: Software for Banks -----