This dissertation details six pieces of research spanning architectures and algorithms with an eye toward enabling practical quantum computation. It is separated into two main sections: architectural design and optimizations and near-term quantum algorithm design. The first of these describes work related to the architectural design of quantum computing systems, including optimizations related to single-flux quantum ASICs for error correction decoding, optimized compilation for magic-state distillation as a fundamental subroutine of surface code topological quantum error correction, and a network architecture for optimized distribution of magic-states within a surface code protected quantum machine. The second section is the design and development of quantum algorithms for near-term, practical-scale quantum computers. It includes design and optimization of representative quantum algorithmic subroutines co-designed with near-term quantum device connectivities, as well as a set of novel procedures and quantum algorithms for preparing states corresponding to smooth, differentiable, real-valued functions and analytical proofs of entanglement properties of these families of functions. Applications of these techniques are discussed as well.