This course provides an introduction to computer systems, computer organization and related concepts. Emphasis is placed on understanding the implications of computer hardware and architecture on the performance and security of written code. Students learn basic C programming and assembly language. Topics covered include basic computer organization, architecture, reverse engineering and parallel computing. In addition to theory, students gain practical real-world experience using tools for profiling and debugging. By the end of this programming-intensive course, students will understand how the fundamental principles of computer systems impact their ability to write efficient code.