ICS 10 • David G. Kay • UC Irvine
Overview of Course Topics
Below is a rough list of the topics
we covered this term.
-
Fundamental concepts
-
Hardware, software, data, algorithm, program
-
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
- Efficiency (of human time and of computational resources); algorithms for the same task can have vastly different efficiency
- Programming in Snap
- Using the Snap environment
- Categories of Snap blocks
- Defining new blocks (procedures/functions/subroutines) with parameters
- Defining and manipulating lists
-
Forms of information
-
Models and abstraction: hiding unnecessary detail
-
Representing information in computers
-
Bits and bytes; ASCII; numbers as ASCII, binary
numbers, BCD; size and scale (KB, MB, GB, TB, ...)
-
Digitizing pictures (and other real-world information)
-
Sampling, quantization, color; resolution and
bit depth
-
Compression and redundancy
-
Lossless vs. lossy; syntactic vs. semantic
-
Delta encoding, run-length encoding
- Information visualization (Edward Tufte)
- Accurate representation; multidimensional visualizations; focus on data rather than decoration or infrastructure
- Potential consequences of good or bad visualization (London cholera, space shuttle)
- Typography
- Why natural language understanding is a hard problem to solve
-
The Internet
-
Services: World-Wide Web, Email, file transfer/ftp,
telnet (remote login), chat/IM, VOIP
-
Client machines, server machines, network backbone;
what contributes to delays
-
Decentralized design; packet switching vs.
circuit switching
-
The Web
-
Web browsers, concept of HTML, URLs, domain
names
- Operation of search engines like Google
-
Computer characteristics and organization (including
the Deus X)
-
Memory, registers, instruction format
-
Sequential execution of instructions (instruction cycle: fetch,
decode, execute)
-
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)
-
Operating systems: managing computational
resources
-
process control (multitasking/timesharing),
security/authentication (what you know/have/are), memory management (virtual
memory), file management
- Backup schemes
-
User interface: GUI vs. command-line
-
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)
- Parallelism (concurrency): Splitting tasks among multiple processors, the inherent sequentiality of some tasks (e.g., elephant gestation) that prevents parallelism
-
Other areas of computer science
- Human-computer interaction, user interfaces
(ease of learning vs. ease of use, recognition vs. recall)
- Pattern recognition and less-than-perfect matching; heuristics (e.g., weighted scoring of non-matching pixels in optical character recognition)
- Social and legal impact of computing
- Intellectual property law overview
- Fair information practices (privacy)
- Effect of new technologies on employment
- Maxims
- People time is more expensive than computer
time
- Electronic components are faster, cheaper,
smaller, and more reliable than mechanical ones