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
-----