This text addresses the use of Mathematica as a symbolic manipulator, a programming language and a general tool for knowledge representation. Also included is coverage of functional programming, rule-based programming, procedural programming, object-oriented programming and graphics programming.