ICS 10 • David G. Kay • UC Irvine

Overview of Course Topics

Below is a rough list of the topics we covered this term.

  1. Fundamental concepts
    1. Hardware, software, data, algorithm, program
    2. Source code (human-prepared, e.g., Snap or HTML) vs. interpreted code (e.g., rendered web page) or object (executable, machine language) code; the idea of open-source software distribution vs. cloud distribution vs. conventional distribution of object code only
    3. Efficiency (of human time and of computational resources); algorithms for the same task can have vastly different efficiency

  2. Programming in Snap
    1. Using the Snap environment
    2. Categories of Snap blocks
    3. Defining new blocks (procedures/functions/subroutines) with parameters
    4. Defining and manipulating lists

  3. Forms of information
    1. Models and abstraction: hiding unnecessary detail
    2. Representing information in computers
      1. Bits and bytes; ASCII; numbers as ASCII, binary numbers, BCD; size and scale (KB, MB, GB, TB, ...)
      2. Digitizing pictures (and other real-world information)
        1. Sampling, quantization, color; resolution and bit depth
    3. Compression and redundancy
      1. Lossless vs. lossy; syntactic vs. semantic
      2. Delta encoding, run-length encoding
    4. Information visualization (Edward Tufte)
      1. Accurate representation; multidimensional visualizations; focus on data rather than decoration or infrastructure
      2. Potential consequences of good or bad visualization (London cholera, space shuttle)
    5. Typography
    6. Why natural language understanding is a hard problem to solve

  4. The Internet
    1. Services: World-Wide Web, Email, file transfer/ftp, telnet (remote login), chat/IM, VOIP
    2. Client machines, server machines, network backbone; what contributes to delays
    3. Decentralized design; packet switching vs. circuit switching
    4. The Web
      1. Web browsers, concept of HTML, URLs, domain names
      2. Operation of search engines like Google

  5. Computer characteristics and organization (including the Deus X)
    1. Memory, registers, instruction format
    2. Sequential execution of instructions (instruction cycle: fetch, decode, execute)
    3. Storage hierarchy (registers, RAM, secondary storage, e.g., disks); relative capacity vs. access time of various media; direct or random access storage (e.g., RAM, disks or CDs) vs. sequential access (e.g., tapes)
    4. Operating systems: managing computational resources
      1. process control (multitasking/timesharing), security/authentication (what you know/have/are), memory management (virtual memory), file management
      2. Backup schemes
      3. User interface: GUI vs. command-line
    5. Machine-level vs. high-level programming languages: Going from a problem description to an executable program, how much is done automatically? Procedural (how) vs. non-procedural (what)
    6. Parallelism (concurrency): Splitting tasks among multiple processors, the inherent sequentiality of some tasks (e.g., elephant gestation) that prevents parallelism

  6. Other areas of computer science
    1. Human-computer interaction, user interfaces (ease of learning vs. ease of use, recognition vs. recall)
    2. Pattern recognition and less-than-perfect matching; heuristics (e.g., weighted scoring of non-matching pixels in optical character recognition)

  7. Social and legal impact of computing
    1. Intellectual property law overview
    2. Fair information practices (privacy)
    3. Effect of new technologies on employment

  8. Maxims
    1. People time is more expensive than computer time
    2. Electronic components are faster, cheaper, smaller, and more reliable than mechanical ones