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

Required Background Knowledge
Facility in C, including basic data structures, from 15-122

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.

Learning Resources
Course Textbook, AutoLab, Piazza, Course Website

Assessment Structure
Assignments (7 Labs) - 50%, Midterm - 20 %, Final - 30%

Course Link
https://www.cs.cmu.edu/~213/