CSCI 1300
Lecture Notes


8/26/97

What is Computer Science?
  • Algorithms and Data Structures
  • Computer Architecture
  • Artificial Intelligence and Robotics
  • Database and Information Retrieval
  • Human-Computer Interaction
  • Numerical Computation
  • Operating Systems
  • Programming Languages
  • Software Engineering


  • 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: x squared vs. 2 to the x power

    Number of elements
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., 20, ..., 30, ..., 40, ..., 50

    x squared
    1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ..., 400, ..., 900, ..., 1600, ..., 2500

    2 to the x power
    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.


    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.


    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