This chapter introduces key concepts about computer systems and programming. It discusses hardware and software components, and how they work together to input, process, and output data. The chapter outlines the program development cycle of understanding a problem, planning logic, coding, testing, and maintaining a program. It also describes using pseudocode, flowcharts and loops to represent program logic, and sentinel values to end repetitive processes. Different programming environments and interfaces are introduced. Finally, the evolution of programming models from procedural to object-oriented paradigms is summarized.