The document describes a technique called CodeCity which maps source code to a 3D city visualization. Classes are represented as buildings with attributes mapped to building dimensions. Packages are represented as districts with color representing nesting level. The number of methods and attributes are mapped to building height using different mapping techniques like identity, linear, boxplot-based, and threshold-based mapping. The technique is demonstrated on visualizing the design of the ArgoUML and JDK systems, with class-level disharmony highlighted. Potential uses in understanding software design, detecting design flaws and visualizing re-engineering are discussed.