This core computer science course is about how algorithms and data structures work from mathematical principles to implementation in C++. Topics include trees and graphs, hashing, greedy algorithms, dynamic programming, abstract data types & object-oriented design, regular expressions, context-free grammars, and theoretical (mathematical) models of computation.
http://courses.washington.edu/css343/bernstein/current/syllabus.html
Please submit assignments to the course dropbox (zip or compressed tarball, please): https://catalyst.uw.edu/collectit/dropbox/morrisb9/28568
To be announced.
Lecture notes and supplemental materials will be posted here as instructor time permits.
Lecture #1
|
Lecture #6
|
Lecture #11
|
Lecture #16
|
Lecture #2
|
Lecture #7
|
Lecture #12
|
Lecture #17
|
Lecture #3
|
Lecture #8
|
Lecture #13
|
Lecture #18
|
Lecture #4
|
Lecture #9
Midterm Review: no notes |
Lecture #14
|
Lecture #19 |
Lecture #5
|
Lecture #10
Midterm: no notes |
Lecture #15
|
Lecture #20
Final review: no notes |
Often, the best way to understand some feature of a programming language is to write a small program that exercises the feature:
voyeur.cc
:
using a cast to access and modify private const member
ptr_math.cc
:
pointer arithmetic
inverted_array.cc
:
pointer-array equivalence
sizes.cc
:
sizes of different things
args.cc
:
command-line argument processing
destructor.cc
:
constructor & destructors with inheritance
func_ptr.cc
:
function pointer example (call with command-line arguments)
-DUSE_TYPEDEFS
inheritance.cc
:
calling virtual/nonvirtual functions via base pointers
constructor.cc
:
constructor/initializer syntax & semantics
single_dispatch.cc
:
single dispatch
A->func(B)
(function chosen based on dynamic type of A but static type of B)
dispatch.cc
:
simulating double dispatch
(A, B)->func()
(function chosen based on dynamic type of A and B)
See also: Professor Zander's CSS343 homepage.
TODO
TODO