Introduction to Computer Systems Course ID 15213 Description This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. NOTE FOR GRADUATE STUDENTS: This course is not open to graduate students beginning Spring 2015. Graduate students must register for 15-513 instead. Key Topics Machine-level code and its generation by optimizing compilers, Performance evaluation and optimization, Computer arithmetic, Memory organization and management, Networking technology and protocols, Supporting concurrent computation Learning Resources Course Textbook, AutoLab, Piazza, Course Website Course Relevance Foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Course Goals Programmer's view of how computer systems execute programs, store information, and communicate. How to deal with issues of performance, portability and robustness. Improve effectiveness as software developers in improving the quality and performance of programs. Pre-required Knowledge Facility in C, including basic data structures, from 15-122 Assessment Structure Assignments (7 Labs) - 50%, Midterm - 20 %, Final - 30% Course Link https://www.cs.cmu.edu/~213/