Description

The primary goal of this course is to expose you to the underlying aspects of computer systems that have an impact on application programming. The major topics of this course include linking, exceptions, memory allocation and management, networking, and concurrency. These topics are important in all computer systems and will prepare you for future courses in compilers, operating systems, computer architecture, and networking.

This course also introduces and uses the C programming language. C is generally considered a low-level programming language, because all of its features can be implemented in a fairly straightforward manner on typical modern processors. Moreover, C exposes the details of memory allocation and management to the programmer. Therefore, it is much easier to gain an in-depth understanding of computer systems, as they relate to programming, by writing applications in C. These lessons can prove invaluable when writing complicated applications in higher-level languages, and when writing tools or building systems that will be used by other programmers. More pragmatically, despite the benefits of higher-level languages, C is still one of the most widely used languages, so a familiarity with it is important.

General Information


Announcements

Announcements are not public for this course.

Staff Office Hours

Dave Johnson
--
--
R. Matt Barnett
--
--
Scott Rixner
--
--
Alan L. Cox
--
--
Jimmy Newman
--
--
William Cannon Lewis II
--
--
Nicholas Alvarez
--
--
Mike Fagan
--
--
David Cai
--
--
Zachary Lee
--
--
Shrinithi Narayanan
--
--
Alexandra Du
--
--
Yufeng Zhou
--
--
Anthony Cho
--
--
Arthur Chen
--
--
Sofia Torres-Small
--
--
Anthony Cho
--
--