Structure of the PC (CPU, ALU, registers, memory types, addresses and addressing, binary and hexadecimal numerical systems). Problem analysis with flowcharts/pseudocode (quadratic equation, number sorting, gambling - Monte Carlo method, root finding). Source code, compiling and linking, executable programs, variables and types of variables, string and logical expressions (operands). Program flow control (conditional branching, loops). Exercises on program flow control. Functions (call with copy/reference, default variables, iterative call), scope of variables (local/global), input/output files. Exercises on functions. Data collections (tables, structures), pointers and dynamic memory management. Exercises on data collections. Physics applications: projectile motion, elastic collision in two dimensions, photon transport (propagation).