COS 109 Summary: 2003

This is an approximate summary of the topics that we have covered in class. It doesn't include material in problem sets or labs. You are responsible for important ideas and facts in those as well, though not for detailed trivia like how to write syntactically correct HTML or VB.

Mon Dec 8 16:46:43 EST 2003

HARDWARE

prox cards; system architecture

logical/functional organization of a computer
physical structure
major pieces: cpu, memory, disks, peripheral devices, etc.
acronyms and numbers: MHz, GHz, MB, RAM, ROM, Kbps
prefixes: pico, nano, micro, milli, ..., kilo, mega, giga, tera, peta, ...

CPU operation
	arithmetic, memory access, decision making, control
different processors
	intel vs mac vs palm pilot vs ...
instructions; toy machine
	branching & conditional instructions
fetch / decode / execute cycle
	instructions in same memory as data
computer architecture
caching in CPU
	and elsewhere
von Neumann model of computer
Turing equivalence of computers
integrated circuit fabrication
Moore's law
exponential growth

bits, bytes, representation of information
analog versus digital
binary numbers, arithmetic
	hexadecimal notation
meaning of bits depends on context
	numbers, characters, addresses, instructions
	ascii and unicode
powers of two and powers of ten
color encoding and representation

other kinds of computers

SOFTWARE

algorithms: defined operations, defined steps, terminates
linear-time algorithms
	searching, selecting, summarizing
binary search; divide and conquer; log n algorithms
sorting
	quadratic (n^2), quicksort (n log n)
complexity of algorithms (log n, n, n log n, n^2, n^3, ..., 2^n)
	what these complexity formulas mean
	towers of hanoi, traveling salesman problem, hard problems, P vs NP

evolution of programming languages
	machine and assembly language
	high level languages
	compilers, compilation
	executable files; interpretation and simulation
visual basic
	language, components, development environment
	variables and expressions
	assignment statements, print, msgbox, etc.
	declarations and types
	If-Then-Else-End If
	Do While ... Loop
	For ... Next loop
	subroutines and functions
	how it works, but NOT detailed syntax

operating systems
	history
	what they do: manage memory, run programs, file system
	applications vs operating systems

file systems
	directories / folders and files
	logical structure vs physical implementation
	file system implementation
		blocks, allocation table, free list
	finding files
	file open, save, delete, etc.
	what's remembered where for how long
	network file systems
drivers
bootstrapping
operating system interface, API
Microsoft case
Unix / Linux
programming in the real world
	bugs

COMMUNICATIONS

history
ethernet, broadcast media
Internet structure
names, addresses, routing, protocols
domain names, DNS
	caching
IP addresses
	dotted decimal notation
IP protocol
	unreliable datagrams
packets
TCP protocol
	reliable streams
higher-level protocols: SSH, SMTP, HTTP
	layering, encapsulation
bandwidth
	communications technologies
Web
	url, http, html, browsers
	forms and cgi programs
risks
	cookies, spam
	active content, Javascript, Java, ActiveX
	attacks on clients, servers, networks
		denial of service
	viruses
	defenses
	intellectual property, DMCA
cryptography
	history
	secret key crypto: DES, AES
	public key crypto, digital signatures, key exchange
compression
	lossless, lossy
	JPEG, MPEG, MP3
error detection & correction
	checksums, parity
Napster and successors
search engines
cell phones; other radio devices