Course Schedule

Note that the schedule below is subject to minor changes.


Course Introduction, Computational Thinking Jun 29
Unit-1: History of Computing Jun 30
(from Babbage to the World Wide Web)
UNIT 4: Computation using Iteration Jul 8-9
(using arrays, linear search, selection sort, order of complexity)
UNIT 5: Recursive Thinking Jul 10, Jul 13
(binary search, merge sort, fractals, and other recursive algorithms)
UNIT 6: Data Organization Jul 14, Jul 16
(arrays, linked lists, stacks, queues, hash tables, trees and graphs)
UNIT 7: Data Representation Jul 17, Jul 20
(integers, text, images, sound and compression)
UNIT 8: Computer Organization Jul 21-22
(CPU layers as abstractions, instructions as data and data as instructions, fetch-decode-execute cycle)
UNIT 9: Randomness in Computation Jul 23-24
(generating and using random numbers)
UNIT 10: Simulations, Visualizing data and Human Factors Jul 27-28
(Simulations, visualization and understanding human factors)
UNIT 12: Concurrency Aug 3
UNIT 13: Artificial Intelligence Aug 3-4
UNIT 14: Computability: The Limits of Computation Aug 5-6
(intractability, map coloring and the travelling salesperson, P vs. NP, the halting problem)