This paper is an introduction to virtual knot theory and an exposition of new ideas and constructions, including the parity bracket polynomial, the arrow polynomial, the parity arrow polynomial and categorifications of the arrow polynomial.This paper is relatively self-contained, with Sec. 2 reviewing the definitions of virtual knots and links, Sec. 3 reviewing the surface interpretations of virtuals and Sec. 4 reviewing the definitions and properties of flat virtuals.Section 5 proves that long flat virtual knots (virtual strings in Turaev's terminology) embed into long virtual knots. This result is a very strong tool for discriminating long virtual knots from one another. We give examples and computations using this technique by applying invariants of virtual knots to corresponding ascending diagram images of flat virtual knots. A long virtual can be closed just as a long knot can be closed. It is a remarkable property of long virtuals (both flat and not flat) that there are non-trivial long examples whose closures are trivial. Thus one would like to understand the kernel of the closure mapping from long virtuals to virtuals both in the flat and non-flat categories. It is hoped that the invariants discussed in this paper will further this question. We also introduce in Sec. 5 the notion of the parity (odd or even) of a crossing in a virtual knot and recall the odd writhe of a virtual knot -an invariant that is a kind of self-linking number for virtual knots.Section 6 is a review of the bracket polynomial and the Jones polynomial for virtual knots and links. We recall the virtualization construction that produces infinitely many non-trivial virtual knots with unit Jones polynomial. These examples are of interest since there are no known examples of classical non-trivial knots with unit Jones polynomial. One may conjecture that all non-trivial examples produced by virtualization are non-classical. It may be that the virtualization of some non-trivial classical knot is isotopic to a classical knot, but we have no evidence that this can happen. The arrow polynomial invariant developed in this paper may help in deciding this question of non-classicality.Section 7 introduces the Parity Bracket, a modification of the bracket polynomial due to Vassily Manturov that takes into account the parity of crossings in a knot diagram. The Parity Bracket takes values in sums of certain reduced graphs with polynomial coefficients. We show the power of this invariant by given an example of a virtual knot with unit Jones polynomial that is not obtained from a classical knot by the virtualization construction of the previous section. This is the first time such an example has been pinpointed and we do not know any method to detect such examples at this time other than the Parity Bracket of Manturov.In Sec. 8 we give the definition of the arrow polynomial A[K] and a number of examples of its calculation. These examples include a verification of the nonclassicality of the simplest example of virtualization, a verification that the Kish...