BU CAS CS 113
Introduction to Computer Science II with Intensive C
Fall 1997


Lecture Topics

(since midterm)


Last Modified: Fri Dec 12 10:53:51 1997

See also the course syllabus for a general outline of what will be covered each week.

Oct 28:	ADTs
		4 parts: design, analysis, implementation, use
		good analysis can avoid unnecessary implementation
	toy example: edit buffer
		operations: new/free, forward/back, beginning/end, 
			insert/delete, display
		comparison of implementations using arrays and stacks

Oct 30: Edit Buffer
		in array and stack implementations, moving data causes
			inefficient algorithms
		linked lists allow insertion and deletion without moving
			all the data
		implementation using singly linked lists (and analysis)
		time/space trade-offs
			linked lists are faster but use more space
		ways to improve: doubly linked lists, lists of lines/blocks

Nov 4: 	Edit Buffer
		insert/delete
	Symbol Tables
		operations: new/free, insert, lookup
		interface (preliminary)
		implementation choices
		hashing
		missing operation (do next time)

Nov 6:	Implementation of Hash Table

Nov 11:	Trees

Nov 13: Functions as data
	Traversing an ADT

Nov 18:	BST implementation
		data arrangement
		New
		Find

Nov 20:	BST implementation
		Map
		Insert
		Delete
		Free
	BST efficiency: Balancing
		AVL trees
		2-3 trees

Nov 25:	Makefiles

Dec 1:	Two-three trees
		data types
		insertion algorithm
	Intro to graphs
		terminology
		shortest path problem (Kevin Bacon game)
	
Dec 3:	Graphs
		interface
		implementation choices
			adjacency list
			adjacency matrix
		depth-first/breadth first search
		Dijkstra's algorithm

Dec 8:	Bit Operations: & | ^ ~ << >>
		accessing individual bits of an integer-type variable
		space-efficient adjacency matrices
	client | interface | implementation
	Abstract Data Types
		definition and advantages
	Data encapsulation (data hiding)
	Priority Queues: definition
	

Dec 10:	Priority Queues: implementation
		ordered linked list
		ordered array
		heap (see also 728 and following in book)
			definition: shape and order
			insert & delete operatioins
			efficiency 
			using arrays to implement trees
	Links vs. Arrays:  when to use which
		trees = attempt to allow faster access to linked list
			(by allowing a version of binary search)
	Phases of programming: Design, Analysis, Implementation, (Testing), Use