As computation becomes increasingly important, computational thinking and skills become a critical part of education in many fields. Computer Science with Applications 1 & 2 teaches these skills using applications from a wide variety of fields as the basis for lectures and programming assignments. Lectures cover topics in (1) programming, such as recursion, abstract data types, and processing data, (2) topics in computer science, such as machine architecture, distributed systems (client/server applications), and theory of computation, and (3) topics numerical computation, such as approximating functions and their derivatives and integrals, solving systems of linear equations, and simple Monte Carlo techniques. Robust computing techniques are emphasized throughout the courses. Students will learn practical skills, such as programming in Java, C, and Python or Matlab, along with the basic principles of computer science and numerical computation.